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

推荐订阅源

A
About on SuperTechFans
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
T
Tenable Blog
WordPress大学
WordPress大学
小众软件
小众软件
Y
Y Combinator Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园 - 聂微东
大猫的无限游戏
大猫的无限游戏
T
The Exploit Database - CXSecurity.com
Attack and Defense Labs
Attack and Defense Labs
Simon Willison's Weblog
Simon Willison's Weblog
C
CXSECURITY Database RSS Feed - CXSecurity.com
量子位
有赞技术团队
有赞技术团队
C
Cisco Blogs
D
Darknet – Hacking Tools, Hacker News & Cyber Security
F
Fortinet All Blogs
S
Schneier on Security
Engineering at Meta
Engineering at Meta
Microsoft Azure Blog
Microsoft Azure Blog
Martin Fowler
Martin Fowler
Recent Announcements
Recent Announcements
Stack Overflow Blog
Stack Overflow Blog
Recent Commits to openclaw:main
Recent Commits to openclaw:main
阮一峰的网络日志
阮一峰的网络日志
G
GRAHAM CLULEY
Spread Privacy
Spread Privacy
F
Full Disclosure
Scott Helme
Scott Helme
GbyAI
GbyAI
N
Netflix TechBlog - Medium
MyScale Blog
MyScale Blog
Cloudbric
Cloudbric
云风的 BLOG
云风的 BLOG
L
LangChain Blog
aimingoo的专栏
aimingoo的专栏
Hacker News - Newest:
Hacker News - Newest: "LLM"
Security Latest
Security Latest
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
MongoDB | Blog
MongoDB | Blog
The GitHub Blog
The GitHub Blog
The Register - Security
The Register - Security
L
Lohrmann on Cybersecurity
PCI Perspectives
PCI Perspectives
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
D
Docker
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
S
Secure Thoughts
C
Check Point Blog

博客园 - 尹正杰

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实现k8s集群一键升级 Calico启用纯BGP模式+RR实战案例 Calico 底层原理及IPIP(依赖BGP协议))和vxlan(不依赖BGP)工作模式切换 kubeasz基于ezctl实现k8s集群的扩容和缩容 kubeasz快速部署K8S集群实战 Ubuntu 24.04.04 LTS版本系统优化 Ubuntu Server 24.04.04 LTS部署指南 windows极速部署Openclaw实战篇 K8S的StatefulSet控制器应用案例之MySQL主从同步实战 k8s底层基于不同运行时集成harbor企业级私有仓库实战 二进制K8S集群附加组件部署及CNI网络插件切换实战 二进制部署K8S 1.35.0+最新版实战案例 etcd高可用集群部署及K8S周期性备份数据实战 基于Docker实现《若依》服务业务容器化实战篇 k8s集群基于Flannel网络插件部署凡人修仙传 k8s集群基于Calico网络插件部署凡人修仙传 ElasticSEearch 9.X环境部署 K8S Vertical Pod Autoscaler(VPA)实战案例 Prometheus监控自定义程序指标
Kubeasz基于ezctl实现etcd集群的管理实战
尹正杰 · 2026-03-15 · via 博客园 - 尹正杰

                                              作者:尹正杰

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

一.etcd集群管理

1.etcd集群数量变化的影响

Etcd 集群支持在线改变集群成员节点,可以增加、修改、删除成员节点;不过改变成员数量仍旧需要满足集群成员多数同意原则(quorum),另外请记住集群成员数量变化的影响:

注意:如果etcd 集群有故障节点,务必先删除故障节点,然后添加新节点,参考FAQ
	- 1.增加 etcd 集群节点, 提高集群稳定性
	- 2.增加 etcd 集群节点, 提高集群读性能(所有节点数据一致,客户端可以从任意节点读取数据)
	- 3.增加 etcd 集群节点, 降低集群写性能(所有节点数据一致,每一次写入会需要所有节点数据同步)
	
推荐阅读:
	https://github.com/easzlab/kubeasz/blob/master/docs/op/op-etcd.md	

2.新增etcd节点

	1.配置免密登录【可跳过,我们之前的环境做过】
[root@ansible99 ~]# ssh-copy-id 10.0.0.66


	2.添加节点
[root@ansible99 ~]# /etc/kubeasz/ezctl add-etcd  yinzhengjie-k8s 10.0.0.66


	3.查看成员
[root@master231 ~]# etcdctl member list
2e038e1d3039c13f, started, etcd-10.0.0.66,  https://10.0.0.66:2380 ,  https://10.0.0.66:2379 , false
7a9e71049ea7066e, started, etcd-10.0.0.231,  https://10.0.0.231:2380 ,  https://10.0.0.231:2379 , false
e199235532ec8117, started, etcd-10.0.0.233,  https://10.0.0.233:2380 ,  https://10.0.0.233:2379 , false
e440e58503cb9e47, started, etcd-10.0.0.232,  https://10.0.0.232:2380 ,  https://10.0.0.232:2379 , false
[root@master231 ~]# 


温馨提示:
	生产环境中,慎用!我实际测试中的确能添加etcd节点,但是添加的过程中,又让k8s组件不正常工作了。

3.删除etcd节点

	1.删除etcd节点
[root@ansible99 ~]# /etc/kubeasz/ezctl del-etcd  yinzhengjie-k8s 10.0.0.66

	
	2.查看etcd成员
[root@master231 ~]# etcdctl member list
7a9e71049ea7066e, started, etcd-10.0.0.231,  https://10.0.0.231:2380 ,  https://10.0.0.231:2379 , false
e199235532ec8117, started, etcd-10.0.0.233,  https://10.0.0.233:2380 ,  https://10.0.0.233:2379 , false
e440e58503cb9e47, started, etcd-10.0.0.232,  https://10.0.0.232:2380 ,  https://10.0.0.232:2379 , false
[root@master231 ~]# 


温馨提示:
	删除etcd节点过程中,也会让集群短暂时间不可用,因为它需要修改api-server的配置信息。

二.etcd的数据备份和恢复

1.备份数据

	1.查看现有的备份数据【如果你之前从来没有备份过,是看不到备份数据的】
[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  5 01:49 ../
-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 ~]# 



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


	3.再次查看备份数据
[root@ansible99 ~]# ll /etc/kubeasz/clusters/yinzhengjie-k8s/backup/
total 17924
drwxr-xr-x 2 root root    4096 Jun  5 01:51 ./
drwxr-xr-x 5 root root    4096 Jun  5 01:49 ../
-rw------- 1 root root 6111264 Jun  4 03:30 snapshot_202606040330.db
-rw------- 1 root root 6111264 Jun  5 01:51 snapshot_202606050151.db
-rw------- 1 root root 6111264 Jun  5 01:51 snapshot.db
[root@ansible99 ~]# 

2.恢复数据

	1.删除etcd数据
[root@master231 ~]# kubectl get deploy,svc,po
NAME                                READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/yinzhengjie-app01   3/3     3            3           23h

NAME                 TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
service/kubernetes   ClusterIP   10.200.0.1   <none>        443/TCP   40h

NAME                                    READY   STATUS    RESTARTS      AGE
pod/yinzhengjie-app01-9c78ddbdc-47qfl   1/1     Running   1 (14h ago)   23h
pod/yinzhengjie-app01-9c78ddbdc-9c57t   1/1     Running   1 (14h ago)   23h
pod/yinzhengjie-app01-9c78ddbdc-g9cn5   1/1     Running   1 (14h ago)   23h
[root@master231 ~]# 
[root@master231 ~]# kubectl delete deployments.apps yinzhengjie-app01 
deployment.apps "yinzhengjie-app01" deleted
[root@master231 ~]# 
[root@master231 ~]# kubectl get deploy,svc,po
NAME                 TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
service/kubernetes   ClusterIP   10.200.0.1   <none>        443/TCP   40h
[root@master231 ~]# 


	2.恢复数据
[root@ansible99 ~]# /etc/kubeasz/ezctl restore yinzhengjie-k8s


	3.测试验证
[root@master231 ~]# kubectl get deploy,svc,po
NAME                                READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/yinzhengjie-app01   3/3     3            3           24h

NAME                 TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
service/kubernetes   ClusterIP   10.200.0.1   <none>        443/TCP   41h

NAME                                    READY   STATUS    RESTARTS   AGE
pod/yinzhengjie-app01-9c78ddbdc-47qfl   1/1     Running   0          24h
pod/yinzhengjie-app01-9c78ddbdc-9c57t   1/1     Running   0          24h
pod/yinzhengjie-app01-9c78ddbdc-g9cn5   1/1     Running   0          24h
[root@master231 ~]# 


温馨提示:
	恢复数据的时候,也会停止集群哟,要注意这个细节,生产环境慎用!