惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Jina AI
Jina AI
云风的 BLOG
云风的 BLOG
人人都是产品经理
人人都是产品经理
T
The Blog of Author Tim Ferriss
阮一峰的网络日志
阮一峰的网络日志
罗磊的独立博客
J
Java Code Geeks
博客园 - 聂微东
B
Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
WordPress大学
WordPress大学
腾讯CDC
L
LangChain Blog
Apple Machine Learning Research
Apple Machine Learning Research
Microsoft Azure Blog
Microsoft Azure Blog
D
DataBreaches.Net
The GitHub Blog
The GitHub Blog
美团技术团队
博客园 - Franky
Google DeepMind News
Google DeepMind News
V
V2EX
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
月光博客
月光博客
The Cloudflare Blog

博客园 - 尹正杰

Categraf使用指南 window系统部署Claude Code实战 N9E集群部署 Ubuntu 24.04 LTS部署Codex实战 aiops运维平台从0到1部署实战 aiops平台环境部署 TKE集群LoadBalancer映射案例 k8s集群为每个节点分配不通的ippool实战 ansible剧本实现一键升级K8S集群的NVIDIA GPU驱动 vmagent采集etcd数据并写入victoriametrics集群 VictoriaMetrics集群部署实战 Squid正向代理实战 kubespray生产故障案例之kubelet启动参数案例 filebeat指定名称空间采集pod数据 Calico自定义Ipool实战 ansible剧本实现kibana的部署和卸载 ansible剧本应用案例集合2 ansible剧本实现磁盘格式化 Ansible急速入门实战篇 ansible快速入门篇 k8s集群管理 kubesray实战 kubespray实战案例 kubespray管理k8s的worker集群扩缩容 kubespray快速部署k8s集群实战 Kubeasz使用吐槽博客专题 Kubeasz基于ezctl实现etcd集群的管理实战 Calico启用纯BGP模式+RR实战案例 Calico 底层原理及IPIP(依赖BGP协议))和vxlan(不依赖BGP)工作模式切换 kubeasz基于ezctl实现k8s集群的扩容和缩容
Kubeasz基于ezctl实现k8s集群一键升级
尹正杰 · 2026-03-08 · via 博客园 - 尹正杰

                                              作者:尹正杰

版权声明:原创作品,谢绝转载!否则将追究法律责任。

一.升级前置环境检查机备份【生产环境必须做】

1.实验环境说明

	1.查看k8s集群版本
[root@master231 ~]# kubectl get nodes -o wide
NAME        STATUS                     ROLES    AGE   VERSION   INTERNAL-IP   EXTERNAL-IP   OS-IMAGE             KERNEL-VERSION      CONTAINER-RUNTIME
master231   Ready,SchedulingDisabled   master   16h   v1.33.1   10.0.0.231    <none>        Ubuntu 24.04.4 LTS   6.8.0-117-generic   containerd://2.1.1
master232   Ready,SchedulingDisabled   master   16h   v1.33.1   10.0.0.232    <none>        Ubuntu 24.04.4 LTS   6.8.0-117-generic   containerd://2.1.1
master233   Ready,SchedulingDisabled   master   16h   v1.33.1   10.0.0.233    <none>        Ubuntu 24.04.4 LTS   6.8.0-117-generic   containerd://2.1.1
worker66    Ready                      node     16h   v1.33.1   10.0.0.66     <none>        Ubuntu 24.04.4 LTS   6.8.0-117-generic   containerd://2.1.1
worker77    Ready                      node     16h   v1.33.1   10.0.0.77     <none>        Ubuntu 24.04.4 LTS   6.8.0-117-generic   containerd://2.1.1
[root@master231 ~]# 

	
	2.查看etcd状态
[root@master231 ~]# ETCDCTL_API=3 etcdctl --endpoints= https://10.0.0.231:2379,https://10.0.0.232:2379 ,https://10.0.0.233:2379 --cacert=/etc/kubernetes/ssl/ca.pem --cert=/etc/kubernetes/ssl/kubernetes.pem --key=/etc/kubernetes/ssl/kubernetes-key.pem endpoint health
https://10.0.0.232:2379 is healthy: successfully committed proposal: took = 16.450488ms
https://10.0.0.231:2379 is healthy: successfully committed proposal: took = 13.752167ms
https://10.0.0.233:2379 is healthy: successfully committed proposal: took = 15.409178ms
[root@master231 ~]# 
[root@master231 ~]# ETCDCTL_API=3 etcdctl --endpoints= https://10.0.0.231:2379,https://10.0.0.232:2379 ,https://10.0.0.233:2379 --cacert=/etc/kubernetes/ssl/ca.pem --cert=/etc/kubernetes/ssl/kubernetes.pem --key=/etc/kubernetes/ssl/kubernetes-key.pem endpoint health -w table
+-------------------------+--------+-------------+-------+
|        ENDPOINT         | HEALTH |    TOOK     | ERROR |
+-------------------------+--------+-------------+-------+
| https://10.0.0.231:2379 |   true | 24.369841ms |       |
| https://10.0.0.233:2379 |   true | 24.700832ms |       |
| https://10.0.0.232:2379 |   true | 27.282291ms |       |
+-------------------------+--------+-------------+-------+
[root@master231 ~]# 
[root@master231 ~]# 


温馨提示:
	同 Minor (1.33) 补丁版本跨 z 升级,kubeasz 支持滚动零停机升级。
	
	升级顺序:Master 控制平面→ETCD→Worker 节点,自动驱逐 Pod 滚动重建业务

2.etcd数据备份

	1.创建测试服务
[root@master231 ~]# cat > deploy-apps.yaml  <<EOF
apiVersion: apps/v1
kind: Deployment
metadata:
  name: yinzhengjie-app01
spec:
  replicas: 3
  selector:
    matchLabels:
      apps: v1 
  template:
    metadata:
      labels:
        apps: v1
    spec:
      containers:
      - name: c1
        image: registry.cn-hangzhou.aliyuncs.com/yinzhengjie-k8s/apps:v1 
EOF


[root@master231 ~]# kubectl  apply -f deploy-apps.yaml 
deployment.apps/yinzhengjie-app01 created
[root@master231 ~]# 


	2.查看pod
[root@master231 ~]# kubectl get pods -o wide -A
NAMESPACE     NAME                                       READY   STATUS    RESTARTS       AGE   IP               NODE        NOMINATED NODE   READINESS GATES
default       yinzhengjie-app01-9c78ddbdc-47qfl          1/1     Running   0              34s   192.168.65.130   worker66    <none>           <none>
default       yinzhengjie-app01-9c78ddbdc-9c57t          1/1     Running   0              34s   192.168.65.131   worker66    <none>           <none>
default       yinzhengjie-app01-9c78ddbdc-g9cn5          1/1     Running   0              34s   192.168.165.5    worker77    <none>           <none>
kube-system   calico-kube-controllers-654fb9bf6f-x7fvs   1/1     Running   36 (92m ago)   17h   192.168.65.129   worker66    <none>           <none>
kube-system   calico-node-2srnp                          1/1     Running   1 (92m ago)    17h   10.0.0.233       master233   <none>           <none>
kube-system   calico-node-b7rp8                          1/1     Running   1 (92m ago)    17h   10.0.0.232       master232   <none>           <none>
kube-system   calico-node-pdhvj                          1/1     Running   1 (92m ago)    17h   10.0.0.231       master231   <none>           <none>
kube-system   calico-node-z27ph                          1/1     Running   1 (92m ago)    17h   10.0.0.77        worker77    <none>           <none>
kube-system   calico-node-ztd47                          1/1     Running   1 (92m ago)    17h   10.0.0.66        worker66    <none>           <none>
kube-system   coredns-5c4d969fb-d8zmd                    1/1     Running   1 (92m ago)    17h   192.168.165.3    worker77    <none>           <none>
kube-system   metrics-server-74f6d6fdd5-c5clz            1/1     Running   1 (92m ago)    17h   192.168.165.4    worker77    <none>           <none>
kube-system   node-local-dns-6mw5c                       1/1     Running   1 (92m ago)    17h   10.0.0.232       master232   <none>           <none>
kube-system   node-local-dns-7t6vh                       1/1     Running   1 (92m ago)    17h   10.0.0.77        worker77    <none>           <none>
kube-system   node-local-dns-8z679                       1/1     Running   1 (92m ago)    17h   10.0.0.231       master231   <none>           <none>
kube-system   node-local-dns-9pvf6                       1/1     Running   1 (92m ago)    17h   10.0.0.233       master233   <none>           <none>
kube-system   node-local-dns-hbsvr                       1/1     Running   1 (92m ago)    17h   10.0.0.66        worker66    <none>           <none>
[root@master231 ~]# 
[root@master231 ~]# 

	
	3.备份etcd数据
[root@ansible99 ~]# /etc/kubeasz/ezctl backup yinzhengjie-k8s

	4.查看备份的数据
[root@ansible99 ~]# ll /etc/kubeasz/clusters/yinzhengjie-k8s/backup/
total 11952
drwxr-xr-x 2 root root    4096 Jun  4 03:30 ./
drwxr-xr-x 5 root root    4096 Jun  3 09:48 ../
-rw------- 1 root root 6111264 Jun  4 03:30 snapshot_202606040330.db
-rw------- 1 root root 6111264 Jun  4 03:30 snapshot.db
[root@ansible99 ~]# 

二.升级k8s版本

1.下载二进制软件包

	1.下载软件包
[root@ansible99 ~]# wget https://dl.k8s.io/v1.33.11/kubernetes-server-linux-amd64.tar.gz


	2.覆盖软件包
[root@ansible99 ~]# tar xf kubernetes-server-linux-amd64.tar.gz -C /etc/kubeasz/bin/ kubernetes/server/bin/{kube-apiserver,kube-controller-manager,kube-scheduler,kubectl,kubelet,kube-proxy}  --strip-components=3


	3.测试验证
[root@ansible99 ~]# /etc/kubeasz/bin/kubelet --version
Kubernetes v1.33.11
[root@ansible99 ~]# 
[root@ansible99 ~]# /etc/kubeasz/bin/kubectl version
Client Version: v1.33.11
Kustomize Version: v5.6.0
Server Version: v1.33.1
[root@ansible99 ~]# 
[root@ansible99 ~]# /etc/kubeasz/bin/kubectl version --client
Client Version: v1.33.11
Kustomize Version: v5.6.0
[root@ansible99 ~]# 

2.基于ezctl实现k8s集群一键升级

参考链接:
	https://github.com/easzlab/kubeasz/blob/master/docs/op/upgrade.md
	
	
实操案例:
	1.切换当前所在集群为升级集群, 在kubeasz控制端执行dk ezctl checkout k8s-01
[root@ansible99 ~]# dk ezctl checkout yinzhengjie-k8s


	2.在kubeasz控制端执行升级
[root@ansible99 ~]# dk ezctl upgrade yinzhengjie-k8s


	3.测试验证升级后的版本
[root@master231 ~]# kubectl get nodes -o wide
NAME        STATUS                     ROLES    AGE   VERSION    INTERNAL-IP   EXTERNAL-IP   OS-IMAGE             KERNEL-VERSION      CONTAINER-RUNTIME
master231   Ready,SchedulingDisabled   master   24h   v1.33.11   10.0.0.231    <none>        Ubuntu 24.04.4 LTS   6.8.0-117-generic   containerd://2.1.1
master232   Ready,SchedulingDisabled   master   24h   v1.33.11   10.0.0.232    <none>        Ubuntu 24.04.4 LTS   6.8.0-117-generic   containerd://2.1.1
master233   Ready,SchedulingDisabled   master   24h   v1.33.11   10.0.0.233    <none>        Ubuntu 24.04.4 LTS   6.8.0-117-generic   containerd://2.1.1
worker66    Ready                      node     24h   v1.33.11   10.0.0.66     <none>        Ubuntu 24.04.4 LTS   6.8.0-117-generic   containerd://2.1.1
worker77    Ready                      node     24h   v1.33.11   10.0.0.77     <none>        Ubuntu 24.04.4 LTS   6.8.0-117-generic   containerd://2.1.1
[root@master231 ~]# 


温馨提示:
  Kubeasz这个项目的确能一键升级K8S版本,但是它的逻辑有问题,就是升级过程中,批量更新master节点,worker节点版本,并非滚动更新,生产环境中慎用。