因服務(wù)器升級遷移,需要將升級的節(jié)點上的pod遷移到其他節(jié)點。
可以改yaml中指定臨時標(biāo)簽,重新部署,但比較麻煩,通常會采用cordon/uncordon節(jié)點的方案。
集群中三個節(jié)點:
NAME STATUS ROLES AGE VERSION
k8s-master Ready master 129d v1.15.9
k8s-node1 Ready <none> 129d v1.15.9
k8s-node2 Ready <none> 129d v1.15.9
節(jié)點2有兩個pod
kubectl cordon k8s-node2 #將節(jié)點2設(shè)置不不可調(diào)度
但此時是新的pod不會再分配到該節(jié)點,但原節(jié)點2上的pod不會自動遷移,node2的狀態(tài)為 Ready,SchedulingDisabled
k8s-master Ready master 129d v1.15.9
k8s-node1 Ready <none> 129d v1.15.9
k8s-node2 Ready,SchedulingDisabled <none> 129d v1.15.9
執(zhí)行如下命令遷移節(jié)點的pod
kubectl drain k8s-node2 --delete-local-data --ignore-daemonsets --force
輸出:
node/k8s-node2 already cordoned
WARNING: ignoring DaemonSet-managed Pods: kube-system/kube-flannel-ds-amd64-64zsm, kube-system/kube-proxy-b669n
evicting pod "kong-konga-7cbf568cd7-8mw97"
evicting pod "netcore-01-blue-7fb69d9db5-pdgjq"
pod/netcore-01-blue-7fb69d9db5-pdgjq evicted
pod/kong-konga-7cbf568cd7-8mw97 evicted
node/k8s-node2 evicted
遷移后
節(jié)點2維護(hù)完畢后,可以再將節(jié)點2還原成Ready可分配的狀態(tài)
kubectl uncordon k8s-node2