×

节点选择器指定键值对的映射。规则是使用节点上的自定义标签和Pod中指定的选择器定义的。

为了使Pod能够在节点上运行,Pod必须具有节点上作为标签的指示的键值对。

如果您在同一个Pod配置中使用节点亲和性和节点选择器,请参阅下面的重要注意事项。

使用节点选择器控制Pod放置

您可以使用Pod上的节点选择器和节点上的标签来控制Pod的调度位置。使用节点选择器,Red Hat OpenShift Service on AWS 会将Pod调度到包含匹配标签的节点上。

您可以将标签添加到节点、计算机器集或机器配置。将标签添加到计算机器集可确保如果节点或机器宕机,新节点将具有该标签。如果节点或机器宕机,添加到节点或机器配置的标签将不会持久化。

要将节点选择器添加到现有Pod,请将节点选择器添加到该Pod的控制对象,例如ReplicaSet对象、DaemonSet对象、StatefulSet对象、Deployment对象或DeploymentConfig对象。该控制对象下的任何现有Pod都将在具有匹配标签的节点上重新创建。如果您正在创建新的Pod,您可以直接将节点选择器添加到Pod规范中。如果Pod没有控制对象,则必须删除Pod,编辑Pod规范,然后重新创建Pod。

您不能直接将节点选择器添加到现有的已调度Pod。

先决条件

要将节点选择器添加到现有Pod,请确定该Pod的控制对象。例如,router-default-66d5cf9464-m2g75 Pod由router-default-66d5cf9464副本集控制。

$ oc describe pod router-default-66d5cf9464-7pwkc
示例输出
kind: Pod
apiVersion: v1
metadata:
# ...
Name:               router-default-66d5cf9464-7pwkc
Namespace:          openshift-ingress
# ...
Controlled By:      ReplicaSet/router-default-66d5cf9464
# ...

Web控制台在Pod YAML中的ownerReferences下列出控制对象。

apiVersion: v1
kind: Pod
metadata:
  name: router-default-66d5cf9464-7pwkc
# ...
  ownerReferences:
    - apiVersion: apps/v1
      kind: ReplicaSet
      name: router-default-66d5cf9464
      uid: d81dd094-da26-11e9-a48a-128e7edf0312
      controller: true
      blockOwnerDeletion: true
# ...
步骤
  • 将匹配的节点选择器添加到Pod

    • 要将节点选择器添加到现有和将来的Pod,请将节点选择器添加到Pod的控制对象。

      带有标签的示例ReplicaSet对象
      kind: ReplicaSet
      apiVersion: apps/v1
      metadata:
        name: hello-node-6fbccf8d9
      # ...
      spec:
      # ...
        template:
          metadata:
            creationTimestamp: null
            labels:
              ingresscontroller.operator.openshift.io/deployment-ingresscontroller: default
              pod-template-hash: 66d5cf9464
          spec:
            nodeSelector:
              kubernetes.io/os: linux
              node-role.kubernetes.io/worker: ''
              type: user-node (1)
      # ...
      1 添加节点选择器。
    • 要将节点选择器添加到特定的新Pod,请直接将选择器添加到Pod对象。

      带有节点选择器的示例Pod对象
      apiVersion: v1
      kind: Pod
      metadata:
        name: hello-node-6fbccf8d9
      # ...
      spec:
        nodeSelector:
          region: east
          type: user-node
      # ...

      您不能直接将节点选择器添加到现有的已调度Pod。