轮询 Pod 的就绪状态
Polling for Pod's ready state
我正在使用 java 的 fabric8 库在 Kubernetes 集群上部署应用程序。
我想轮询 pods 的状态以了解他们何时准备就绪。我开始自己写,直到我读到有关守望者的信息。
我实现了这样的东西
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?
由于 watches 是使用 websockets 实现的,因此连接随时可能出于任何原因或无原因关闭。
What is the use case for a watcher?
我想它有两个方面:不支付 TCP/IP + SSL 连接设置成本,使其更快,让您的系统是事件驱动的而不是简单的轮询,这将使每个参与者都使用更少的资源(服务器和您的客户端)。
但是,是的,你的问题的答案是,如果你还没有达到你期望的 Pod 状态,你需要有重试逻辑来重新建立观察者。
我正在使用 java 的 fabric8 库在 Kubernetes 集群上部署应用程序。
我想轮询 pods 的状态以了解他们何时准备就绪。我开始自己写,直到我读到有关守望者的信息。
我实现了这样的东西
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?
由于 watches 是使用 websockets 实现的,因此连接随时可能出于任何原因或无原因关闭。
What is the use case for a watcher?
我想它有两个方面:不支付 TCP/IP + SSL 连接设置成本,使其更快,让您的系统是事件驱动的而不是简单的轮询,这将使每个参与者都使用更少的资源(服务器和您的客户端)。
但是,是的,你的问题的答案是,如果你还没有达到你期望的 Pod 状态,你需要有重试逻辑来重新建立观察者。