Kubernets集群管理-kubernets集群升级
文章目录
- Kubernets集群管理-kubernets集群升级
- 前言
- 一、检查kubernets各组件当前版本
- 二、升级控制节点平面kubernets版本
- 1.使用操作系统的包管理器找到最新的版本
- 2.升级kubeadm组件版本
- 3.升级kubectl和kubelet 组件
- 总结
前言
`
本文介绍如何将 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 组件
- 升级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
- 验证集群状态
[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 ,升级成功!
总结
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)