将 Pods 分配给 kubernetes 上的节点时,将节点亲和力和 pod 亲和力规则结合起来是一种好习惯(可行)吗
Is it a good practice (feasible) to combine both nodeAfinity and podAffinity rules when assigning Pods to Nodes on kubernetes
在将 Pods 分配给 kubernetes 上的节点时,结合 nodeAfinity 和 podAffinity 规则 是一个好的做法(可行)吗?
示例:
apiVersion: v1
kind: Pod
metadata:
name: node-and-pod-affinity-combined
spec:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/e2e-az-name
operator: In
values:
- e2e-az1
podAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchExpressions:
- key: node-label-key
operator: In
values:
- some-node-label-value
当然可以将它们组合起来。实际上,这会在您使用 podAffinity
选择的 pods 的调度上强制执行一种亲和力。即使那些 pods 本身没有任何 nodeAffinity 或 podAffinity,调度程序也会尝试将它们调度到您的 node-and-pod-affinity-combined
pods 所在的节点 运行。
更常见的用例是一起使用 nodeAffinity
和 podAntiAffinity
来在一组节点上传播 pods。
在将 Pods 分配给 kubernetes 上的节点时,结合 nodeAfinity 和 podAffinity 规则 是一个好的做法(可行)吗?
示例:
apiVersion: v1
kind: Pod
metadata:
name: node-and-pod-affinity-combined
spec:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/e2e-az-name
operator: In
values:
- e2e-az1
podAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchExpressions:
- key: node-label-key
operator: In
values:
- some-node-label-value
当然可以将它们组合起来。实际上,这会在您使用 podAffinity
选择的 pods 的调度上强制执行一种亲和力。即使那些 pods 本身没有任何 nodeAffinity 或 podAffinity,调度程序也会尝试将它们调度到您的 node-and-pod-affinity-combined
pods 所在的节点 运行。
更常见的用例是一起使用 nodeAffinity
和 podAntiAffinity
来在一组节点上传播 pods。