Etcd v3备份与恢复

简介: Etcd v3备份与恢复

一、常见环境变量

# Environment file for etcd v3.4.13
ETCD_DATA_DIR=/var/lib/etcd
ETCD_ADVERTISE_CLIENT_URLS=https://192.168.1.190:2379 #本机IP和端口
ETCD_INITIAL_ADVERTISE_PEER_URLS=https://192.168.1.190:2380 #本机IP和端口
ETCD_INITIAL_CLUSTER_STATE=existing
ETCD_METRICS=basic
ETCD_LISTEN_CLIENT_URLS=https://192.168.1.190:2379,https://127.0.0.1:2379 #本机IP和端口加127
ETCD_INITIAL_CLUSTER_TOKEN=k8s_etcd
ETCD_LISTEN_PEER_URLS=https://192.168.1.190:2380 #本机IP和端口
ETCD_NAME=etcd-master
ETCD_PROXY=off
ETCD_ENABLE_V2=true
ETCD_INITIAL_CLUSTER=etcd-master=https://192.168.1.190:2380 #集群中所有节点的信息,格式为 节点1名称=https://节点1 IP:2380,节点2名称=https://节点2 IP:2380,节点3名称=https://节点3 IP:2380" .....
ETCD_ELECTION_TIMEOUT=5000
ETCD_HEARTBEAT_INTERVAL=250
ETCD_AUTO_COMPACTION_RETENTION=8
ETCD_SNAPSHOT_COUNT=10000
# TLS settings
ETCD_TRUSTED_CA_FILE=/etc/ssl/etcd/ssl/ca.pem
ETCD_CERT_FILE=/etc/ssl/etcd/ssl/member-master.pem
ETCD_KEY_FILE=/etc/ssl/etcd/ssl/member-master-key.pem
ETCD_CLIENT_CERT_AUTH=true
ETCD_PEER_TRUSTED_CA_FILE=/etc/ssl/etcd/ssl/ca.pem
ETCD_PEER_CERT_FILE=/etc/ssl/etcd/ssl/member-master.pem
ETCD_PEER_KEY_FILE=/etc/ssl/etcd/ssl/member-master-key.pem
ETCD_PEER_CLIENT_CERT_AUTH=True
# CLI settings
ETCDCTL_ENDPOINTS=https://127.0.0.1:2379 #etcd服务器的地址和端口,可以写多个,格式为https://节点1 IP:2379,https://节点2 IP:2379,https://节点3 IP:2379"
ETCDCTL_CA_FILE=/etc/ssl/etcd/ssl/ca.pem
ETCDCTL_KEY_FILE=/etc/ssl/etcd/ssl/admin-master-key.pem
ETCDCTL_CERT_FILE=/etc/ssl/etcd/ssl/admin-master.pem

二、etcd常用操作

1.设置环境变量(避免每次执行命令时都有带上)

#证书的路径可以查看etcd和api-server的进程中相关证书配置 
export ETCDCTL_API=3 
export ETCDCTL_CACERT=/etc/ssl/etcd/ssl/ca.pem
export ETCDCTL_CERT=/etc/ssl/etcd/ssl/admin-master.pem
export ETCDCTL_KEY=/etc/ssl/etcd/ssl/admin-master-key.pem
export ETCDCTL_ENDPOINTS=https://127.0.0.1:2379 #根据实际情况配置,我这里是单机,如果是集群则写上其他服务器地址

2.查看日志(以systemd方式部署)

#查看服务状态

systemctl status etcd

#查看详细日志

journalctl -u etcd

3.增删改查

1.查
#查看所有的key
etcdctl   get / --prefix --keys-only
#查看指定key的值 这个至是default空间下myapp-deploy-675cfc4c45-f6k6c pod
etcdctl  get /registry/pods/default/myapp-deploy-675cfc4c45-f6k6c
2.删
#删除数据,可以看到删除pod时没有watch没有看到删除pod的阶段,通过etcd删除比kubectl删除更快5
[root@master ~]# etcdctl  del  /registry/pods/default/myapp-deploy-675cfc4c45-f6k6c
1
#另起一个窗口
[root@master ~]# kubectl get pods -w
NAME                            READY   STATUS    RESTARTS   AGE
myapp-deploy-675cfc4c45-f6k6c   1/1     Running   0          25d
myapp-deploy-675cfc4c45-fnctb   1/1     Running   0          25d
myapp-deploy-675cfc4c45-lpf6q   1/1     Running   0          25d
myapp-deploy-675cfc4c45-lv27s   1/1     Running   0          25d
myapp-deploy-675cfc4c45-s7nl4   1/1     Running   0          25d
myapp-deploy-675cfc4c45-f6k6c   1/1     Running   0          25d
myapp-deploy-675cfc4c45-hfht7   0/1     Pending   0          0s
myapp-deploy-675cfc4c45-hfht7   0/1     Pending   0          0s
myapp-deploy-675cfc4c45-hfht7   0/1     ContainerCreating   0          0s
myapp-deploy-675cfc4c45-hfht7   0/1     ContainerCreating   0          2s
myapp-deploy-675cfc4c45-hfht7   1/1     Running             0          3s
增(改)
#写入数据,对已存在的key写入表示修改
etcdctl put /test helloWorld

4.集群节点状态查看

#查看集群节点健康状态

etcdctl  --write-out=table endpoint health


#查看集群节点当前状态

etcdctl  --write-out=table  endpoint status

三、etcd备份与恢复

1.备份

etcdctl  snapshot save /data/etcd_backup/etcd-bak-$(date +%F).db

2.恢复

每一台服务器进行操作
 # 停止apiserver服务,如果是systemd 则使用systemd,二进制则根据实际情况,这里是kubeadmin部署,为静态pod
 cd /etc/kubernetes/manifests/  mv kube-apiserver.yaml  kube-apiserver.yaml-bak
 
 # 停止etcd服务
 systemctl stop etcd 
 mv /var/lib/etd /var/lib/etcd-bak  #必须,否则需要修改etcd数据目录配置,因为恢复的时候数据目录必须不存在
 
 #恢复数据 --data-dir指向的目录不能提前存在  etcd-master 当前节点etcd名称,每一台都不一样 数据使用同一份,如果是集群的话
 #如果你有多个 etcd 节点,你需要确保 --initial-cluster 参数包含所有节点的信息,并且每个节点的 --name、--initial-advertise-peer-urls 和其他相关参数都是正确配置的。
 # etcd-master-https://192.168.1.190:2380 为当前节点etcd名称及地址,如果是集群这需要将集群中所有节点都写上 
 # --initial-advertise-peer-urls 为当前节点地址 
 # --initial-cluster-token 集群认证token
 #单节点命令
ETCDCTL_API=3 etcdctl  --initial-cluster etcd-master=https://192.168.1.190:2380 --initial-advertise-peer-urls https://192.168.1.190:2380 --initial-cluster-token="k8s_etcd" snapshot restore back.db --data-dir=/var/lib/etcd/ --name etcd-master
#多节点命令 
etcdctl snapshot restore xxx.back.db --data-dir=/var/lib/etcd/ --initial-cluster-token="k8s_etcd" --initial-advertise-peer-urls=https://192.168.1.190:2380 --initial-cluster="etcd1=https://192.168.1.190:2380 ,etcd2=https://192.168.1.191:2380 ,etcd3=https://192.168.1.192:2380 "
 # 恢复etcd服务
systemctl start etcd 
 
 # 恢复apiserver服务
mv kube-apiserver.yaml-bak  kube-apiserver.yaml
相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
存储 Kubernetes Linux
helm 简介及基本使用
helm 简介及基本使用
4177 0
helm 简介及基本使用
|
Kubernetes 安全 网络协议
【K8S系列】深入解析k8s网络插件—Calico
【K8S系列】深入解析k8s网络插件—Calico
6223 0
|
5月前
|
弹性计算 人工智能 JavaScript
OpenClaw是什么?云服务器ECS与本地部署OpenClaw(Clawdbot)保姆级图文教程
OpenClaw(曾用名Clawdbot、Moltbot)是2026年全球热度极高的开源自托管AI智能体工具,凭借轻量化架构、可扩展技能生态与跨平台执行能力,成为个人与小型团队搭建专属AI助手的首选方案。它区别于普通聊天机器人,具备文件读写、命令执行、代码生成、定时任务、多通讯平台接入等真实执行能力,可私有化部署保障数据安全,也可依托云端服务器实现7×24小时稳定运行。本文基于2026年最新稳定版,完整拆解OpenClaw核心定义、功能价值,重点提供**2026年阿里云ECS云服务器零基础部署**与**本地Windows/通用环境部署**两套全流程教程,附带可直接复制的代码命令,零基础用户也能
2922 4
|
存储 Kubernetes 安全
Kubernetes 中如何对 etcd 进行备份和还原
Kubernetes 中如何对 etcd 进行备份和还原
|
Java Linux
CentOS环境搭建Elasticsearch集群
至此,您已成功在CentOS环境下搭建了Elasticsearch集群。通过以上介绍和步骤,相信您对部署Elasticsearch集群有了充分的了解。最后祝您在使用Elasticsearch集群的过程中顺利开展工作!
697 22
|
存储 Kubernetes 负载均衡
CentOS 7.9二进制部署K8S 1.28.3+集群实战
本文详细介绍了在CentOS 7.9上通过二进制方式部署Kubernetes 1.28.3+集群的全过程,包括环境准备、组件安装、证书生成、高可用配置以及网络插件部署等关键步骤。
3077 4
CentOS 7.9二进制部署K8S 1.28.3+集群实战
|
存储 网络安全
Curl error (60): SSL peer certificate or SSH remote key was not OK for https://update.cs2c.com.cn/NS/V10/V10SP2/os/adv/lic/base/x86_64/repodata/repomd.xml [SSL: no alternative certificate subject name matches target host name 'update.cs2c.com.cn']
【10月更文挑战第30天】在尝试从麒麟软件仓库(ks10-adv-os)下载元数据时,遇到 SSL 证书验证问题。错误提示为:`Curl error (60): SSL peer certificate or SSH remote key was not OK`。可能原因包括证书不被信任、证书与域名不匹配或网络问题。解决方法包括检查网络连接、导入 SSL 证书、禁用 SSL 证书验证(不推荐)、联系仓库管理员、检查系统时间和尝试其他镜像。
5266 1
|
小程序 Android开发 数据安全/隐私保护
八米云PCDN-N1盒子、机顶盒等设备-小白保姆式超详细刷机教程
本文介绍了如何为魔百盒CM211-1等S905系列机顶盒进行线刷准备及步骤,包括所需工具、线刷流程、短接刷机、写入八米系统等详细操作,适用于刷入安卓9系统。特别提示,刷过其他系统的用户可简化部分步骤。
4448 0
八米云PCDN-N1盒子、机顶盒等设备-小白保姆式超详细刷机教程
|
存储 算法 开发者
etcd入门指南
etcd入门指南
1279 4
etcd入门指南