【Kubernetes】Kubernetes 集群升级 v1.30.1 -> v1.31.0

0 阅读2分钟

集群升级是 Kubernetes 中一个常见且重要的挑战,本文将深入探讨如何将集群从版本 1.30.1 升级至 1.31.0,希望对您的 K8s 学习之旅有所帮助,一起来看看吧!

  • 操作系统:CentOS Linux 7 (Core)
  • Containerd:1.6.33
  • Kubernetes:1.30.1 - 1.31.0

1、升级 control plane nodes

1.1、kubeadm 升级

a、查看当前节点状态

# 查看当前节点状态及版本,kubeadm\kubelet\kubectl 版本
# 此处举例升级一个控制节点
kubectl get node
kubeadm version
kubelet version
kubectl version

b、更改 Kubernetes 软件包仓库

# 查看当前配置为 1.30 的 Kubernetes 软件包仓库
cat /etc/yum.repos.d/kubernetes.repo
yum list kubeadm --showduplicates
 
# 备份原有配置
mv /etc/yum.repos.d/kubernetes.repo /etc/yum.repos.d/kubernetes.repo.bak
 
# 更改 Kubernetes 软件包仓库,此处配置阿里的源
cat <<EOF | tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.31/rpm/
enabled=1
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.31/rpm/repodata/repomd.xml.key
EOF
 
cat /etc/yum.repos.d/kubernetes.repo

c、升级 kubeadm

# 添加新 .repo 文件后,清理 YUM 的缓存,以便可识别新的软件源
yum clean all
 
# 升级 kubeadm
yum install -y kubeadm-1.31.0
 
# 验证下载操作正常,并且 kubeadm 版本正确
kubeadm version
 
# 验证升级计划
kubeadm upgrade plan
 
# 运行命令,升级到的目标版本
kubeadm upgrade apply v1.31.0
# (可选)若不升级 etcd,选择下方命令
kubeadm upgrade apply v1.31.0 --etcd-upgrade=false
 
# 注意:
# 其他控制节点,使用 kubeadm upgrade node,不使用 kubeadm upgrade apply 命令
# 并且不需要执行 kubeadm upgrade plan 和更新 CNI 驱动插件的操作

1.2 kubelet、kubectl 升级

a、升级 kubelet、kubectl

# 将节点标记为不可调度并驱逐所有负载
kubectl get node
kubectl drain master --ignore-daemonsets
 
# 升级 kubelet 和 kubectl
yum install -y kubelet-1.31.0 kubectl-1.31.0
 
# 重启 kubelet
systemctl daemon-reload 
systemctl restart kubelet
 
# 验证 kubelet、kubectl 升级成功
kubelet --version 
kubectl version
 
# 解除 master 节点的保护,恢复调度
kubectl uncordon master
 
# 查看 master 状态为 ready,所有 Pod 状态 runnig
kubectl get nodes
kubectl get pod -A

2、升级 Linux nodes

### 升级工作节点 ###
# 更改 Kubernetes 软件包仓库,可见 1->1.1->b 部分内容
 
# 升级 kubeadm
yum install -y kubeadm-1.31.0
 
# 执行 kubeadm upgrade,升级本地的 kubelet 配置
kubeadm upgrade node
 
# 将节点标记为不可调度并驱逐所有负载,准备节点的维护
# 在控制平面节点上执行此命令,<node-to-drain> 为正腾空的节点名称
kubectl drain <node-to-drain> --ignore-daemonsets
 
# 升级 kubelet 和 kubectl
yum install -y kubelet-1.31.0 kubectl-1.31.0
 
# 重启 kubelet
systemctl daemon-reload
systemctl restart kubelet
 
# 取消对节点的保护
# 在控制平面节点上执行此命令,<node-to-uncordon> 为节点名称
kubectl uncordon <node-to-uncordon>