问题描述
Kubernetes中使用的数据库是ETCD,其中存储着K8S的元数据,ETCD集群宕机或数据丢失,会导致K8S集群无法使用,因此需要对ETCD进行备份。
问题分析
可以通过ETCD官方提供的命令(etcdctl snapshot save)进行备份。
问题解决
1.安装etcdctl
$ wget https://github.com/etcd-io/etcd/releases/download/v3.5.1/etcd-v3.5.1-linux-amd64.tar.gz
$ tar xf etcd-v3.5.1-linux-amd64.tar.gz
$ cp etcd-v3.5.1-linux-amd64/etcd* /usr/local/bin/
$ chmod 755 /usr/local/bin/etcd*
2.备份
$ ETCDCTL_API=3 etcdctl --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/peer.crt --key=/etc/kubernetes/pki/etcd/peer.key --endpoints=https://192.168.0.22:2379 snapshot save /tmp/etcd-snapshot-`date +%Y%m%d-%H%M%S`.db
{"level":"info","ts":1651219783.354936,"caller":"snapshot/v3_snapshot.go:68","msg":"created temporary db file","path":"/tmp/etcd-snapshot-20220429-160943.db.part"}
{"level":"info","ts":1651219783.3627217,"logger":"client","caller":"v3/maintenance.go:211","msg":"opened snapshot stream; downloading"}
{"level":"info","ts":1651219783.362777,"caller":"snapshot/v3_snapshot.go:76","msg":"fetching snapshot","endpoint":"https://192.168.0.22:2379"}
{"level":"info","ts":1651219783.6137493,"logger":"client","caller":"v3/maintenance.go:219","msg":"completed snapshot read; closing"}
{"level":"info","ts":1651219783.699149,"caller":"snapshot/v3_snapshot.go:91","msg":"fetched snapshot","endpoint":"https://192.168.0.22:2379","size":"30 MB","took":"now"}
{"level":"info","ts":1651219783.6995935,"caller":"snapshot/v3_snapshot.go:100","msg":"saved","path":"/tmp/etcd-snapshot-20220429-160943.db"}
Snapshot saved at /tmp/etcd-snapshot-20220429-160943.db
$ ls -l /tmp/etcd-snapshot-20220429-160943.db
-rw------- 1 root root 29622304 Apr 29 16:09 /tmp/etcd-snapshot-20220429-160943.db
参考链接
https://github.com/etcd-io/etcd/releases https://github.com/etcd-io/etcd/tree/main/etcdctl#snapshot-save-filename 如果您有其他问题,欢迎您联系火山引擎技术支持服务