指定Kubernetes DaemonSet

时间:2018-05-20 12:50:57

标签: kubernetes scheduler daemonset

我的Consul在我的集群中运行,每个节点都运行一个consul-agent作为DaemonSet。我还有其他与Consul交互的DaemonSets,因此需要运行一个consul-agent才能与Consul服务器进行通信。

我的问题是,如果我的DaemonSet在consul-agent之前启动,那么应用程序将会出错,因为它无法连接到Consul并随后重新启动。

我也注意到其他DaemonSets存在同样的问题,例如Weave,因为它需要kube-proxy和kube-dns。如果首先启动Weave,它将不断重启,直到kube服务准备就绪。

我知道我可以在我的应用程序中添加重试逻辑,但我想知道是否可以指定DaemonSets的安排顺序?

2 个答案:

答案 0 :(得分:1)

Kubernetes本身并没有提供一种方法来实现pods / deploymentments / services之间的特定依赖关系(例如,“仅当服务B可用时才启动pod A”或“pod B之后启动pod A”)。

当前的方法(基于我在研究这个时发现的)似乎是重试逻辑或初始容器。引用docs

  

它们在任何应用容器启动之前运行完成,而应用容器并行运行,因此Init容器提供了一种简单的方法来阻止或延迟应用容器的启动,直到满足一组前置条件。

这意味着您可以向应用程序添加重试逻辑(我建议这可能会在不同的情况下帮助您,例如短暂的服务中断)我们可以使用通过Kubernetes服务轮询健康端点的init容器直到得到令人满意的回应为止。

答案 1 :(得分:1)

重试逻辑优于启动依赖性排序,因为它处理初始启动情况和从启动后中断恢复