【发布时间】:2021-05-17 11:57:51
【问题描述】:
我想在命名空间中轮询 pod 状态,直到所有 pod 都启动,我正在使用 kubernetes-client 库来检查它。当所有 pod 都启动时,退出条件应该是什么。当所有 pod 都启动时,我需要关闭手表,但它会一直轮询直到创建手表对象时给定的超时时间
String file = "C:\\Project\\config.yaml";
String content = readFromFile(file);
InputStream kubeConfigStream = new ByteArrayInputStream(content.getBytes(StandardCharsets.UTF_8));
ApiClient client = getApiClient(kubeConfigStream);
Configuration.setDefaultApiClient(client);
// infinite timeout
OkHttpClient httpClient =
client.getHttpClient().newBuilder().readTimeout(0, TimeUnit.SECONDS).build();
client.setHttpClient(httpClient);
Configuration.setDefaultApiClient(client);
CoreV1Api api = new CoreV1Api();
String namespace = "default";
@Cleanup
Watch<V1Pod> watch = Watch.createWatch(
client,
api.listNamespacedPodCall(namespace, null, true, null,
null, null, 20, null, null, 190, Boolean.TRUE, null),
new TypeToken<Watch.Response<V1Pod>>() {
}.getType());
for (Watch.Response<V1Pod> item : watch) {
V1PodStatus podStatus = item.object.getStatus();
String name = item.object.getMetadata().getName();
String status = podStatus.getPhase();
System.out.printf("NAME:" +name+"\t status"+status);
}
【问题讨论】:
标签: java kubernetes