k8s备份

Ethereal Lv4

1. 安装etcd客户端

1
apt install etcd-client

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. 解码备份
1
ETCDCTL_API=3 etcdctl snapshot restore etcd-backup/etcdbackup.db
  1. 停止整个集群并保存原始文件
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. 恢复数据
1
2
cd default.etcd/
mv member/ /var/lib/etcd/
  1. 重启集群
1
2
3
systemctl stop kubelet
cp system_yaml_files/* /etc/kubernetes/manifests/
systemctl start kubelet

5. 参考

实践:Kubernetes环境中Etcd集群的备份与恢复-腾讯云开发者社区-腾讯云

  • Title: k8s备份
  • Author: Ethereal
  • Created at: 2025-03-26 16:09:53
  • Updated at: 2025-03-26 17:21:08
  • Link: https://ethereal-o.github.io/2025/03/26/k8s备份/
  • License: This work is licensed under CC BY-NC-SA 4.0.
 Comments