建设企业网站注意事项,ps设计教程网,移动应用开发技术有哪些,黄浦专业做网站pod可以根据调度策略让pod调度到想要的节点上运行#xff0c;或者不在某节点运行。
1 查看现有节点运行环境已有标签
$ kubectl get nodes --show-labels
NAME STATUS ROLES AGE VERSION LABELS
ops-master-1 Ready control-plane,ma…pod可以根据调度策略让pod调度到想要的节点上运行或者不在某节点运行。
1 查看现有节点运行环境已有标签
$ kubectl get nodes --show-labels
NAME STATUS ROLES AGE VERSION LABELS
ops-master-1 Ready control-plane,master 26d v1.21.9 beta.kubernetes.io/archamd64,beta.kubernetes.io/oslinux,kubernetes.io/archamd64,kubernetes.io/hostnameops-master-1,kubernetes.io/oslinux,node-role.kubernetes.io/control-plane,node-role.kubernetes.io/master,node.kubernetes.io/exclude-from-external-load-balancers
ops-master-2 Ready control-plane,master 26d v1.21.9 beta.kubernetes.io/archamd64,beta.kubernetes.io/oslinux,kubernetes.io/archamd64,kubernetes.io/hostnameops-master-2,kubernetes.io/oslinux,node-role.kubernetes.io/control-plane,node-role.kubernetes.io/master,node.kubernetes.io/exclude-from-external-load-balancers
ops-master-3 Ready control-plane,master 26d v1.21.9 beta.kubernetes.io/archamd64,beta.kubernetes.io/oslinux,kubernetes.io/archamd64,kubernetes.io/hostnameops-master-3,kubernetes.io/oslinux,node-role.kubernetes.io/control-plane,node-role.kubernetes.io/master,node.kubernetes.io/exclude-from-external-load-balancers
ops-worker-1 Ready none 26d v1.21.9 beta.kubernetes.io/archamd64,beta.kubernetes.io/oslinux,kubernetes.io/archamd64,kubernetes.io/hostnameops-worker-1,kubernetes.io/oslinux
ops-worker-2 Ready none 26d v1.21.9 beta.kubernetes.io/archamd64,beta.kubernetes.io/oslinux,kubernetes.io/archamd64,kubernetes.io/hostnameops-worker-2,kubernetes.io/oslinux
2 添加标签 #给节点ops-worker-1打上标签envuat
$ kubectl label node ops-worker-1 envuat#给节点ops-worker-2打上标签envprod
$ kubectl label node ops-worker-2 envprod#查看生成的标签
$ kubectl get node --show-labels | grep env
ops-worker-1 Ready none 26d v1.21.9 beta.kubernetes.io/archamd64,beta.kubernetes.io/oslinux,envuat,kubernetes.io/archamd64,kubernetes.io/hostnameops-worker-1,kubernetes.io/oslinux
ops-worker-2 Ready none 26d v1.21.9 beta.kubernetes.io/archamd64,beta.kubernetes.io/oslinux,envprod,kubernetes.io/archamd64,kubernetes.io/hostnameops-worker-2,kubernetes.io/oslinux
3 指定标签分发pod
3.1 创建pod时候指定调度节点
3.1.1 生成deployment文件
$ cat nginx.yaml
apiVersion: apps/v1
kind: Deployment
metadata:name: nginx-test
spec:replicas: 2selector:matchLabels:app: nginxtemplate:metadata:labels:app: nginxspec:nodeSelector: #添加此行 env: uat #指定标签containers:- name: nginx-testimage: nginx:latestports:- containerPort: 803.1.2 执行生成pod
$ kubectl apply -f nginx.yaml
deployment.apps/nginx-test created
3.1.3 查看结果
$ kubectl get pod -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginx-test-6895cc9759-989h8 1/1 Running 0 7s 172.25.78.78 ops-worker-1 none none
nginx-test-6895cc9759-slzcm 1/1 Running 0 7s 172.25.78.79 ops-worker-1 none none
3.2 运行状态pod迁移到指定节点 迁移过程相当于删除当前节点pod再在新node上生成pod生产环境操作时需要谨慎。 3.2.1 调整pod运行标签
$ kubectl edit deploy nginx-test
修改nodeSelector:env: uat
为nodeSelector:env: proddeployment.apps/nginx-test edited
3.2.2 查看结果
$ kubectl get pod -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginx-test-6b7c99bbb-8sfh7 1/1 Running 0 49s 172.25.50.140 ops-worker-2 none none
nginx-test-6b7c99bbb-hp62s 1/1 Running 0 67s 172.25.50.139 ops-worker-2 none none pod已经切换至ops-worker-2节点上且pod创建时间不足1分钟。
4 删除标签
$ kubectl label node ops-worker-1 env-
node/ops-worker-1 labeled 查看节点上pod状态。
$ kubectl get pod -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginx-node1-5f9555db6b-db2cq 1/1 Running 0 12m 172.25.78.76 ops-worker-1 none none
nginx-node1-5f9555db6b-rq2pn 1/1 Running 0 12m 172.25.78.77 ops-worker-1 none none 删除节点标签正在运行的pod不受影响 。 查看节点标签。
$ kubectl get nodes --show-labels | grep ops-worker-1
ops-worker-1 Ready none 26d v1.21.9 beta.kubernetes.io/archamd64,beta.kubernetes.io/oslinux,kubernetes.io/archamd64,kubernetes.io/hostnameops-worker-1,kubernetes.io/oslinux
删除节点上的pod验证pod重新调度是否正常。
$ kubectl delete pod nginx-node1-5f9555db6b-db2cq
pod nginx-node1-5f9555db6b-db2cq deleted
$ kubectl get pod -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginx-node1-5f9555db6b-ctbb9 0/1 Pending 0 59s none none none none
nginx-node1-5f9555db6b-rq2pn 1/1 Running 0 16m 172.25.78.77 ops-worker-1 none none pod无法调度运行因为调度策略中的nodeSelector调度策略还存在因此生产环境在清理了node标签后一定要将运行在节点上的pod中配置的标签清理掉否则pod重启后将无法调度。