This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.1.8. 使用节点选择器将 pod 放置到特定节点
节点选择器指定一个键值对映射。使用节点中的自定义标签和 pod 中指定的选择器来定义规则。
若要使 pod 有资格在某一节点上运行,pod 必须具有指定为该节点上标签的键值对。
如果您在同一 pod 配置中同时使用节点关联性和节点选择器,请查看下方的重要注意事项。
1.8.1. 使用节点选择器控制 pod 放置 复制链接链接已复制到粘贴板!
您可以使用 pod 上的节点选择器标签来控制 pod 的调度位置。
使用节点选择器时,OpenShift Container Platform 会将 pod 调度到包含匹配标签的节点。
您可以向节点或 MachineConfig 添加标签,但标签不会在节点或机器停机后保留。将标签添加到 MachineSet 可确保新的节点或机器具有该标签。
要向现有的 pod 添加节点选择器,请将节点选择器添加到该节点的控制对象,如 ReplicaSet、Daemonset 或 StatefulSet。任何属于该控制对象的现有 pod 都会在具有匹配标签的节点上重新创建。如果要创建新 pod,可以将节点选择器直接添加到 pod 规格中。
您不能将节点选择器添加到现有的已调度 pod 中。
先决条件
如果要向现有 pod 添加节点选择器,请确定该 pod 的控制对象。例如,router-default-66d5cf9464-m2g75 pod 由 router-default-66d5cf9464 ReplicaSet 控制:
Web 控制台在 pod YAML 的 ownerReferences 下列出控制对象:
流程
向节点添加所需的标签:
oc label <resource> <name> <key>=<value>
$ oc label <resource> <name> <key>=<value>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如,若要为以下节点添加标签:
oc label nodes ip-10-0-142-25.ec2.internal type=user-node region=east
$ oc label nodes ip-10-0-142-25.ec2.internal type=user-node region=eastCopy to Clipboard Copied! Toggle word wrap Toggle overflow 该标签应用到这个节点:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 另外,也可以将标签添加到 MachineSet:
oc edit MachineSet abc612-msrtw-worker-us-east-1c
$ oc edit MachineSet abc612-msrtw-worker-us-east-1cCopy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将所需节点选择器添加到 pod:
要将节点选择器添加到现有和未来的 pod,请向 pod 的控制对象添加节点选择器:
例如:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 添加所需的节点选择器。
对于新 pod,您可以直接将选择器添加到 pod 规格中:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
如果您在同一 pod 配置中同时使用节点选择器和节点关联性,请注意:
-
如果同时配置了
nodeSelector和nodeAffinity,则必须满足这两个条件时 pod 才能调度到候选节点。 -
如果您指定了多个与
nodeAffinity类型关联的nodeSelectorTerms,那么其中一个nodeSelectorTerms满足时 pod 就能调度到节点上。 -
如果您指定了多个与
nodeSelectorTerms关联的matchExpressions,那么只有所有matchExpressions都满足时 pod 才能调度到节点上。