Kubernetes pod affinity - 在不同节点上调度 pods

Kubernetes pod affinity - Scheduling pods on different nodes

我们 运行 我们的应用程序在一个 3 节点 kubernetes 集群上有 3 个 pods。当我们部署应用程序时,有时 pods 被安排到同一个 kubernetes 节点。

我们希望我们的 pods 以这样一种方式进行调度,即它可以将我们的 pods 分散到多个节点(同一个应用程序的 2 个 pods 应该是同一个节点)。事实上,根据文档(https://kubernetes.io/docs/concepts/configuration/assign-pod-node/),kubernetes 已经在这方面做得很好。但是,如果它没有找到资源,它会将资源调度到同一个节点。它如何使其成为硬约束?

要求: 如果 pods 不遵守约束,我们希望部署失败或处于挂起状态(同一应用程序的 2 pods 应该是同一节点)

我觉得这个可以用

affinity:
    podAntiAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
      - labelSelector:
          matchExpressions:
          - key: app
            operator: In
            values:
            - <VALUE>
        topologyKey: "kubernetes.io/hostname"

更多参考可以访问:https://thenewstack.io/implement-node-and-pod-affinity-anti-affinity-in-kubernetes-a-practical-example/