设置指定节点调度(nodeSelector)
在Kubernetes中,选择某个节点调度最简单的方式是在工作负载中配置nodeSelector字段,您可以通过nodeSelector字段设置希望调度的目标节点标签。Kubernetes只会将Pod调度到拥有指定标签的节点上。
前提条件
您需要为目标节点添加自定义标签,工作负载可根据该节点标签进行调度,操作步骤请参见添加/删除节点标签。
创建指定节点调度的工作负载
- 使用kubectl连接集群,具体操作请参见通过kubectl连接集群。
- 创建名为“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
- 创建工作负载。
kubectl apply -f nginx.yaml
- 验证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>