集群版本升级
集群版本升级是 Kubernetes 生命周期管理的重要环节,涉及 Master 节点和 Worker 节点的升级。升级过程需要谨慎规划,以确保集群的稳定性和应用的连续性。
升级架构流程
graph TD
subgraph "升级前"
API1[API Server v1.24]
KUBE1[kubelet v1.24]
PROXY1[kube-proxy v1.24]
end
subgraph "升级过程"
CHECK[检查兼容性]
BACKUP[备份集群]
MASTERS[升级 Master 节点]
WORKERS[升级 Worker 节点]
end
subgraph "升级后"
API2[API Server v1.25]
KUBE2[kubelet v1.25]
PROXY2[kube-proxy v1.25]
end
API1 --> CHECK
KUBE1 --> CHECK
CHECK --> BACKUP
BACKUP --> MASTERS
MASTERS --> WORKERS
MASTERS --> API2
WORKERS --> KUBE2
WORKERS --> PROXY2
升级策略
sync_alt
蓝绿升级
创建全新集群,将流量切换到新集群
linear_scale
滚动升级
逐个节点升级,保持服务连续性
使用 kubeadm 进行升级
# 检查可升级版本
sudo kubeadm upgrade plan
# 升级 Master 节点
sudo kubeadm upgrade apply v1.25.0
# 升级 kubectl 和 kubelet
sudo apt-mark unhold kubectl kubelet kubeadm
sudo apt-get update
sudo apt-get install -y kubectl=1.25.0-00 kubelet=1.25.0-00 kubeadm=1.25.0-00
sudo apt-mark hold kubectl kubelet kubeadm
# 重启 kubelet 服务
sudo systemctl daemon-reload
sudo systemctl restart kubelet
# 升级 Worker 节点 (在每个 Worker 节点执行)
sudo kubeadm upgrade node
云提供商升级
在云平台上升级集群通常更简单,但需要遵循特定流程:
# AWS EKS 升级
aws eks update-cluster-version --name my-cluster --kubernetes-version 1.25
# GCP GKE 升级
gcloud container clusters upgrade my-cluster --master --zone=us-central1-a
# Azure AKS 升级
az aks upgrade --resource-group myResourceGroup --name myAKSCluster --kubernetes-version 1.25.0
升级注意事项
| 事项 | 说明 | 建议 |
|---|---|---|
| 版本兼容性 | 确保应用与新版本兼容 | 在测试环境验证 |
| 备份策略 | 升级前备份集群状态 | 使用 Velero 或其他备份工具 |
| API 废弃 | 检查使用的 API 版本是否被废弃 | 使用 kubectl convert 迁移资源 |
| 节点维护 | 避免同时升级所有节点 | 使用节点池分批升级 |
| 时间窗口 | 选择业务低峰期进行升级 | 计划维护窗口 |
升级后验证
升级完成后需要验证集群功能是否正常:
- 检查所有节点状态:kubectl get nodes
- 验证核心组件运行状态
- 确认应用正常运行
- 测试集群功能(如调度、网络、存储)