我正在将我的应用程序迁移到Kubernetes。我正在使用EKS。
我想将pod分配到不同的节点,以避免出现单点故障。
我了解了pod-affinity
和anti-affinity
以及required
和preferred
模式。
This answer提供了一种非常好的方法来完成此任务。
但是我的疑问是,如果我有3个节点,其中2个节点已满(在资源方面)。如果我使用requiredDuringSchedulingIgnoredDuringExecution
,则k8将启动新节点并将吊舱分配到每个节点。如果我使用preferredDuringSchedulingIgnoredDuringExecution
,它将检查首选节点,而不会找到其他节点,只会将所有pod部署在第三个节点上。在这种情况下,它将再次成为单点故障。
我该如何解决这种情况?
我能想到的一种方法是拥有一个过度配置的集群,这样总会有一些额外的节点。
第二种方式,我不确定如何做到这一点,但我认为应该有一种同时使用requiredDuringSchedulingIgnoredDuringExecution
和preferredDuringSchedulingIgnoredDuringExecution
的方式。
有人可以帮我吗?我想念什么吗?人们在这种情况下如何工作?
我是Kubernetes的新手,所以如果我错了或遗漏了一些东西,请随时纠正我。
预先感谢
注意: