kubeadm upgrade 是 Kubernetes 中用于升级集群的命令,适用于控制平面节点和工作节点,可以帮助用户平滑地升级控制平面组件(如 kube-apiserver、kube-controller-manager 和 kube-scheduler)以及对应的组件,一起来看看如何使用吧!
1、使用场景
- Kubernetes 版本升级: 需要将 Kubernetes 集群升级到新的稳定版本时
- Bug 修复与安全更新: 升级到新版本以获取最新的功能、修复已知的 bug 或安全漏洞
- 新特性的使用: 某些新版本可能引入了重要的新特性,迫使用户进行升级以利用这些特性
2、常见参数
- kubeadm upgrade plan:检查可用的升级版本
- kubeadm upgrade apply [version]:升级控制平面节点到指定版本
- kubeadm upgrade node:升级工作节点
- --config:指定配置文件路径
- --ignore-preflight-errors:忽略预检错误
- --certificate-renewal:是否更新证书(默认 true)
- --etcd-upgrade:是否升级 etcd(默认 true)
- --dry-run:模拟升级过程,不实际执行
3、示例
## 升级控制节点 master 版本到 1.30.1(Ubuntu-22.04)
# 腾空节点
kubectl cordon master
kubectl drain master --ignore=daemonsets
# 查看需要升级到的 kubeadm 版本
apt-get update
apt-cache show kubeadm | grep 1.30.1
# 下载需要升级版本的 kubeadm
apt-mark unhold kubeadm
apt-get install kubeadm=1.30.1-00 -y
apt-mark hold kubeadm
# 验证升级后的版本
kubeadm version
# 验证升级计划
kubeadm upgrade plan
# 验证成功后,执行下方命令升级,使用 --etcd-upgrade=false 参数不升级 etcd
kubeadm upgrade apply v1.30.1 --etcd-upgrade=false
# 升级 kubelet、kubectl
apt-mark unhold kubelet kubectl
apt-get update && sudo apt-get install -y kubelet=1.30.1-00 kubectl=1.30.1-00
apt-mark hold kubelet kubectl
# 重启 kubelet
systemctl daemon-reload
systemctl restart kubelet
# 验证 kubelet、kubectl 升级成功
kubelet --version
kubectl version
# 解除 master 节点的保护,恢复调度
kubectl uncordon master
# 查看 master 状态为 ready
kubectl get nodes -o wide