Etcd v3备份与恢复

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
简介: 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
相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
23天前
|
存储 数据库
掌握GitLab数据备份与恢复:全面操作指南
【10月更文挑战第11天】 GitLab作为一个流行的开源代码仓库管理系统,其数据的安全性和完整性至关重要。本文将详细介绍GitLab数据的备份与恢复流程,帮助用户掌握如何保护和管理他们的GitLab实例。
55 0
|
3月前
|
存储 运维 Python
基于 ChunkServer 的数据备份与恢复方案
【8月更文第30天】在分布式文件系统中,数据的安全性和持久性是至关重要的。为了应对可能发生的硬件故障、网络中断等问题,需要有一套完善的备份与恢复方案。本文将详细介绍如何设计和实现一套基于 ChunkServer 的数据备份与恢复流程,确保数据的完整性和持久性。
50 0
|
对象存储 容器 Kubernetes
使用 Velero 进行集群备份与迁移
本文介绍了使用 Velero 来进行 k8s 集群资源进行备份和迁移。
5644 0
|
3月前
|
存储 Kubernetes 安全
Kubernetes 中如何对 etcd 进行备份和还原
Kubernetes 中如何对 etcd 进行备份和还原
|
3月前
|
jenkins 持续交付
Jenkins备份和恢复
Jenkins备份和恢复
|
6月前
|
安全
linuxdd命令备份与恢复
`dd`命令实例:用于备份/恢复磁盘,如`dd if=/dev/hdb of=/dev/hdd`复制整个硬盘。还能压缩备份(`dd if=/dev/hdb | gzip > /root/image.gz`)、恢复(`gzip -dc /root/image.gz | dd of=/dev/hdb`)、备份MBR(`dd if=/dev/hda of=/root/image count=1 bs=512`)、创建swap分区(`dd if=/dev/zero of=/swapfile`)
133 1
|
关系型数据库 MySQL 网络安全
MySQL主从备份
主从备份是 MySQL 数据库中的一种备份方式,它通过将主数据库的数据同步到一个或多个从数据库中,来实现数据备份和恢复的目的。主从备份方式可以确保数据的高可用性和可靠性,同时也可以提高数据库的读写性能
122 1
|
存储 Kubernetes 安全
kubernetes集群备份与恢复
k8s集群服务所有组件都是无状态服务,所有数据都存储在etcd集群当中,所以为保证k8s集群的安全可以直接备份etcd集群数据,备份etcd的数据相当于直接备份k8s整个集群。
1510 1
|
SQL 存储 数据库
在DG环境中,主库丢失归档,对主库进行基于SCN的增量备份来恢复物理DG环境
在DG环境中,主库丢失归档,对主库进行基于SCN的增量备份来恢复物理DG环境
451 0