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>
推荐阅读
- Taurus.MVC 微服务框架 入门开发教程:项目部署:7、微服务节点的监控与告警。
- 2. 单主机 Elasticsearch 双节点或多节点集群环境部署
- 砖胎模技术交底细部节点 砖胎模技术交底
- 2023年高考志愿填报时间 2023年高考志愿填报时间节点
- 青白江区中考志愿填报及学校录取时间节点2023
- cdr如何删除路径 cdr节点如何删除
- 浙江金华高考时间2021具体时间 2023年浙江金华高考重要时间节点梳理
- 什么是景观轴线景观节点
- 江苏2023年上半年自考毕业申请重要时间节点提醒
- 2023北京延庆区小升初入学关键时间节点一览