我正在使用GKE运行3个节点的Kubernetes集群。我问Kubernetes 3个backend
pod的副本。 3个Pod在节点之间分配不佳,无法提供高可用性服务,它们通常都位于2个节点上。
我希望Kubernetes尽可能多地调度Pod以在每个节点上具有Pod,但是如果它们的backend
Pod比节点更多,则不要使部署/扩展失败。
可以用preferredDuringSchedulingIgnoredDuringExecution
做到吗?
最佳答案
尝试设置首选的抗亲和力规则,如下所示:
affinity:
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchExpressions:
- key: "app"
operator: In
values:
- "my_app_name"
topologyKey: "kubernetes.io/hostname"
这将尝试将Pod调度到尚未在其上运行相同标签的Pod的节点上。之后,它对所有人都是免费的(因此,在确保每个节点上至少有1个正在运行的情况下,它不会平均分配它们)。这意味着在扩展后,您可能最终会得到一个节点,该节点有5个容器,其他节点每个具有1个容器。
关于kubernetes - 在节点之间首选调度副本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47025390/