賞金將在 6 天后到期。此問題的答案有資格獲得 50聲望賞金。 user1188867想引起對這個問題的更多關注。
我能夠使用帶有以下代碼的 Fabric8 api 連接到 Kubernetes 集群:
String masterUrl = "<Kube Master Url>";
Map<String, String> certFileNamesMap = getCertificates();
Config config = new ConfigBuilder().withMasterUrl(masterUrl).build();
config.setWebsocketPingInterval(30000L);
config.setConnectionTimeout(300000);
config.setRequestTimeout(300000);
if (certFileNamesMap != null) {
config.setCaCertFile(certFileNamesMap.get(CA_CERT_FILE));
config.setClientCertFile(certFileNamesMap.get(CLIENT_CERT_FILE));
config.setClientKeyFile(certFileNamesMap.get(CLIENT_KEY_FILE));
}
KubernetesClient client = new DefaultKubernetesClient(config);
我能夠設定證書并能夠連接到 https://MasterIP 但使用https://github.com/kubernetes-client/java API 我無法弄清楚設定證書的方法以及遠程主IP。無論如何用官方的kubernetes客戶端API來做到這一點?因為他們的團隊正式停止使用 fabric8 API。
我嘗試在 minikube 的容器內使用以下代碼:
ApiClient client = ClientBuilder.cluster().build();
Configuration.setDefaultApiClient(client);
System.out.println("Loading in app cluster 3");
CoreV1Api api = new CoreV1Api();
V1PodList list =
api.listPodForAllNamespaces(null,
null,
null,
null,
100,
null,
null,
null,
null,
null);
System.out.println("Listing all pods: ");
for (V1Pod item : list.getItems()) {
System.out.println(item.getMetadata().getName());
}
我得到了禁止的錯誤。
io.kubernetes.client.openapi.ApiException: Forbidden
at io.kubernetes.client.openapi.ApiClient.handleResponse(ApiClient.java:993)
at io.kubernetes.client.openapi.ApiClient.execute(ApiClient.java:905)
at io.kubernetes.client.openapi.apis.CoreV1Api.listPodForAllNamespacesWithHttpInfo(CoreV1Api.java:35956)
at io.kubernetes.client.openapi.apis.CoreV1Api.listPodForAllNamespaces(CoreV1Api.java:35848)
uj5u.com熱心網友回復:
我能夠找出方法,我們需要使用 /.kube/config 檔案并將所有證書復制到該檔案本身,然后在 kubernetes java 客戶端中有一個 api 讀取組態檔并提供對 kube 集群的訪問權限。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/466447.html
