K8s 集群节点标准维护流程(完整命令 + 操作步骤)
适用于 Kubeadm 部署标准集群,包含日常节点维护、节点重启 / 升级、故障节点下线、节点恢复全流程,生产环境直接可用。
一、前置检查(维护前必做)
1 2 3 4 5 6 7 8
| kubectl get nodes -o wide
kubectl get pods -o wide --field-selector spec.nodeName=节点名称
kubectl describe node 节点名称 | grep -E "Unschedulable|Taints"
|
二、节点维护核心流程(正常维护:升级 / 补丁 / 硬件操作)
步骤 1:设置节点不可调度(新 Pod 不再调度至该节点)
- 作用:仅禁止新 Pod 调度,不驱逐现有 Pod
- 验证:
kubectl get nodes 节点状态标记 SchedulingDisabled
步骤 2:驱逐节点上所有业务 Pod(平滑迁移至其他节点)
1 2 3 4 5
| kubectl drain 节点名称 \ --ignore-daemonsets \ --delete-local-data \ --timeout=300s
|
参数说明:
--ignore-daemonsets:忽略守护进程集(如 kube-proxy、calico,无需驱逐)
--delete-local-data:删除 emptyDir 等本地临时存储数据
--timeout:驱逐超时时间
步骤 3:登录节点执行维护操作
1 2 3 4 5 6 7
| ssh 节点IP
systemctl restart docker containerd apt update && apt upgrade -y reboot
|
步骤 4:维护完成,解除节点锁定(恢复调度)
1 2 3 4 5
| kubectl uncordon 节点名称
kubectl get nodes
|
三、特殊场景命令
场景 1:强制驱逐(Pod 无法正常迁移、卡死)
场景 2:临时维护,不想驱逐 Pod(仅禁止新调度)
只执行锁定,不执行 drain 驱逐:
1 2 3 4 5
| kubectl cordon 节点名称
kubectl uncordon 节点名称
|
场景 3:故障节点永久下线(节点彻底报废)
1 2 3 4 5 6 7 8
| kubectl cordon 故障节点
kubectl drain 故障节点 --ignore-daemonsets --force
kubectl delete node 故障节点
|
场景 4:节点重启后 Pod 无法启动,排查调度
1 2 3 4 5
| kubectl describe node 节点名称
kubectl get events --sort-by=.lastTimestamp
|
场景 5:手动驱逐单个指定 Pod
1
| kubectl delete pod pod名称 -n 命名空间
|
四、关键注意事项
- 维护禁止同时操作多个控制面节点,单节点滚动维护;
- 有StatefulSet / 本地 PV业务,提前做好数据备份;
- 集群资源不足时,
drain 会驱逐失败,需先扩容或临时压缩资源;
- 控制面节点(master)维护同样使用
cordon/drain/uncordon 一套命令。
K8s 扩缩容 Pod 常用命令
说明:单独裸 Pod 无法直接 scale,只能对控制器(Deployment/StatefulSet/ReplicaSet)扩缩容,控制器自动增减 Pod 数量。
一、伸缩 Deployment(最常用)
基础语法
1 2
| kubectl scale deployment <部署名称> -n <命名空间> --replicas=<目标副本数>
|
实操示例
1 2 3 4 5
| kubectl scale deployment web-demo -n default --replicas=5
kubectl scale deployment web-demo -n default --replicas=2
|
二、伸缩 StatefulSet(有状态服务)
1
| kubectl scale statefulset <sts名称> -n <命名空间> --replicas=<数量>
|
三、伸缩 ReplicaSet
1
| kubectl scale rs <rs名称> -n <命名空间> --replicas=<数量>
|
四、快速查看副本状态
1 2 3 4 5
| kubectl get deploy -n <命名空间>
kubectl get pods -n <命名空间> -w
|
五、HPA 自动扩缩容(长期自动)
1 2
| kubectl autoscale deployment web-demo -n default --min=2 --max=10 --cpu-percent=70
|
六、常用简写
1 2
| kubectl scale deploy web-demo -n default --replicas=3
|
补充
- 缩容会优雅删除多余 Pod,扩容会调度新建 Pod;
- 集群资源不足、污点、亲和性策略会导致扩容失败,可通过
kubectl describe pod <pod名> 排查。