pod可以根据要求让pod调度到想要的节点上运行,或者不在某节点运行。

1 查看现有节点运行环境已有标签

kubectl get nodes --show-labels

2 添加标签

#给节点node1打上标签env=uat
kubectl label node node1 env=uat
 
#给节点node2打上标签env=prod
kubectl label node node2 env=prod
 
#查看生成的标签
kubectl get node --show-labels  

3 指定标签分发pod

案例1:创建pod时候指定调度节点 

yaml配置中增加以下参数

nodeSelector:        #添加此行  
   env: uat      #指定标签

1)编辑yaml文件

$ cat nginx.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-node1
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      nodeSelector:        #添加此行  
        env: uat      #指定标签
      containers:
      - name: nginx-node1
        image: nginx:latest
        ports:
        - containerPort: 80

2)执行生成pod

$ kubectl apply -f nginx.yaml

3)查看分发pod在哪个node上

$ kubectl get pods -o wide
案例2:修改已经生成的pod,调度到指定节点

1)当前节点pod重启多次无法正常运行,尝试调度到其他节点

$ kubectl get pod -n drugs-erp -o wide

2)查看当前标签情况

$ kubectl get node --show-labels

3)通过修改deplyment控制器调度到其他节点

$ kubectl get deploy -n drugs-erp

 4)修改控制参数

$ kubectl edit  deploy drugs-erp-store  -n drugs-erp -o yaml

#同样增加以下参数

nodeSelector:        #添加此行  
   mmp: myj      #指定标签

 5)重新调度新的节点,查看pod已经正常服务

$ kubectl get pod -n drugs-erp -o wide

5 删除标签

#删除节点1标签env=uat
kubectl label node node1 env-
 
 
#删除节点2标签env=prod
kubectl label node node2 env-
09-28 01:33