我让Consul在我的集群中运行,并且每个节点都将consul-agent作为DaemonSet运行。我还有其他与Consul交互的DaemonSets,因此需要运行consul-agent才能与Consul服务器通信。
我的问题是,如果我的DaemonSet在consul-agent之前启动,应用程序将出错,因为它无法连接到Consul并随后重新启动。
我也注意到其他DaemonSets也存在同样的问题,例如Weave,因为它需要kube-proxy和kube-dns。如果Weave首先启动,它将不断重新启动,直到kube服务就绪。
我知道我可以将重试逻辑添加到我的应用程序中,但我想知道是否可以指定DaemonSets的调度顺序?
发布于 2018-05-20 23:31:49
Kubernetes本身不提供pod /部署/服务之间特定依赖关系的方法(例如,“仅当服务B可用时启动pod A”或“在pod B之后启动pod A”)。
currect方法(基于我在研究时发现的)似乎是重试逻辑或init容器。引用docs
初始化容器在任何应用程序容器启动之前运行到完成,而应用程序容器是并行运行的,因此
容器提供了一种简单的方法来阻止或延迟应用程序容器的启动,直到满足某些前提条件。
这意味着您可以向您的应用程序添加重试逻辑(我建议这样做,因为它可能会在不同的情况下对您有所帮助,例如短暂的服务中断)。您可以使用init容器,该容器通过Kubernetes服务名称轮询健康端点,直到它获得令人满意的响应。
发布于 2018-05-21 00:30:00
重试逻辑优于启动依赖排序,因为它处理初始启动情况和从启动后中断中恢复
https://stackoverflow.com/questions/50435031
复制相似问题