16.8.2. 配置节点关联性
您可以通过 pod 规格文件配置节点关联性。您可以指定 必要规则(required rule)或 偏好规则(preferred rule) ,或同时指定两者。如果您同时指定,节点必须首先满足必要规则,然后尝试满足偏好规则。
下例中的 pod 规格包含一条规则,要求 pod 放置到具有某一标签(键为 e2e-az-NorthSouth
且值为 e2e-az-North
或 e2e-az-South
)的节点上:
具有节点关联性必要规则的 pod 配置文件示例
下例中的节点规格包含一条偏好规则,其规定优先为 pod 选择具有键为 e2e-az-EastWest
且值为 e2e-az-East
或 e2e-az-West
的节点:
具有节点关联性偏好规则的 pod 配置文件示例
没有明确的节点反关联性概念,但使用 NotIn
或 DoesNotExist
运算符就能实现这种行为。
如果您在同一 pod 配置中使用节点关联性和 节点选择器,请注意以下几点:
-
如果同时配置了
nodeSelector
和nodeAffinity
,则必须满足这两个条件时 pod 才能调度到候选节点。 -
如果您指定了多个与
nodeAffinity
类型关联的nodeSelectorTerms
,那么其中一个nodeSelectorTerms
满足时 pod 就能调度到节点上。 -
如果您指定了多个与
nodeSelectorTerms
关联的matchExpressions
,那么只有所有matchExpressions
都满足时 pod 才能调度到节点上。
16.8.2.1. 配置所需的节点关联性规则 复制链接链接已复制到粘贴板!
必须满足必要规则,pod 才能调度到节点上。
以下步骤演示了一个简单的配置,此配置会创建一个节点,以及调度程序要放置到该节点上的 pod。
通过编辑节点配置或使用
oc label node
命令向节点添加标签:oc label node node1 e2e-az-name=e2e-az1
$ oc label node node1 e2e-az-name=e2e-az1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意要修改集群中的节点,请根据需要更新节点配置映射。不要手动编辑
node-config.yaml
文件。在 pod 规格中,使用
nodeAffinity
小节来配置requiredDuringSchedulingIgnoredDuringExecution
参数:-
指定必须满足的键和值。如果希望新 pod 调度到您编辑的节点上,请使用与节点中标签相同的
key
和value
参数。 指定一个
operator
。运算符可以是In
、NotIn
、Exists
或DoesNotExist
、Lt
或Gt
。例如,使用运算符In
来要求节点上存在该标签:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
指定必须满足的键和值。如果希望新 pod 调度到您编辑的节点上,请使用与节点中标签相同的
创建 pod:
oc create -f e2e-az2.yaml
$ oc create -f e2e-az2.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow