1. 安装etcd客户端
2. 创建备份
1 2 3 4 5 6 7
| mkdir ./etcd-backup
ETCDCTL_API=3 etcdctl --endpoints=https://127.0.0.1:2379 \ --cacert=/etc/kubernetes/pki/etcd/ca.crt \ --cert=/etc/kubernetes/pki/etcd/server.crt \ --key=/etc/kubernetes/pki/etcd/server.key \ snapshot save ./etcd-backup/etcdbackup.db
|
其他备份
1 2 3 4 5 6 7 8
| mkdir ~/confirm #备份源集群文件 cp -rf /etc/kubernetes/ ~/confirm/ ll ~/confirm/kubernetes/
mkdir confirm/data_etcd #备份ETCD cp -rf /var/lib/etcd/* ~/confirm/data_etcd
cp /usr/bin/kubeadm /usr/bin/kubeadm.bak
|
3. 测试备份是否成功
1 2 3 4
| ETCDCTL_API=3 etcdctl --write-out=table snapshot status ./etcd-backup/etcdbackup.db
ETCDCTL_API=3 etcdctl snapshot restore etcd-backup/etcdbackup.db
|
4. 恢复
- 解码备份
1
| ETCDCTL_API=3 etcdctl snapshot restore etcd-backup/etcdbackup.db
|
- 停止整个集群并保存原始文件
1 2 3
| mkdir system_yaml_files mv /etc/kubernetes/manifests/* system_yaml_files/ # 此时k8s将会无法连接 mv /var/lib/etcd/member/ /var/lib/etcd/member.bak
|
- 恢复数据
1 2
| cd default.etcd/ mv member/ /var/lib/etcd/
|
- 重启集群
1 2 3
| systemctl stop kubelet cp system_yaml_files/* /etc/kubernetes/manifests/ systemctl start kubelet
|
5. 参考
实践:Kubernetes环境中Etcd集群的备份与恢复-腾讯云开发者社区-腾讯云