1 查找最新版本号:
yum list --showduplicates kubeadm
[root@k8s-master-1 ~]# yum list --showduplicates kubeadm | grep 1.25
kubeadm.x86_64 1.25.0-0 @kubernetes
kubeadm.x86_64 1.25.0-0 kubernetes
kubeadm.x86_64 1.25.1-0 kubernetes
kubeadm.x86_64 1.25.2-0 kubernetes
kubeadm.x86_64 1.25.3-0 kubernetes
kubeadm.x86_64 1.25.4-0 kubernetes
kubeadm.x86_64 1.25.5-0 kubernetes
2 升级kubeadm
yum install -y kubeadm-1.25.1-0
3 驱逐Node上的pod,并设置为不可调度(有啥提示参数要加的都加上):
kubectl drain k8s-master-1 --ignore-daemonsets
[root@k8s-master-1 ~]# kubectl get node -o wide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
k8s-master-1 Ready,SchedulingDisabled control-plane 39d v1.25.0 192.168.3.101 <none> CentOS Linux 7 (Core) 3.10.0-1160.el7.x86_64 docker://20.10.21
k8s-node-1 Ready <none> 39d v1.25.0 192.168.3.104 <none> CentOS Linux 7 (Core) 3.10.0-1160.el7.x86_64 docker://20.10.21
k8s-node-2 Ready <none> 39d v1.25.0 192.168.3.105 <none> CentOS Linux 7 (Core) 3.10.0-1160.el7.x86_64 docker://20.10.21
k8s-node-3 Ready <none> 39d v1.25.0 192.168.3.106 <none> CentOS Linux 7 (Core) 3.10.0-1160.el7.x86_64 docker://20.10.21
4 检查集群是否可以升级,并获取可以升级的版本(直接升级1.25的最新版本 可以忽略版本号,如果是升级到次新版本 主要要加上版本号):
kubeadm upgrade plan 1.25.1-0
[root@k8s-master-1 ~]# [root@k8s-master-1 ~]# kubeadm upgrade plan 1.25.1-0
[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.25.0
[upgrade/versions] kubeadm version: v1.25.1
[upgrade/versions] Target version: 1.25.1-0
[upgrade/versions] Latest version in the v1.25 series: 1.25.1-0
Components that must be upgraded manually after you have upgraded the control plane with 'kubeadm upgrade apply':
COMPONENT CURRENT TARGET
kubelet 4 x v1.25.0 1.25.1-0 # 这里很重要
Upgrade to the latest version in the v1.25 series:
COMPONENT CURRENT TARGET
kube-apiserver v1.25.0 1.25.1-0
kube-controller-manager v1.25.0 1.25.1-0
kube-scheduler v1.25.0 1.25.1-0
kube-proxy v1.25.0 1.25.1-0
CoreDNS v1.9.3 v1.9.3
etcd 3.5.4-0 3.5.4-0
You can now apply the upgrade by executing the following command:
kubeadm upgrade apply 1.25.1-0 --allow-experimental-upgrades
_____________________________________________________________________
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
_____________________________________________________________________
[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.25.0
[upgrade/versions] kubeadm version: v1.25.1
[upgrade/versions] Target version: 1.25.1-0
[upgrade/versions] Latest version in the v1.25 series: 1.25.1-0
Components that must be upgraded manually after you have upgraded the control plane with 'kubeadm upgrade apply':
COMPONENT CURRENT TARGET
kubelet 4 x v1.25.0 1.25.1-0
Upgrade to the latest version in the v1.25 series:
COMPONENT CURRENT TARGET
kube-apiserver v1.25.0 1.25.1-0
kube-controller-manager v1.25.0 1.25.1-0
kube-scheduler v1.25.0 1.25.1-0
kube-proxy v1.25.0 1.25.1-0
CoreDNS v1.9.3 v1.9.3
etcd 3.5.4-0 3.5.4-0
You can now apply the upgrade by executing the following command:
kubeadm upgrade apply 1.25.1-0 --allow-experimental-upgrades
_____________________________________________________________________
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
_____________________________________________________________________
5 根据提示进行下一步操作:
kubeadm upgrade apply v1.25.1
[root@k8s-master-1 ~]# kubeadm upgrade apply 1.25.1
[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.25.1"
[upgrade/versions] Cluster version: v1.25.0
[upgrade/versions] kubeadm version: v1.25.1
[upgrade] Are you sure you want to proceed? [y/N]: y
[upgrade/prepull] Pulling images required for setting up a Kubernetes cluster
......
[addons] Applied essential addon: CoreDNS
[addons] Applied essential addon: kube-proxy
[upgrade/successful] SUCCESS! Your cluster was upgraded to "v1.25.1". Enjoy!
[upgrade/kubelet] Now that your control plane is upgraded, please proceed with upgrading your kubelets if you haven't already done so.
6 升级kubectl 和 kubelet:
yum install kubectl-1.25.1 kubelet-1.25.1 -y
[root@k8s-master-1 ~]# yum install kubectl-1.25.1 kubelet-1.25.1 -y
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
Resolving Dependencies
--> Running transaction check
---> Package kubectl.x86_64 0:1.25.0-0 will be updated
---> Package kubectl.x86_64 0:1.25.1-0 will be an update
---> Package kubelet.x86_64 0:1.25.0-0 will be updated
---> Package kubelet.x86_64 0:1.25.1-0 will be an update
--> Finished Dependency Resolution
Dependencies Resolved
===============================================================================================================================================================================================================================================================
Package Arch Version Repository Size
===============================================================================================================================================================================================================================================================
Updating:
kubectl x86_64 1.25.1-0 kubernetes 10 M
kubelet x86_64 1.25.1-0 kubernetes 21 M
Transaction Summary
===============================================================================================================================================================================================================================================================
Upgrade 2 Packages
Total download size: 31 M
Is this ok [y/d/N]:
7 重启kubelet:
systemctl daemon-reload
systemctl restart kubelet
8 取消不可调度,重新上线:
kubectl uncordon k8s-master-1
[root@k8s-master-1 ~]# systemctl daemon-reload
[root@k8s-master-1 ~]# systemctl restart kubelet
[root@k8s-master-1 ~]# kubectl uncordon k8s-master-1
node/k8s-master-1 uncordoned
[root@k8s-master-1 ~]# kubectl get node -o wide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
k8s-master-1 Ready control-plane 39d v1.25.1 192.168.3.101 <none> CentOS Linux 7 (Core) 3.10.0-1160.el7.x86_64 docker://20.10.21
k8s-node-1 Ready <none> 39d v1.25.0 192.168.3.104 <none> CentOS Linux 7 (Core) 3.10.0-1160.el7.x86_64 docker://20.10.21
k8s-node-2 Ready <none> 39d v1.25.0 192.168.3.105 <none> CentOS Linux 7 (Core) 3.10.0-1160.el7.x86_64 docker://20.10.21
k8s-node-3 Ready <none> 39d v1.25.0 192.168.3.106 <none> CentOS Linux 7 (Core) 3.10.0-1160.el7.x86_64 docker://20.10.21
升级工作节点(k8s-node-3):
1 升级kubeadm:
yum install -y kubeadm-1.25.1
2 驱逐Node节点上的pod,且不可调度:
kubectl drain k8s-node-3 --ignore-daemonsets
[root@k8s-master-1 ~]# kubectl get node -o wide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
k8s-master-1 Ready control-plane 39d v1.25.1 192.168.3.101 <none> CentOS Linux 7 (Core) 3.10.0-1160.el7.x86_64 docker://20.10.21
k8s-node-1 Ready <none> 39d v1.25.0 192.168.3.104 <none> CentOS Linux 7 (Core) 3.10.0-1160.el7.x86_64 docker://20.10.21
k8s-node-2 Ready <none> 39d v1.25.0 192.168.3.105 <none> CentOS Linux 7 (Core) 3.10.0-1160.el7.x86_64 docker://20.10.21
k8s-node-3 Ready,SchedulingDisabled <none> 39d v1.25.0 192.168.3.106 <none> CentOS Linux 7 (Core) 3.10.0-1160.el7.x86_64 docker://20.10.21
3 升级kubelet:
kubeadm upgrade node
4 升级kubectl 和 kubelet
[root@k8s-node-3 ~]# yum install kubectl-1.25.1 kubelet-1.25.1 -y
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
Resolving Dependencies
--> Running transaction check
---> Package kubectl.x86_64 0:1.25.0-0 will be updated
---> Package kubectl.x86_64 0:1.25.1-0 will be an update
---> Package kubelet.x86_64 0:1.25.0-0 will be updated
---> Package kubelet.x86_64 0:1.25.1-0 will be an update
--> Finished Dependency Resolution
.......
5 重启kubelet:
[root@k8s-node-3 ~]# systemctl daemon-reload
[root@k8s-node-3 ~]# systemctl restart kubelet
6 取消不可调度,重新上线
[root@k8s-node-3 ~]# systemctl restart kubelet
7 master上查看结果:
[root@k8s-master-1 ~]# kubectl get node -o wide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
k8s-master-1 Ready control-plane 39d v1.25.1 192.168.3.101 <none> CentOS Linux 7 (Core) 3.10.0-1160.el7.x86_64 docker://20.10.21
k8s-node-1 Ready <none> 39d v1.25.0 192.168.3.104 <none> CentOS Linux 7 (Core) 3.10.0-1160.el7.x86_64 docker://20.10.21
k8s-node-2 Ready <none> 39d v1.25.0 192.168.3.105 <none> CentOS Linux 7 (Core) 3.10.0-1160.el7.x86_64 docker://20.10.21
k8s-node-3 Ready <none> 39d v1.25.1 192.168.3.106 <none> CentOS Linux 7 (Core) 3.10.0-1160.el7.x86_64 docker://20.10.21
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了