K8s 集群节点标准维护流程(完整命令 + 操作步骤)

K8s 集群节点标准维护流程(完整命令 + 操作步骤)

适用于 Kubeadm 部署标准集群,包含日常节点维护、节点重启 / 升级、故障节点下线、节点恢复全流程,生产环境直接可用。

一、前置检查(维护前必做)

1
2
3
4
5
6
7
8
# 1. 查看集群所有节点状态
kubectl get nodes -o wide

# 2. 查看目标节点上的所有 Pod
kubectl get pods -o wide --field-selector spec.nodeName=节点名称

# 3. 查看节点污点、调度状态
kubectl describe node 节点名称 | grep -E "Unschedulable|Taints"

二、节点维护核心流程(正常维护:升级 / 补丁 / 硬件操作)

步骤 1:设置节点不可调度(新 Pod 不再调度至该节点)

1
kubectl cordon 节点名称
  • 作用:仅禁止新 Pod 调度,不驱逐现有 Pod
  • 验证:kubectl get nodes 节点状态标记 SchedulingDisabled

步骤 2:驱逐节点上所有业务 Pod(平滑迁移至其他节点)

1
2
3
4
5
# 标准生产驱逐命令(忽略DaemonSet、删除本地临时数据、安全驱逐)
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 # Debian 系统补丁升级
reboot # 节点重启

步骤 4:维护完成,解除节点锁定(恢复调度)

1
2
3
4
5
# 退出节点回到管理节点,恢复调度
kubectl uncordon 节点名称

# 验证:节点恢复 Ready 可调度状态
kubectl get nodes

三、特殊场景命令

场景 1:强制驱逐(Pod 无法正常迁移、卡死)

1
kubectl drain 节点名称 --ignore-daemonsets --delete-local-data --force

场景 2:临时维护,不想驱逐 Pod(仅禁止新调度)

只执行锁定,不执行 drain 驱逐:

1
2
3
4
5
# 锁定
kubectl cordon 节点名称

# 维护完解锁
kubectl uncordon 节点名称

场景 3:故障节点永久下线(节点彻底报废)

1
2
3
4
5
6
7
8
# 1. 先锁定节点
kubectl cordon 故障节点

# 2. 强制驱逐残留Pod
kubectl drain 故障节点 --ignore-daemonsets --force

# 3. 集群中删除该节点
kubectl delete node 故障节点

场景 4:节点重启后 Pod 无法启动,排查调度

1
2
3
4
5
# 查看节点事件
kubectl describe node 节点名称

# 查看Pod驱逐/调度失败事件
kubectl get events --sort-by=.lastTimestamp

场景 5:手动驱逐单个指定 Pod

1
kubectl delete pod pod名称 -n 命名空间

四、关键注意事项

  1. 维护禁止同时操作多个控制面节点,单节点滚动维护;
  2. StatefulSet / 本地 PV业务,提前做好数据备份;
  3. 集群资源不足时,drain 会驱逐失败,需先扩容或临时压缩资源;
  4. 控制面节点(master)维护同样使用 cordon/drain/uncordon 一套命令。

K8s 扩缩容 Pod 常用命令

说明:单独裸 Pod 无法直接 scale,只能对控制器(Deployment/StatefulSet/ReplicaSet)扩缩容,控制器自动增减 Pod 数量。

一、伸缩 Deployment(最常用)

基础语法

1
2
# 扩容/缩容指定 Deployment
kubectl scale deployment <部署名称> -n <命名空间> --replicas=<目标副本数>

实操示例

1
2
3
4
5
# 扩容到 5 个 Pod
kubectl scale deployment web-demo -n default --replicas=5

# 缩容到 2 个 Pod
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
# 查看当前副本数、Pod数
kubectl get deploy -n <命名空间>

# 实时查看Pod变化
kubectl get pods -n <命名空间> -w

五、HPA 自动扩缩容(长期自动)

1
2
# 基于CPU自动伸缩,最小2副本、最大10副本
kubectl autoscale deployment web-demo -n default --min=2 --max=10 --cpu-percent=70

六、常用简写

1
2
# deploy 为 deployment 简写
kubectl scale deploy web-demo -n default --replicas=3

补充

  • 缩容会优雅删除多余 Pod,扩容会调度新建 Pod;
  • 集群资源不足、污点、亲和性策略会导致扩容失败,可通过 kubectl describe pod <pod名> 排查。

K8s 集群节点标准维护流程(完整命令 + 操作步骤)
https://blog.t-ao.cn/2026/06/11/K8s 集群节点标准维护流程(完整命令 + 操作步骤)/
作者
TAO
发布于
2026年6月11日
许可协议