java - 轮询 Pod 的就绪状态

标签 java kubernetes fabric8 poller

我正在使用 Java 的 Fabric8 库在 Kubernetes 集群上部署应用程序。

我想轮询 Pod 的状态以了解它们何时准备就绪。我开始自己写,直到读到有关观察者的内容。

我实现了这样的东西

deployment =
          kubeClient.extensions().deployments().inNamespace(namespaceName).create(deployment);
      kubeClient.pods().inNamespace(namespaceName).watch(new Watcher<Pod>() {
        @Override
        public void eventReceived(io.fabric8.kubernetes.client.Watcher.Action action,
            Pod resource) {
          logger.info("Pod event {} {}", action, resource);
          logger.info("Pod status {} , Reason {} ", resource.getStatus().getPhase(),
              resource.getStatus().getReason());
        }

        @Override
        // What causes the watcher to close?
        public void onClose(KubernetesClientException cause) {
          if (cause != null) {
            // throw?
            logger.error("Pod event {} ", cause);
          }
        }

      });

我不确定我是否正确理解了 Watcher 功能。超时了吗?或者我仍然在 eventReceivedMethod() 中编写轮询器吗?观察者的用例是什么?

最佳答案

// What causes the watcher to close?

由于 watch 是使用 websocket 实现的,因此连接可能会因任何原因或无原因随时关闭。

What is the use case for a watcher?

我认为它有两个方面:不支付 TCP/IP + SSL 连接设置成本,使其更快,并且让您的系统由事件驱动而不是简单的轮询,这将使每个参与者使用更少的资源(服务器和客户端)。

但是,你的问题的答案是,如果你还没有达到你期望的 Pod 状态,你需要重试逻辑来重新建立观察者。

关于java - 轮询 Pod 的就绪状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50993681/

相关文章:

java - 按键获取GAE实体

java - 需要在读取 AFP 文件并提取内容和元数据方面占据先机

kubernetes - 将节点添加到 Kubernetes 控制平面时的证书 key

kubernetes - Prometheus Exporter 无法访问,有什么方法可以调查?

amazon-web-services - SSH 进入通过 KOPS 创建的 kubernetes 节点

java - Maven 集成测试 2 个模块

java - @RolesAllowed 等,无需 web.xml

java - java中虚引用的重要性

java - 我想在 Pod 内使用 Fabric8 kubernetes 客户端(java)。如何获取部署集群的 kubernetes 客户端?

java - Forbidden : updates to statefulset spec for fields other than 'replicas' , 'template' 和 'updateStrategy' 被禁止