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-