【发布时间】:2018-05-18 16:41:37
【问题描述】:
我正在使用 kubernetes-client/java api,我想以编程方式获取所有命名空间中所有 pod 的 pod 状态。我的代码基于这个example on Kubernetes java library。
这是我的代码的 sn-p:
Watch<V1Pod> watch = Watch.createWatch(
client,
api.listPodForAllNamespacesCall(
null, null, null, null, limit,
null, null, null, watchTrue,
null, 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();
String kind = item.object.getKind();
String details = podStatus.toString();
System.out.printf("NAME: %s | KIND: %s | STATUS: %s | DETAILS: %n%s%n====================%n", name, kind, status, details);
}
我的问题是: Watch 是否等同于事件处理程序?此代码向我显示了 pod 的所有状态的列表,但它会在实时发生时自动“推送”更多 pod 状态事件吗?还是只触发一次?
【问题讨论】:
-
在我的情况下,我使用的是
watch = false并且线程没有被释放。我的意思是我可以列出 pod,但 java 应用程序不退出。你知道为什么吗?
标签: java kubernetes