首页 > 解决方案 > 了解 Kubernetes Watch (kubernetes-client/java api)

问题描述

我正在使用 kubernetes-client/java api,我想以编程方式获取所有命名空间中所有 pod 的 pod 状态。我的代码基于Kubernetes java library 上的这个示例

这是我的代码片段:

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 状态事件吗?还是只触发一次?

标签: javakubernetes

解决方案


Watch 旨在发送持续更新。如果你运行你的程序一段时间并开始/停止某些东西,你会看到新的更新即将到来。

我不确定将其称为事件处理程序是否正确。这是一个不同的模式。


推荐阅读