优先在节点之间分发副本

Prefer dispatch replicas among nodes

我是 运行 一个 Kubernetes 集群,由 3 个节点和 GKE 组成。我向 Kubernetes 请求 backend pods 的 3 个副本。 3 pods 没有很好地在节点之间调度以提供高可用性服务,它们通常都在 2 个节点上。 我希望 Kubernetes 尽可能多地调度 pods 以便在每个节点上都有一个 pod,但如果它们比节点多 backend pods 则不会使 deployment/scale-up 失败。

是否可以用 preferredDuringSchedulingIgnoredDuringExecution 做到这一点?

尝试像这样设置一个首选的反关联规则:

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

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