首选节点间调度副本

问题描述 投票:1回答:1

我正在使用GKE运行一个由3个节点组成的Kubernetes集群。我要求Kubernetes提供3个backend Pod的副本。 3个Pod在节点之间分配不佳,无法提供高可用性服务,它们通常都位于2个节点上。我希望Kubernetes尽可能分派Pod,以便在每个节点上都有Pod,但是如果它们backend Pod比节点多,那么部署/扩展将不会失败。

[preferredDuringSchedulingIgnoredDuringExecution可以做到吗?

kubernetes google-cloud-platform google-kubernetes-engine high-availability
1个回答
1
投票

尝试像这样设置首选的抗亲和力规则:

affinity:
    podAntiAffinity:
      preferredDuringSchedulingIgnoredDuringExecution:
        - labelSelector:
            matchExpressions:
              - key: "app"
                operator: In
                values: 
                - "my_app_name"
          topologyKey: "kubernetes.io/hostname"

这将尝试将Pod调度到尚未在其上运行相同标签的Pod的节点上。之后,它对所有人都是免费的(因此,在确保每个节点上至少有1个正在运行的情况下,它不会平均分配它们)。这意味着在扩展之后,您可能最终会得到一个节点,该节点有5个容器,其他节点每个具有1个容器。

© www.soinside.com 2019 - 2024. All rights reserved.