在k8s上平均分配容器到每个Node中

it2023-05-18  91

场景说明:每个Node上只运行一个某应用的容器。假设有8台服务器,当某个应用伸缩到8个容器的时候,这些容器要平均地分布到8台服务器中,每台服务器上都有一个容器,不能出现某服务器上有多个,某服务器上一个都没有的情况。 k8s默认的容器调度策略是满足不了的,虽然它会尽量往负载低的服务器上调度,但难免会出现一台服务器上有重复的容器。此时可通过nodeAffinity和podAntiAffinity配合使用来实现。示例如下:

spec: affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: type operator: NotIn values: - virtual-kubelet - key: k8s.aliyun.com operator: NotIn values: - 'true' podAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchExpressions: - key: app operator: In values: - tongji-app topologyKey: kubernetes.io/hostname

podAntiAffinity中的values即应用的标签名。 更多关于pod的调度可以看这里:https://kubernetes.io/zh/docs/concepts/scheduling-eviction/assign-pod-node/

最新回复(0)