目 录CONTENT

文章目录

k8s 集群升级

管理员
2025-04-25 / 0 评论 / 1 点赞 / 16 阅读 / 0 字

Kubernetes1.27.1升级到1.30

注意事项

  1. 备份现有集群数据和配置:确保您已经备份了 etcd 数据和所有重要配置。
  2. 逐步升级:不要直接跨多个主版本进行升级,官网建议您逐步升级。例如,从 1.27 升级到 1.28,然后 1.29,依次进行。
  3. 升级前先阅读每个版本的发布说明:每个版本的升级指南和 change logs非常重要。
  4. 保持节点操作系统和Kubernetes组件版本一致:控制平面组件和节点的 kubelet / kube-proxy 都需要升级。

升级步骤

以下步骤讲解逐步骤将 Kubernetes 从 1.27.6 升级到 1.31。每一步完成后,确保集群是健康的。

升级master组件(一台一台进行)

步骤标准如升级先控制平面节点,可以逐步完成以下工作:

  1. 下载新版本的 kubeadm 和 kubectl

首先,更新 kubeadm 和 kubectl:

yum upgrade kubeadm-1.28.0 --disableexcludes=kubernetes -y
  1. 运行 kubeadm upgrade

运行 kubeadm upgrade 命令进行升级:

kubeadm upgrade apply v1.28.0 -y

该命令会拉取新版本的控制组件镜像,并更新 cluster state。

1.png

  1. 更新 kubelet 和 kubectl

升级 kubelet 和 kubectl:

yum upgrade kubelet-1.28.0 kubectl-1.28.0 --disableexcludes=kubernetes -y
  1. 重启并检查 kubelet

配置升级后,重启并检查:

systemctl daemon-reload
systemctl restart kubelet

接下来升级所有其他node节点:

  1. Drain Node

升级之前先将工作节点排空:

kubectl drain node1 --ignore-daemonsets --delete-emptydir-data
  1. 升级 kubeadm/kubelet/kubectl 版本
yum upgrade kubeadm-1.28.0 kubelet-1.28.0-0 --disableexcludes=kubernetes
systemctl daemon-reload
systemctl restart kubelet
  1. Uncordon Node

升级后恢复节点:

kubectl uncordon node1

验证集群状态

kubectl get nodes
kubectl get pods -A
kubectl cluster-info

2.png


升级到1.29版本

从29版本开始,改变k8s 源地址

mv /etc/yum.repos.d/kubernetes.repo /etc/yum.repos.d/kubernetes.repo-bk  #备份源
vim /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://pkgs.k8s.io/core:/stable:/v1.29/rpm/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://pkgs.k8s.io/core:/stable:/v1.29/rpm/repodata/repomd.xml.key
yum clean all
yum makecache -y
yum list kubeadm --showduplicates | sort -r
接下来的版本逐步进行类似步骤

继续升级到 1.29

yum upgrade kubeadm-1.29.0 --disableexcludes=kubernetes -y
kubeadm upgrade apply v1.29.0 -y
yum upgrade kubelet-1.29.0 kubectl-1.29.0 --disableexcludes=kubernetes -y
#重启 kubelet
systemctl daemon-reload
systemctl restart kubelet
# 每个节点重复以上步骤

3.png

接下来升级node节点:

  1. Drain Node

升级之前先将工作节点排空:

kubectl drain node1 --ignore-daemonsets --delete-emptydir-data
  1. 升级 kubeadm/kubelet/kubectl 版本
yum upgrade kubeadm-1.29.0 kubelet-1.29.0 --disableexcludes=kubernetes -y
systemctl daemon-reload
systemctl restart kubelet
  1. Uncordon Node

升级后恢复节点:在master操作

kubectl uncordon node1

验证集群状态

kubectl get nodes

kubectl get pods -A

kubectl cluster-info

4.png

升级到1.30版本

所有节点操作

修改k8s源

vim /etc/yum.repos.d/kubernetes.repo

[kubernetes]
name=Kubernetes
baseurl=https://pkgs.k8s.io/core:/stable:/v1.30/rpm/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://pkgs.k8s.io/core:/stable:/v1.30/rpm/repodata/repomd.xml.key
yum clean all
yum makecache -y
yum list kubeadm --showduplicates | sort -r

master节点升级1.30版本:

yum upgrade kubeadm-1.30.5 --disableexcludes=kubernetes -y
kubeadm upgrade apply v1.30.5
yum upgrade kubelet-1.30.5 kubectl-1.30.5 --disableexcludes=kubernetes -y
# 重启 kubelet
systemctl daemon-reload
systemctl restart kubelet

5.png

接来升级node节点:

  1. Drain Node

升级之前先将工作节点排空:

kubectl drain node1 --ignore-daemonsets --delete-emptydir-data
  1. 升级 kubeadm/kubelet/kubectl 版本
yum upgrade kubeadm-1.30.5 kubelet-1.30.5 --disableexcludes=kubernetes -y
systemctl daemon-reload
systemctl restart kubelet
  1. Uncordon Node

升级后恢复节点:在master操作

kubectl uncordon node1

验证集群状态

kubectl get nodes
kubectl get pods -A
kubectl cluster-info

6.png

升级到1.31版本

所有节点操作
修改k8s源
vim /etc/yum.repos.d/kubernetes.repo

[kubernetes]
name=Kubernetes
baseurl=https://pkgs.k8s.io/core:/stable:/v1.31/rpm/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://pkgs.k8s.io/core:/stable:/v1.31/rpm/repodata/repomd.xml.key
yum clean all
yum makecache -y
yum list kubeadm --showduplicates | sort -r

master节点升级1.30版本:

yum upgrade kubeadm-1.31.0 --disableexcludes=kubernetes -y
kubeadm upgrade apply v1.31.0 -y
yum upgrade kubelet-1.31.0 kubectl-1.31.0 --disableexcludes=kubernetes
# 重启 kubelet
systemctl daemon-reload
systemctl restart kubelet
# 每个节点重复以上步骤

7.png

接来升级node节点:

  1. Drain Node

升级之前先将工作节点排空:

kubectl drain node1 --ignore-daemonsets --delete-emptydir-data

升级工作节点

继续逐个升级到目标版本:

yum upgrade kubeadm-1.31.0 kubelet-1.31.0 kubectl-1.31.0 --disableexcludes=kubernetes
systemctl daemon-reload
systemctl restart kubelet
  1. Uncordon Node

升级后恢复节点:

kubectl uncordon node1

验证集群状态

升级完成后,检查集群健康状态:

kubectl get nodes
kubectl get pods -A
kubectl cluster-info

8.png

确保所有节点和组件均运行正常。必要时检查具体组件日志和配置项,确保无遗漏问题和事项。

1
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin

评论区