cordon节点,drain驱逐节点,delete 节点( 二 )

kubectl scale deploy命令使nginx deploy的副本数扩展为10个
[root@k8scloude1 deploy]# kubectl scale deploy nginx --replicas=10deployment.apps/nginx scaled查看pod,可以发现新生成的pod都被调度到到k8scloude3上,某个节点被cordon之后,新的pod将不被调度到该节点,原先的pod不变 。
[root@k8scloude1 deploy]# kubectl get pod -o wideNAMEREADYSTATUSRESTARTSAGEIPNODENOMINATED NODEREADINESS GATESnginx-6cf858f6cf-7fdnr1/1Running04s10.244.251.221k8scloude3<none><none>nginx-6cf858f6cf-fwhmh1/1Running09m9s10.244.251.217k8scloude3<none><none>nginx-6cf858f6cf-g92ls1/1Running04s10.244.251.219k8scloude3<none><none>nginx-6cf858f6cf-hr6bn1/1Running09m9s10.244.251.218k8scloude3<none><none>nginx-6cf858f6cf-j2ccs1/1Running09m9s10.244.112.161k8scloude2<none><none>nginx-6cf858f6cf-l7n4w1/1Running09m9s10.244.112.162k8scloude2<none><none>nginx-6cf858f6cf-lsvsg1/1Running04s10.244.251.223k8scloude3<none><none>nginx-6cf858f6cf-mpwjl1/1Running04s10.244.251.222k8scloude3<none><none>nginx-6cf858f6cf-s8x6b1/1Running04s10.244.251.220k8scloude3<none><none>nginx-6cf858f6cf-t6qxq1/1Running09m9s10.244.112.163k8scloude2<none><none>pod11/1Running09m17s10.244.251.216k8scloude3<none><none>来个极端的例子,先把deploy的副本数变为0,再变为10 , 此时所有的pod都运行在k8scloude3节点了 。
[root@k8scloude1 deploy]# kubectl scale deploy nginx --replicas=0deployment.apps/nginx scaled[root@k8scloude1 deploy]# kubectl get pod -o wideNAMEREADYSTATUSRESTARTSAGEIPNODENOMINATED NODEREADINESS GATESpod11/1Running010m10.244.251.216k8scloude3<none><none>[root@k8scloude1 deploy]# kubectl scale deploy nginx --replicas=10deployment.apps/nginx scaled[root@k8scloude1 deploy]# kubectl get pod -o wideNAMEREADYSTATUSRESTARTSAGEIPNODENOMINATED NODEREADINESS GATESnginx-6cf858f6cf-5cx9s1/1Running08s10.244.251.231k8scloude3<none><none>nginx-6cf858f6cf-6cblj1/1Running08s10.244.251.228k8scloude3<none><none>nginx-6cf858f6cf-827cz1/1Running08s10.244.251.233k8scloude3<none><none>nginx-6cf858f6cf-b989n1/1Running08s10.244.251.229k8scloude3<none><none>nginx-6cf858f6cf-kwxhn1/1Running08s10.244.251.224k8scloude3<none><none>nginx-6cf858f6cf-ljjxz1/1Running08s10.244.251.225k8scloude3<none><none>nginx-6cf858f6cf-ltrpr1/1Running08s10.244.251.227k8scloude3<none><none>nginx-6cf858f6cf-lwf7g1/1Running08s10.244.251.230k8scloude3<none><none>nginx-6cf858f6cf-xw84l1/1Running08s10.244.251.226k8scloude3<none><none>nginx-6cf858f6cf-zpwhq1/1Running08s10.244.251.232k8scloude3<none><none>pod11/1Running011m10.244.251.216k8scloude3<none><none>3.3 uncordon节点要让节点恢复调度pod,uncordon即可 。
uncordon k8scloude2节点,k8scloude2节点状态变为Ready,恢复调度 。
#需要uncordon[root@k8scloude1 deploy]# kubectl uncordon k8scloude2node/k8scloude2 uncordoned[root@k8scloude1 deploy]# kubectl get nodesNAMESTATUSROLESAGEVERSIONk8scloude1Readycontrol-plane,master8dv1.21.0k8scloude2Ready<none>8dv1.21.0k8scloude3Ready<none>8dv1.21.0四.drain节点4.1 drain节点概览在对节点执行维护(例如内核升级、硬件维护等)之前,可以使用 kubectl drain 从节点安全地逐出所有 Pods 。安全的驱逐过程允许 Pod 的容器 体面地终止,并确保满足指定的 PodDisruptionBudgets,PodDisruptionBudget 是一个对象,用于定义可能对一组 Pod 造成的最大干扰 。。说明: 默认情况下,kubectl drain 将忽略节点上不能杀死的特定系统 Pod; 'drain' 驱逐或删除除镜像 pod 之外的所有 pod(不能通过 API 服务器删除) 。如果有 daemon set-managed pods,drain 不会在没有 --ignore-daemonsets 的情况下继续进行,并且无论如何它都不会删除任何 daemon set-managed pods,因为这些 pods 将立即被 daemon set 控制器替换,它会忽略不可调度的标记 。如果有任何 pod 既不是镜像 pod,也不是由复制控制器、副本集、守护程序集、有状态集或作业管理的,那么除非您使用 --force,否则 drain 不会删除任何 pod 。如果一个或多个 pod 的管理资源丢失, --force 也将允许继续删除 。
kubectl drain 的成功返回,表明所有的 Pods(除了上一段中描述的被排除的那些) ,  已经被安全地逐出(考虑到期望的终止宽限期和你定义的 PodDisruptionBudget) 。然后就可以安全地关闭节点,比如关闭物理机器的电源,如果它运行在云平台上,则删除它的虚拟机 。
4.2 drain 节点查看node状态和pod
[root@k8scloude1 deploy]# kubectl get nodesNAMESTATUSROLESAGEVERSIONk8scloude1Readycontrol-plane,master8dv1.21.0k8scloude2Ready<none>8dv1.21.0k8scloude3Ready<none>8dv1.21.0[root@k8scloude1 deploy]# kubectl get pod -o wideNAMEREADYSTATUSRESTARTSAGEIPNODENOMINATED NODEREADINESS GATESnginx-6cf858f6cf-58wnd1/1Running065s10.244.112.167k8scloude2<none><none>nginx-6cf858f6cf-5rrk41/1Running065s10.244.112.164k8scloude2<none><none>nginx-6cf858f6cf-86wxr1/1Running065s10.244.251.237k8scloude3<none><none>nginx-6cf858f6cf-89wj91/1Running065s10.244.112.168k8scloude2<none><none>nginx-6cf858f6cf-9njrj1/1Running065s10.244.251.236k8scloude3<none><none>nginx-6cf858f6cf-hchtb1/1Running065s10.244.251.234k8scloude3<none><none>nginx-6cf858f6cf-mb2ft1/1Running065s10.244.112.166k8scloude2<none><none>nginx-6cf858f6cf-nq6zv1/1Running065s10.244.112.169k8scloude2<none><none>nginx-6cf858f6cf-pl7ww1/1Running065s10.244.251.235k8scloude3<none><none>nginx-6cf858f6cf-sf2w61/1Running065s10.244.112.165k8scloude2<none><none>pod11/1Running036m10.244.251.216k8scloude3<none><none>

推荐阅读