Kubernetes NodeSelector

将pod调度到指定节点

# 通过kubectl label 命令给目标Node上打上标签
[root@k8s-master yaml]# kubectl label nodes k8s-node01 zone=myapp
node/k8s-node01 labeled

# yaml 文件内容如下
[root@k8s-master yaml]# cat myapp_deployment.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: myapp-test
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: myapp-test
    spec:
      containers:
      - name: myapp-c
        image: zdwork/myapp:v1.0
        ports:
        - containerPort: 8080
      nodeSelector:
        zone: myapp

[root@k8s-master yaml]# kubectl apply -f myapp_deployment.yaml
deployment.extensions/myapp-test created

# 查看Pod已经在指定的Node上
[root@k8s-master yaml]# kubectl get pods -o wide
NAME                          READY   STATUS    RESTARTS   AGE   IP             NODE         NOMINATED NODE   READINESS GATES
myapp-test-7f6ff46f48-j55cw   1/1     Running   0          15s   10.244.1.173   k8s-node01   <none>           <none>

# 修改标签
[root@k8s-master yaml]# kubectl label nodes k8s-node01 zone=beijing --overwrite

# 删除标签
[root@k8s-master yaml]# kubectl label nodes k8s-node01 zone-

注意:如果我们指定了Pod的nodeSelector条件,且在集群中不存在包含相应标签的Node,则即使在集群中还有其他可供使用的Node,这个Pod也无法被调度成功

Comments Closed.