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-az1Copy 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.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow