K8s节点扩容集群升级教程,零基础也能全流程掌握
K8s节点扩容集群升级教程,零基础也能全流程掌握
本文围绕 K8s节点扩容集群升级教程 展开,按零基础用户也能直接照做的方式讲清楚准备条件、操作步骤、常见报错和验证方法。
无论你是刚接触 Kubernetes 还是想系统了解扩展流程,这篇文章都能帮你落地。
工欲善其事:准备工作清单
开始操作前请确认三件事:
- 集群版本:用
kubectl version --short查看当前集群版本,确保升级方向符合官方版本偏差策略(小版本差 ≤ 1)。 - 节点资源:新节点需满足最低配置(2核4G),且与现有集群网络互通(防火墙放行 6443、10250、10255 等端口)。
- 数据备份:对 etcd 做快照备份,命令示例:
etcdctl snapshot save /backup/etcd-snapshot.db。 - 软件源:新节点需配置相同的 Kubernetes 软件源(建议使用阿里云或中科大镜像)。
节点扩容实战步骤
1. 获取加入集群的 Token 和 CA Hash
在现有 Master 节点上执行:
kubeadm token create --print-join-command
系统会输出类似:
kubeadm join 192.168.1.100:6443 --token abcdef.1234567890abcdef --discovery-token-ca-cert-hash sha256:xxxx
保存整段命令,稍后在新节点执行。
2. 新节点初始化并加入集群
新节点上执行:
# 安装 kubelet kubeadm(版本与 Master 一致)
sudo apt-get install -y kubelet=1.27.3-00 kubeadm=1.27.3-00
来源 https://mirrors.aliyun.com/kubernetes/apt/
# 关闭 swap(必须)
sudo swapoff -a && sudo sed -i '/ swap / s/^\(.*\)$/#\1/' /etc/fstab
# 执行 join 命令
sudo kubeadm join 192.168.1.100:6443 --token abcdef.1234567890abcdef --discovery-token-ca-cert-hash sha256:xxxx
加入成功后返回 This node has joined the cluster。
3. 验证新节点
Master 节点上执行 kubectl get nodes,新节点状态应为 Ready。
如果显示 NotReady,检查 kubelet 日志:journalctl -u kubelet -n 50。
集群版本升级全流程
升级顺序:Master 节点 → Worker 节点。
1. 升级 Master 节点
# 排空 Master 节点(如果只有一个 Master,可以跳过 drain)
kubectl drain --ignore-daemonsets --delete-emptydir-data
# 升级 kubeadm
sudo apt-get update && sudo apt-get install -y kubeadm=1.28.0-00
# 执行升级计划
sudo kubeadm upgrade plan
# 升级集群
sudo kubeadm upgrade apply v1.28.0
# 升级 kubelet 和 kubectl
sudo apt-get install -y kubelet=1.28.0-00 kubectl=1.28.0-00
# 重启 kubelet
sudo systemctl restart kubelet
# 解除节点封锁
kubectl uncordon
2. 升级 Worker 节点(逐个操作)
# 排空 Worker
kubectl drain --ignore-daemonsets --delete-emptydir-data
# 升级 kubeadm
sudo apt-get install -y kubeadm=1.28.0-00
# 升级节点
sudo kubeadm upgrade node
# 升级 kubelet
sudo apt-get install -y kubelet=1.28.0-00
sudo systemctl restart kubelet
# 恢复调度
kubectl uncordon
注意:每个节点升级后都要运行 Pod 健康检查,可用 kubectl get pods -n kube-system 确认核心组件正常。
资深运维的避坑经验
版本号不一致导致 join 失败
新节点的 kubeadm 版本必须和集群当前版本一致。
如果不确定,先在 Master 上 kubeadm version 查看。
Token 过期
Token 默认24小时有效。
如果过期,重新用 kubeadm token create 生成。
在 Worker 节点执行 kubeadm reset 后重新 join。
升级后 Pod 无法调度
检查集群是否启用了 PodSecurityPolicy 或网络策略。
通常重启 kube-proxy 可解决:kubectl rollout restart -n kube-system daemonset kube-proxy。
磁盘空间不足
升级过程中会下载新版本镜像,建议确保 /var/lib/containerd 目录有至少5GB剩余空间。
最后检验:集群状态确认
完成 K8s节点扩容集群升级教程 所有步骤后,执行以下命令验证:
kubectl get nodes # 所有节点 Ready
kubectl version # 新版本号一致
kubectl get pods --all-namespaces -o wide # 所有 Pod 处于 Running
kubectl run test-nginx --image=nginx --replicas=3 # 部署一个测试应用
如果一切正常,表示节点扩容和集群升级全部成功。
如果你正在处理 K8s节点扩容集群升级教程,建议先按本文步骤完整执行,再根据自己的环境做微调;
遇到异常时优先回看避坑和高频问题部分。
后续可以定期执行 kubeadm upgrade plan 检查最新版本,保持集群安全稳定。