代码之家  ›  专栏  ›  技术社区  ›  user_mda

轮询POD的就绪状态

  •  1
  • user_mda  · 技术社区  · 7 年前

    我使用fabric8libraryforjava在kubernetes集群上部署应用程序。

    我想调查豆荚的状态,以了解它们什么时候准备好。我开始写我自己,直到我读到观察者。

    我实施了这样的计划

    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()中编写轮询器?观察者的用例是什么?

    1 回复  |  直到 7 年前
        1
  •  0
  •   mdaniel    7 年前

    // What causes the watcher to close?

    由于手表是使用自动完成的,所以连接在任何时候都会因任何原因或原因而关闭。

    观察者的用例是什么?

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

    但是是的,对您的问题的答案是,如果您还没有达到预期的pod状态,则需要有重试逻辑来重新建立观察程序。

    推荐文章