我在EKS集群中部署了一个K8sStatefulSet,其中有30个副本(或N个副本,其中N是3的倍数(。
EKS集群有3个节点,一个节点对应一个AZ,我想通过Kubernetes Affinity/AntiAffinity保证在不同AZ之间相等的pod分布。
us-west-2a (n nodes) -> N/3 pods
us-west-2b (m nodes) -> N/3 pods
us-west-2c (o nodes) -> N/3 pods
感谢
您可以始终使用从AWS获得的选择器和默认标签。是一个简单的吊舱规格示例
topologySpreadConstraints:
- maxSkew: 1
topologyKey: "topology.kubernetes.io/zone"
whenUnsatisfiable: DoNotSchedule
labelSelector:
matchLabels:
app: myapp
您可以根据需要包括偏斜和其他选项,如下所述:https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/
虽然这在节点亲和性方面也是可能的,但一种直接的方法是使用topologySpreadContrints,下面是k8s文档、图表和示例来查看它的实际操作。