pod可以根据要求让pod调度到想要的节点上运行,或者不在某节点运行。
kubectl get nodes --show-labels
- #给节点node1打上标签env=uat
- kubectl label node node1 env=uat
-
- #给节点node2打上标签env=prod
- kubectl label node node2 env=prod
-
- #查看生成的标签
- kubectl get node --show-labels
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
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
- #删除节点1标签env=uat
- kubectl label node node1 env-
-
-
- #删除节点2标签env=prod
- kubectl label node node2 env-