Kubernets集群管理-kubernets集群升级


前言

`
本文介绍如何将 kubeadm 创建的 Kubernetes 集群从 1.24.x 版本 升级到 1.25.x 版本以及从 1.25.x 升级到 1.25.y(其中 y > x)。略过次版本号的升级是 不被支持的。


提示:以下是本篇文章正文内容,下面案例可供参考

一、检查kubernets各组件当前版本

检查控制节点平面版本

[root@master1 manifests]# kubectl get node
NAME      STATUS   ROLES                  AGE     VERSION
master1   Ready    control-plane,master   2d23h   v1.20.15

检查kubeadm 组件版本:

[root@master1 manifests]# kubeadm version
kubeadm version: &version.Info{Major:"1", Minor:"20", GitVersion:"v1.20.15", GitCommit:"8f1e5bf0b9729a899b8df86249b56e2c74aebc55", GitTreeState:"clean", BuildDate:"2022-01-19T17:26:37Z", GoVersion:"go1.15.15", Compiler:"gc", Platform:"linux/amd64"}

检查kubectl和kubelet组件版本:

[root@master1 manifests]# kubectl version
Client Version: version.Info{Major:"1", Minor:"20", GitVersion:"v1.20.15", GitCommit:"8f1e5bf0b9729a899b8df86249b56e2c74aebc55", GitTreeState:"clean", BuildDate:"2022-01-19T17:27:39Z", GoVersion:"go1.15.15", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"20", GitVersion:"v1.20.15", GitCommit:"8f1e5bf0b9729a899b8df86249b56e2c74aebc55", GitTreeState:"clean", BuildDate:"2022-01-19T17:23:01Z", GoVersion:"go1.15.15", Compiler:"gc", Platform:"linux/amd64"}
[root@master1 manifests]# kubelet --version
Kubernetes v1.20.15

由此可知我的Kubernetes集群版本是 v1.20.15

二、升级控制节点平面kubernets版本

1.使用操作系统的包管理器找到最新的版本

代码如下(示例):

[root@master1 manifests]# yum list --showduplicates kubeadm --disableexcludes=kubernetes
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
Installed Packages
kubeadm.x86_64                                                                                       1.20.15-0                                                                                        @kubernetes
Available Packages
。。。#省略此版本之前的各种版本。

kubeadm.x86_64                                                                                       1.20.0-0                                                                                         kubernetes
kubeadm.x86_64                                                                                       1.20.1-0                                                                                         kubernetes
kubeadm.x86_64                                                                                       1.20.2-0                                                                                         kubernetes
kubeadm.x86_64                                                                                       1.20.4-0                                                                                         kubernetes
kubeadm.x86_64                                                                                       1.20.5-0                                                                                         kubernetes
kubeadm.x86_64                                                                                       1.20.6-0                                                                                         kubernetes
kubeadm.x86_64                                                                                       1.20.7-0                                                                                         kubernetes
kubeadm.x86_64                                                                                       1.20.8-0                                                                                         kubernetes
kubeadm.x86_64                                                                                       1.20.9-0                                                                                         kubernetes
kubeadm.x86_64                                                                                       1.20.10-0                                                                                        kubernetes
kubeadm.x86_64                                                                                       1.20.11-0                                                                                        kubernetes
kubeadm.x86_64                                                                                       1.20.12-0                                                                                        kubernetes
kubeadm.x86_64                                                                                       1.20.13-0                                                                                        kubernetes
kubeadm.x86_64                                                                                       1.20.14-0                                                                                        kubernetes
kubeadm.x86_64                                                                                       1.20.15-0                                                                                        kubernetes
kubeadm.x86_64                                                                                       1.21.0-0                                                                                         kubernetes
kubeadm.x86_64                                                                                       1.21.1-0                                                                                         kubernetes
kubeadm.x86_64                                                                                       1.21.2-0                                                                                         kubernetes
kubeadm.x86_64                                                                                       1.21.3-0                                                                                         kubernetes
kubeadm.x86_64                                                                                       1.21.4-0                                                                                         kubernetes
kubeadm.x86_64                                                                                       1.21.5-0                                                                                         kubernetes
kubeadm.x86_64                                                                                       1.21.6-0                                                                                         kubernetes
kubeadm.x86_64                                                                                       1.21.7-0                                                                                         kubernetes
kubeadm.x86_64                                                                                       1.21.8-0                                                                                         kubernetes
kubeadm.x86_64                                                                                       1.21.9-0                                                                                         kubernetes
kubeadm.x86_64                                                                                       1.21.10-0                                                                                        kubernetes
kubeadm.x86_64                                                                                       1.21.11-0                                                                                        kubernetes
kubeadm.x86_64                                                                                       1.21.12-0                                                                                        kubernetes
kubeadm.x86_64                                                                                       1.21.13-0                                                                                        kubernetes
kubeadm.x86_64                                                                                       1.21.14-0                                                                                        kubernetes
kubeadm.x86_64                                                                                       1.22.0-0                                                                                         kubernetes
kubeadm.x86_64                                                                                       1.22.1-0                                                                                         kubernetes
kubeadm.x86_64                                                                                       1.22.2-0                                                                                         kubernetes
kubeadm.x86_64                                                                                       1.22.3-0                                                                                         kubernetes
kubeadm.x86_64                                                                                       1.22.4-0                                                                                         kubernetes
kubeadm.x86_64                                                                                       1.22.5-0                                                                                         kubernetes
kubeadm.x86_64                                                                                       1.22.6-0                                                                                         kubernetes
kubeadm.x86_64                                                                                       1.22.7-0                                                                                         kubernetes
kubeadm.x86_64                                                                                       1.22.8-0                                                                                         kubernetes
kubeadm.x86_64                                                                                       1.22.9-0                                                                                         kubernetes
kubeadm.x86_64                                                                                       1.22.10-0                                                                                        kubernetes
kubeadm.x86_64                                                                                       1.22.11-0                                                                                        kubernetes
kubeadm.x86_64                                                                                       1.22.12-0                                                                                        kubernetes
kubeadm.x86_64                                                                                       1.22.13-0                                                                                        kubernetes
kubeadm.x86_64                                                                                       1.23.0-0                                                                                         kubernetes
kubeadm.x86_64                                                                                       1.23.1-0                                                                                         kubernetes
kubeadm.x86_64                                                                                       1.23.2-0                                                                                         kubernetes
kubeadm.x86_64                                                                                       1.23.3-0                                                                                         kubernetes
kubeadm.x86_64                                                                                       1.23.4-0                                                                                         kubernetes
kubeadm.x86_64                                                                                       1.23.5-0                                                                                         kubernetes
kubeadm.x86_64                                                                                       1.23.6-0                                                                                         kubernetes
kubeadm.x86_64                                                                                       1.23.7-0                                                                                         kubernetes
kubeadm.x86_64                                                                                       1.23.8-0                                                                                         kubernetes
kubeadm.x86_64                                                                                       1.23.9-0                                                                                         kubernetes
kubeadm.x86_64                                                                                       1.23.10-0                                                                                        kubernetes
kubeadm.x86_64                                                                                       1.24.0-0                                                                                         kubernetes
kubeadm.x86_64                                                                                       1.24.1-0                                                                                         kubernetes
kubeadm.x86_64                                                                                       1.24.2-0                                                                                         kubernetes
kubeadm.x86_64                                                                                       1.24.3-0                                                                                         kubernetes
kubeadm.x86_64                                                                                       1.24.4-0                                                                                         kubernetes
kubeadm.x86_64                                                                                       1.25.0-0                                                                                         kubernetes

2.升级kubeadm组件版本

由于我的Kubernetes集群版本是 v1.20.15,按照规则可以升级为 v1.21.15(版本库内没有).所以升级为可升级到的最新版本 v1.21.14,大家根据自己的情况自由调整。
以下是kubeadm的升级过程,很简单。
使用新版本包替换旧版本

[root@master1 manifests]# yum install -y kubeadm-1.21.14-0 --disableexcludes=kubernetes
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
Resolving Dependencies
--> Running transaction check
---> Package kubeadm.x86_64 0:1.21.0-0 will be updated
---> Package kubeadm.x86_64 0:1.21.14-0 will be an update
--> Finished Dependency Resolution

Dependencies Resolved

=================================================================================================================================================================================================================
 Package                                          Arch                                            Version                                              Repository                                           Size
=================================================================================================================================================================================================================
Updating:
 kubeadm                                          x86_64                                          1.21.14-0                                            kubernetes                                          9.1 M

Transaction Summary
=================================================================================================================================================================================================================
Upgrade  1 Package

Total download size: 9.1 M
Downloading packages:
No Presto metadata available for kubernetes
405062026207cd61826786f22f6f2d4f26bf08e510a51d61936629cc11d6fdb5-kubeadm-1.21.14-0.x86_64.rpm                                                                                             | 9.1 MB  00:01:40
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Updating   : kubeadm-1.21.14-0.x86_64                                                                                                                                                                      1/2
  Cleanup    : kubeadm-1.21.0-0.x86_64                                                                                                                                                                       2/2
  Verifying  : kubeadm-1.21.14-0.x86_64                                                                                                                                                                      1/2
  Verifying  : kubeadm-1.21.0-0.x86_64                                                                                                                                                                       2/2

Updated:
  kubeadm.x86_64 0:1.21.14-0

Complete!

检查替换后的kubeadm版本。

[root@master1 manifests]# kubeadm version
kubeadm version: &version.Info{Major:"1", Minor:"21", GitVersion:"v1.21.14", GitCommit:"0f77da5bd4809927e15d1658fb4aa8f13ad890a5", GitTreeState:"clean", BuildDate:"2022-06-15T14:16:13Z", GoVersion:"go1.16.15", Compiler:"gc", Platform:"linux/amd64"}

到这一步读取的版本号与目标版本号相同说明软件包替换成功!

升级前验证升级计划:

[root@master1 manifests]# kubeadm upgrade plan
[upgrade/config] Making sure the configuration is correct:
[upgrade/config] Reading configuration from the cluster...
[upgrade/config] FYI: You can look at this config file with 'kubectl -n kube-system get cm kubeadm-config -o yaml'
[preflight] Running pre-flight checks.
[upgrade] Running cluster health checks
[upgrade] Fetching available versions to upgrade to
[upgrade/versions] Cluster version: v1.20.15
[upgrade/versions] kubeadm version: v1.21.14
I0909 17:02:21.727350   11929 version.go:254] remote version is much newer: v1.25.0; falling back to: stable-1.21
[upgrade/versions] Target version: v1.21.14
[upgrade/versions] Latest version in the v1.20 series: v1.20.15

Components that must be upgraded manually after you have upgraded the control plane with 'kubeadm upgrade apply':
COMPONENT   CURRENT        TARGET
kubelet     1 x v1.20.15   v1.21.14

Upgrade to the latest stable version:

COMPONENT                 CURRENT    TARGET
kube-apiserver            v1.20.15   v1.21.14
kube-controller-manager   v1.20.15   v1.21.14
kube-scheduler            v1.20.15   v1.21.14
kube-proxy                v1.20.15   v1.21.14
CoreDNS                   1.7.0      v1.8.0
etcd                      3.4.13-0   3.4.13-0

You can now apply the upgrade by executing the following command:

        kubeadm upgrade apply v1.21.14

_____________________________________________________________________


The table below shows the current state of component configs as understood by this version of kubeadm.
Configs that have a "yes" mark in the "MANUAL UPGRADE REQUIRED" column require manual config upgrade or
resetting to kubeadm defaults before a successful upgrade can be performed. The version to manually
upgrade to is denoted in the "PREFERRED VERSION" column.

API GROUP                 CURRENT VERSION   PREFERRED VERSION   MANUAL UPGRADE REQUIRED
kubeproxy.config.k8s.io   v1alpha1          v1alpha1            no
kubelet.config.k8s.io     v1beta1           v1beta1             no
_____________________________________________________________________

查看提示,验证成功可以允许升级至 v1.21.14。
开始升级kubeadm.
[root@master1 manifests]# sudo kubeadm upgrade apply v1.21.14
[upgrade/config] Making sure the configuration is correct:
[upgrade/config] Reading configuration from the cluster…
[upgrade/config] FYI: You can look at this config file with ‘kubectl -n kube-system get cm kubeadm-config -o yaml’
[preflight] Running pre-flight checks.
[upgrade] Running cluster health checks
[upgrade/version] You have chosen to change the cluster version to “v1.21.14”
[upgrade/versions] Cluster version: v1.20.15
[upgrade/versions] kubeadm version: v1.21.14
。。。省略中间打印过程,升级成功后最后提示如下
[upgrade/successful] SUCCESS! Your cluster was upgraded to “v1.21.14”. Enjoy!

[upgrade/kubelet] Now that your control plane is upgraded, please proceed with upgrading your kubelets if you haven’t already done so.
升级完控制节点的kubeadm组件后就可以升级其他工作节点的kubeadm组件,过程参考控制节点升级过程
但是注意:
对于其它控制面节点
与第一个控制面节点相同,但是使用:
sudo kubeadm upgrade node

以下开始升级kubectl和kubelet 组件。

3.升级kubectl和kubelet 组件

  1. 升级kubectl和kubelet组件
[root@master1 manifests]# yum install -y kubelet-1.21.14 kubectl-1.21.14 --disableexcludes=kubernetes
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
Resolving Dependencies
--> Running transaction check
---> Package kubectl.x86_64 0:1.20.15-0 will be updated
---> Package kubectl.x86_64 0:1.21.14-0 will be an update
---> Package kubelet.x86_64 0:1.20.15-0 will be updated
---> Package kubelet.x86_64 0:1.21.14-0 will be an update
--> Finished Dependency Resolution

Dependencies Resolved

=================================================================================================================================================================================================================
 Package                                          Arch                                            Version                                              Repository                                           Size
=================================================================================================================================================================================================================
Updating:
 kubectl                                          x86_64                                          1.21.14-0                                            kubernetes                                          9.6 M
 kubelet                                          x86_64                                          1.21.14-0                                            kubernetes                                           20 M

Transaction Summary
=================================================================================================================================================================================================================
Upgrade  2 Packages

Total download size: 30 M
Downloading packages:
No Presto metadata available for kubernetes
(1/2): 91a0859e8765b2562d0c1c60c55c11fd9f85717365ea07d40ee519090650faf2-kubectl-1.21.14-0.x86_64.rpm                                                                                      | 9.6 MB  00:01:13
(2/2): 6894556cf9a7f88e6289937f3199fbdf4748d7411deab761a5499d1372df3c51-kubelet-1.21.14-0.x86_64.rpm                                                                                      |  20 MB  00:02:36
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total                                                                                                                                                                            195 kB/s |  30 MB  00:02:36
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Updating   : kubectl-1.21.14-0.x86_64                                                                                                                                                                      1/4
  Updating   : kubelet-1.21.14-0.x86_64                                                                                                                                                                      2/4
  Cleanup    : kubectl-1.20.15-0.x86_64                                                                                                                                                                      3/4
  Cleanup    : kubelet-1.20.15-0.x86_64                                                                                                                                                                      4/4
  Verifying  : kubelet-1.21.14-0.x86_64                                                                                                                                                                      1/4
  Verifying  : kubectl-1.21.14-0.x86_64                                                                                                                                                                      2/4
  Verifying  : kubelet-1.20.15-0.x86_64                                                                                                                                                                      3/4
  Verifying  : kubectl-1.20.15-0.x86_64                                                                                                                                                                      4/4

Updated:
  kubectl.x86_64 0:1.21.14-0                                                                              kubelet.x86_64 0:1.21.14-0

Complete!

重启 kubelet:

[root@master1 ~]# sudo systemctl daemon-reload && sudo systemctl restart kubelet
  1. 验证集群状态
[root@master1 ~]# kubectl get nodes
NAME      STATUS   ROLES                  AGE    VERSION
master1   Ready    control-plane,master   3d1h   v1.21.14
[root@master1 ~]# kubectl get cs
Warning: v1 ComponentStatus is deprecated in v1.19+
NAME                 STATUS      MESSAGE                                                                                       ERROR
controller-manager   Unhealthy   Get "http://127.0.0.1:10252/healthz": dial tcp 127.0.0.1:10252: connect: connection refused
scheduler            Unhealthy   Get "http://127.0.0.1:10251/healthz": dial tcp 127.0.0.1:10251: connect: connection refused
etcd-0               Healthy     {"health":"true"}

出现”Unhealthy”请看我的另一篇博文解决。
https://blog.csdn.net/weixin_42300866/article/details/126744638?spm=1001.2014.3001.5501

[root@master1 ~]# kubectl get pod -A
NAMESPACE                      NAME                                               READY   STATUS    RESTARTS   AGE
default                        nfs-client-provisioner-7f7dd67d7b-fvbbb            1/1     Running   3          26h
default                        web-server                                         1/1     Running   0          23h
kube-system                    calico-kube-controllers-56c7cdffc6-8h7s9           1/1     Running   0          3d
kube-system                    calico-node-tmdnb                                  1/1     Running   0          3d
kube-system                    coredns-59d64cd4d4-55j56                           1/1     Running   0          29m
kube-system                    coredns-59d64cd4d4-sh8d6                           1/1     Running   0          29m
kube-system                    etcd-master1                                       1/1     Running   0          5m36s
kube-system                    kube-apiserver-master1                             1/1     Running   0          5m36s
kube-system                    kube-controller-manager-master1                    1/1     Running   0          5m36s
kube-system                    kube-proxy-q48k4                                   1/1     Running   0          29m
kube-system                    kube-scheduler-master1                             1/1     Running   0          5m36s
kube-system                    snapshot-controller-0                              1/1     Running   0          26h
kubesphere-controls-system     default-http-backend-76d9fb4bb7-rs4r6              1/1     Running   0          26h
kubesphere-controls-system     kubectl-admin-69b8ff6d54-rngng                     1/1     Running   0          26h
kubesphere-monitoring-system   alertmanager-main-0                                2/2     Running   0          29m
kubesphere-monitoring-system   kube-state-metrics-7bdc7484cf-tm844                3/3     Running   0          29m
kubesphere-monitoring-system   node-exporter-r4fkd                                2/2     Running   0          26h
kubesphere-monitoring-system   notification-manager-deployment-78664576cb-mk6rb   2/2     Running   0          26h
kubesphere-monitoring-system   notification-manager-operator-7d44854f54-4wnsj     2/2     Running   3          26h
kubesphere-monitoring-system   prometheus-k8s-0                                   2/2     Running   0          26h
kubesphere-monitoring-system   prometheus-operator-8955bbd98-scmdh                2/2     Running   0          26h
kubesphere-system              ks-apiserver-76dcc6489f-f4z7j                      1/1     Running   0          26h
kubesphere-system              ks-console-6c86fdfb57-8lbnn                        1/1     Running   0          26h
kubesphere-system              ks-controller-manager-6ccc644c48-pm9vv             1/1     Running   1          26h
kubesphere-system              ks-installer-6976cf49f5-pf6w8                      1/1     Running   0          30h

查看一下各组件版本:

[root@master1 ~]# kubeadm version
kubeadm version: &version.Info{Major:"1", Minor:"21", GitVersion:"v1.21.14", GitCommit:"0f77da5bd4809927e15d1658fb4aa8f13ad890a5", GitTreeState:"clean", BuildDate:"2022-06-15T14:16:13Z", GoVersion:"go1.16.15", Compiler:"gc", Platform:"linux/amd64"}
[root@master1 ~]# kubectl version
Client Version: version.Info{Major:"1", Minor:"21", GitVersion:"v1.21.14", GitCommit:"0f77da5bd4809927e15d1658fb4aa8f13ad890a5", GitTreeState:"clean", BuildDate:"2022-06-15T14:17:29Z", GoVersion:"go1.16.15", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"21", GitVersion:"v1.21.14", GitCommit:"0f77da5bd4809927e15d1658fb4aa8f13ad890a5", GitTreeState:"clean", BuildDate:"2022-06-15T14:11:36Z", GoVersion:"go1.16.15", Compiler:"gc", Platform:"linux/amd64"}
[root@master1 ~]# kubelet --version
Kubernetes v1.21.14

各组件版本均为 v1.21.14 ,升级成功!

总结


版权声明:本文为weixin_42300866原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/weixin_42300866/article/details/126784720