Kubernetes之etcd集群备份恢复
LiuSw Lv6

Kubernetes之etcd集群备份恢复

安装etcdctl命令

etcdctl下载链接

下载后 上传至服务器

1
2
3
4
wget https://github.com/etcd-io/etcd/releases/download/v${ETCD_VER}/etcd-${ETCD_VER}-linux-amd64.tar.gz

例如:
wget https://github.com/etcd-io/etcd/releases/download/v3.4.14/etcd-v3.4.14-linux-amd64.tar.gz

解压并加入环境变量

1
2
3
tar -zxvf etcd-v3.4.14-linux-amd64.tar.gz
cd etcd-v3.4.14-linux-amd64
cp etcdctl /usr/bin

验证etcdctl是否可用

1
etcdctl version
1
2
etcdctl version: 3.4.14
API version: 3.4

查看etcd高可用集群健康状态

1
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 --write-out=table --endpoints=127.0.0.1:2379 endpoint health
1
2
3
4
5
6
7
+-------------------+--------+-------------+-------+
| ENDPOINT | HEALTH | TOOK | ERROR |
+-------------------+--------+-------------+-------+
| 192.168.1.1:2379 | true | 29.123678ms | |
| 192.168.1.2:2379 | true | 30.169546ms | |
| 192.168.1.3:2379 | true | 30.654512ms | |
+-------------------+--------+-------------+-------+

查看etcd高可用集群列表

1
[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 --write-out=table --endpoints=127.0.0.1:2379 member list
1
2
3
4
5
6
7
+------------------+---------+-------------+---------------------------+---------------------------+------------+
| ID | STATUS | NAME | PEER ADDRS | CLIENT ADDRS | IS LEARNER |
+------------------+---------+-------------+---------------------------+---------------------------+------------+
| 4a22b8f319402aba | started | k8s-master2 | https://192.168.1.2:2380 | https://192.168.1.2:2379 | false |
| b0e52dad330ab3ee | started | k8s-master3 | https://192.168.1.3:2380 | https://192.168.1.3:2379 | false |
| efe5d6122ccb1c7e | started | k8s-master1 | https://192.168.1.1:2380 | https://192.168.1.1:2379 | false |
+------------------+---------+-------------+---------------------------+---------------------------+------------+

备份etcd集群

方式1

1
etcdctl --cert /etc/kubernetes/pki/etcd/peer.crt --key /etc/kubernetes/pki/etcd/peer.key  --endpoints https://127.0.0.1:2379 --insecure-skip-tls-verify  snapshot save 文件名称.db

方式2

1
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=127.0.0.1:2379 snapshot save 文件名称.db

恢复etcd集群

方式1

1
etcdctl --cert /etc/kubernetes/pki/etcd/peer.crt --key /etc/kubernetes/pki/etcd/peer.key  --endpoints https://127.0.0.1:2379 --insecure-skip-tls-verify  snapshot restore 文件名称.db

方式2

1
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=127.0.0.1:2379 snapshot restore 文件名称.db

配置定时任务

1
crontab -e

添加以下定时任务(设置每天晚上11点半执行备份任务保存7天)

或者将命令做成脚本,定时执行脚本

1
30 23 * * * etcdctl --cert /etc/kubernetes/pki/etcd/peer.crt --key /etc/kubernetes/pki/etcd/peer.key  --endpoints https://127.0.0.1:2379 --insecure-skip-tls-verify  snapshot save /opt/k8s-etcd-back/data/k8s-etcd-52-xingqi$(date +"\%w").db

End

 评论