我正在使用用于Java的fabric8库在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 回答
![?](http://img1.sycdn.imooc.com/54584cde0001d19202200220-100-100.jpg)
眼眸繁星
TA贡献1873条经验 获得超9个赞
// What causes the watcher to close?
由于手表是使用websocket实现的,因此连接随时可能由于任何原因或没有原因而关闭。
观察者的用例是什么?
我想这有两个方面:不支付TCP / IP + SSL连接设置成本,使其更快,使系统由事件驱动而不是简单的轮询,这将使每个参与者使用更少的资源(服务器和您的服务器客户)。
但是,是的,对于您的问题的答案是,如果您尚未达到预期的Pod状态,则需要具有重试逻辑来重新建立观察程序。
添加回答
举报
0/150
提交
取消