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

推荐订阅源

Microsoft Azure Blog
Microsoft Azure Blog
A
Arctic Wolf
Hacker News - Newest:
Hacker News - Newest: "LLM"
T
Threatpost
P
Proofpoint News Feed
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
www.infosecurity-magazine.com
www.infosecurity-magazine.com
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
V
Vulnerabilities – Threatpost
V
V2EX
Webroot Blog
Webroot Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
P
Privacy & Cybersecurity Law Blog
P
Privacy International News Feed
T
Tor Project blog
P
Proofpoint News Feed
T
Tailwind CSS Blog
C
Cyber Attacks, Cyber Crime and Cyber Security
Recent Commits to openclaw:main
Recent Commits to openclaw:main
Vercel News
Vercel News
Security Archives - TechRepublic
Security Archives - TechRepublic
MongoDB | Blog
MongoDB | Blog
T
Troy Hunt's Blog
Google DeepMind News
Google DeepMind News
NISL@THU
NISL@THU
C
CERT Recently Published Vulnerability Notes
W
WeLiveSecurity
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
GbyAI
GbyAI
Y
Y Combinator Blog
T
Threat Research - Cisco Blogs
S
Security Affairs
Google Online Security Blog
Google Online Security Blog
S
Securelist
Spread Privacy
Spread Privacy
Recent Announcements
Recent Announcements
The Register - Security
The Register - Security
C
Cybersecurity and Infrastructure Security Agency CISA
爱范儿
爱范儿
H
Help Net Security
Microsoft Security Blog
Microsoft Security Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
Scott Helme
Scott Helme
The Cloudflare Blog
T
The Blog of Author Tim Ferriss
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
B
Blog RSS Feed
AWS News Blog
AWS News Blog

博客园 - 尹正杰

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实现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 ~]# 


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