在 Kubernetes 中,podAffinity 和 podAntiAffinity 的权重是否相互比较?还是独立?podAffinity 和 nodeAffinity 怎么样?

Pat*_*Pat 2 kubernetes

在 Kubernetes 中,podAffinitypodAntiAffinity权重是相互比较的吗?还是独立?podAffinity和呢nodeAffinity?会podAntiAffinity超过podAffinity下面例子中的吗?如果nodeAffinity也添加到混合物中会怎样。

 affinity:
  podAffinity:
    preferredDuringSchedulingIgnoredDuringExecution:
    - weight: 50
      podAffinityTerm:
        labelSelector:
          matchExpressions:
          - key: app.kubernetes.io/name
            operator: In
            values:
            - test-1
        topologyKey: kubernetes.io/hostname

  podAntiAffinity:
    preferredDuringSchedulingIgnoredDuringExecution:
    - weight: 100
      podAffinityTerm:
        labelSelector:
          matchExpressions:
          - key: app.kubernetes.io/name
            operator: In
            values:
            - test-2          
        topologyKey: kubernetes.io/hostname
Run Code Online (Sandbox Code Playgroud)

Luk*_*ler 5

如果您不覆盖默认的单独权重 1,则 Pod 和节点的所有关联设置都会以相同的方式进行加权。

在执行期间,节点上出现的关联条件会乘以该条件的权重。

pod a has an affinity to b
pod a has an anti-affinity to c

new pod of type "a" to be scheduled
---
node1 runs 3 "b" pods and 1 "c" pod --> affinity score: 2 (3 "b" pods - 1 "c" pod)
node2 runs 1 "b" pod --> affinity score 1: 1 (1 "b" pod)
Run Code Online (Sandbox Code Playgroud)

根据亲和力计算,尽管 pod“c” 已经在运行 pod“c”,但 pod 将被调度到节点 1 上,因为 3 个“b”pod 超过 1 个“c”pod。

在您的示例中,如果节点上的test-1与 的比例为 1:1,则反亲和力将超过亲和力设置。当节点上test-2的比例为 2:1 时,(反)亲和力将相互抵消。test-1test-2

来源