Kubernetes etcd 数据库备份

1:什么是etcd

分布式,可靠的键值存储,用于分布式系统中最关键的数据

etcd是一个高度一致的分布式键值存储,它提供了一种可靠的方式来存储需要由分布式系统或机器集群访问的数据。 它可以优雅地处理网络分区期间的领导者选举,即使在领导者节点中也可以容忍机器故障。

从简单的Web应用程序到Kubernetes,任何复杂性的应用程序都可以从etcd中读取数据或将数据写入etcd。

应用程序可以读取和写入etcd中的数据。 一个简单的用例是将数据库连接详细信息或功能标志存储在etcd中作为键值对。高级的方式使用利用了etcd的一致性保证来实施数据库领导者选举或跨一组工作人员执行分布式锁定。

etcd是开源的,可在GitHub上获得,并由Cloud Native Computing Foundation支持。

2:备份 etcd 集群

所有 Kubernetes 对象都存储在 etcd 上。定期备份 etcd 集群数据对于在灾难场景(例如丢失所有控制平面节点)下恢复 Kubernetes 集群非常重要。 快照文件包含所有 Kubernetes 状态和关键信息。为了保证敏感的 Kubernetes 数据的安全,可以对快照文件进行加密。

内置快照 etcdctl 选项的快照

# 基于Ubuntu平台的环境
# 如果环境中没有etcdctl先下载工具
apt install etcd-client 
# 或者从etcd docker 中拷贝到本地
docker ps | grep etcd
docker cp 容器ID:/usr/local/bin/etcdctl /usr/local/bin/etcdctl

image.png

查看etcdctl的版本
image.png

预配置解决证书问题

就是把 /etc/kubernetes/pki/etcd 目录下的证书,copy 到 用户指定 目录。

mkdir -p  /etc/k8s/
cd /etc/kubernetes/pki/etcd
cp ca.crt /opt/k8s/ca.crt
cp peer.crt /opt/k8s/etcd-client.crt
cp peer.key /opt/k8s/etcd-client.key

否则会发生报错
文件找不到报错

使用etcdctl选项备份到指定目录

export ETCDCTL_API=3 # 指定etcd的版本号 2 或者 3
etcdctl --endpoints https://127.0.0.1:2379 \
--cacert="/opt/k8s/ca.crt" \
--cert="/opt/k8s/etcd-client.crt" \
--key="/opt/k8s/etcd-client.key" \
snapshot save /srv/data/etcd-snapshot.db

结果

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×