在多个 Kubernetes 节点组上运行服务

3
我们正在AWS Spot Instances上运行我们的EKS节点组。为了确保服务在任何时间点都不会停机,我们希望在一个使用保留实例的单独节点组上运行每个服务的1个pod。是否有任何方法可以配置部署,使1个pod在保留节点组上运行,其余在Spot Instances节点组上运行?目前,我们正在使用节点选择器来匹配标签以决定服务必须运行在哪个节点组上。是否有任何方法可以在节点选择器中使用两个单独节点组(保留和Spot)的标签,并指定权重来分配负载?

你可能想要了解标签、污点和扩展。 - Ivonet
1
实际上,自从K8S 1.19版本以来,您可以使用Pod拓扑分布约束来解决问题:https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/。如果这不起作用,您可以尝试使用多个有状态集,如果还不行,您将不得不编写自定义调度程序(这并不像听起来那么难:https://kubernetes.io/blog/2020/12/21/writing-crl-scheduler/)。 - Software Engineer
2个回答

1

无法在单个部署中找到实现此操作的方法,但是使用两个独立的部署实现了相同的效果,一个部署到 Spot 节点组,另一个部署到按需节点组,但服务使用了这两个 Pod。


0

你可以使用拓扑分散约束来将部署的Pod在节点之间分散,使用任何标签作为分散的键。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接