与 Node 的亲缘性
Pod 支持通过配置 Node 亲缘性来 强制或非强制 将该 Pod 调度至某个 Node 子集中:
强制:与
pod.spec.nodeSelector
效果一致,强制将 Pod 调度至某个 Node 子集中;非强制:即该 Pod 更倾向于调度至某些 Node 上,若没法实现的话,将会被调度至其他 Node 中;
Pod 的 Node 亲缘性规则同样是通过 标签 来实现的,通过在配置规则中指定亲缘的标签,Pod 会被优先调度至包含该标签的 Node 中。
🍓 Pod 的 Node 亲缘性规则在 pods.spec.affinity.nodeAffinity
中进行配置,该配置中需要指定亲缘属性,目前共包含下面两种属性:
preferredDuringSchedulingIgnoredDuringExecution
: 从preferredDuringScheduling
可以看出是非强制的;requiredDuringSchedulingIgnoredDuringExecution
:从requiredDuringScheduling
可以看出是强制的;
强制性 Node 亲缘性
在 pod.spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution
中指定强制性 Node 亲缘性规则。
下面展示一个具体案例,创建的 Pod 被强制调度至带有 gpu=true
的 Node 上:
非强制性 Node 亲缘性
在 pod.spec.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.preference
中指定非强制性规则。
下面展示一个具体案例,创建的 Pod 优先调度至带有 availability-zone=zone1
和 share-type=dedicated
标签的 Node 中,并且第一个优先级规则更重要,权重设置为 80
,第二个优先级规则相对次要,权重设为 20
:
根据案例中的亲缘性规则,可以将 Node 分为四类,优先级从高到低排序如下:
同时包含
availability-zone=zone1
和share-type=dedicated
标签的 Node;仅包含
availability-zone=zone1
标签的 Node;仅包含
share-type=dedicated
标签的 Node;其他 Node;
Last updated
Was this helpful?