我有一些无状态应用程序,我希望在每个节点上调度一个Pod(受节点选择器限制)。如果我在群集中有3个节点,但其中一个发生故障,则我仍然应该有2个Pod(每个节点一个)。
这正是DaemonSet所做的,但是DaemonSet对其用法有一些警告(例如,不支持节点排空,而Telepresence之类的工具则不支持它们)。因此,我想使用“部署”模拟DaemonSet的行为。
我的第一个想法是将水平pod自动缩放器与自定义指标一起使用,因此所需的副本将等于节点数。但是即使实现了这一点,它仍然不能保证每个节点都安排一个Pod(我想呢?)。
关于如何实现这一点的任何想法?
答案 0 :(得分:1)
如果我在群集中有3个节点,但其中一个出现故障,那么我仍然应该有2个Pod(每个节点一个)。
我理解这一点,因为您想为可用性设计集群。因此,最重要的是,您的副本(pod)分布在不同的节点上,以减少节点故障时的影响。
为此使用PodAntiAffinity
和topologyKey
。
部署redis集群,以便在同一主机上没有两个实例。
请参见Kubernetes documentation: Never co-located in the same node和ZooKeeper High Availability example
答案 1 :(得分:0)
您可以考虑以下组合