在Kubernetes中,podAffinity
和podAntiAffinity
的权重是否相互比较?还是独立?那么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
如果不覆盖默认的单个权重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)
基于亲和性计算,尽管节点1已经运行pod";c";作为3〃;b";荚大于1〃;c";豆荚
在您的示例中,如果节点上test-1
与test-2
的比例为1:1,则反亲和性将超过亲和性设置。在节点上test-1
与test-2
的比例为2:1的情况下,(反(亲和性将相互抵消。
源