
# 设置指定节点调度（nodeSelector）
在Kubernetes中，如果您希望将工作负载调度到指定的节点上，最简单的方式是在工作负载中配置nodeSelector字段。在nodeSelector字段中设置希望调度的目标节点标签后，Kubernetes就只会将该工作负载调度到拥有指定标签的节点上。
节点在创建时会自动添加一些标签，您也可以根据这些标签进行调度，详情请参见[节点固有标签](https://support.huaweicloud.com/usermanual-cce/cce_10_0004.html#cce_10_0004__section74111324152813)。常用的节点标签如下：
- topology.kubernetes.io/zone：表示节点所在的可用区（availability zone），可在指定可用区调度时使用。
- kubernetes.io/hostname：节点的hostname，可在指定节点调度时使用。
- cce.cloud.com/cce-nodepool：节点所属的节点池，可在指定节点池调度时使用。
#### 前提条件
如果节点上的默认标签无法满足您的使用诉求，您需要为目标节点添加自定义标签，工作负载可根据该节点标签进行调度，操作步骤请参见[添加/更新或删除节点标签](https://support.huaweicloud.com/usermanual-cce/cce_10_0004.html#cce_10_0004__section33951611481)。
#### 创建指定节点调度的工作负载
1. 使用kubectl连接集群，具体操作请参见[通过kubectl连接集群](https://support.huaweicloud.com/usermanual-cce/cce_10_0107.html)。
2. 创建名为"nginx.yaml"的YAML文件，此处文件名可自定义。 
   为工作负载设置nodeSelector，例如，填写的键为"deploy_qa"，值为"true"，这表明该Pod将被调度到有deploy_qa=true标签的节点。示例如下：
   ```
   apiVersion: apps/v1
   kind: Deployment
   metadata:
     name: nginx
   spec:
     replicas: 3
     selector:
       matchLabels:
         app: nginx
     template:
       metadata:
         labels:
           app: nginx
       spec:
         nodeSelector: 
           deploy_qa: "true"
         containers:
         - image: nginx:latest
           imagePullPolicy: IfNotPresent
           name: nginx
         imagePullSecrets:
         - name: default-secret
   ```
   
   
3. 创建工作负载。 
   ```
   kubectl apply -f nginx.yaml
   ```
   
   
4. 验证Pod全部运行在目标节点上。 
   ```
   kubectl get pod -o wide
   ```
   回显如下，节点192.168.0.103为包含deploy_qa=true标签的节点。
   ```
   NAME                     READY   STATUS    RESTARTS   AGE     IP              NODE                                   NOMINATED NODE   READINESS GATES
   nginx-66859f4f48-xgp2g   1/1     Running   0          6h57m   172.16.3.0   192.168.0.103   <none>           <none>
   nginx-66859f4f48-t9gqj   1/1     Running   0          6h57m   172.16.3.1   192.168.0.103   <none>           <none>
   nginx-66859f4f48-2grhq   1/1     Running   0          6h57m   172.16.3.2   192.168.0.103   <none>           <none>
   ```
   
   
 
#### 相关文档
- [设置节点亲和调度（nodeAffinity）](https://support.huaweicloud.com/usermanual-cce/cce_10_0892.html)
- [设置工作负载亲和/反亲和调度（podAffinity/podAntiAffinity）](https://support.huaweicloud.com/usermanual-cce/cce_10_0893.html)
- 如果Pod未调度至对应节点，解决方案请参见[为什么Pod调度不到某个节点上](https://support.huaweicloud.com/cce_faq/cce_faq_00293.html)。
 
