在CentOS上部署Kubernetes(k8s)时,备份和恢复数据是确保系统高可用性和数据安全的关键步骤。以下是一些常用的备份和恢复方法:
etcdctl命令来备份etcd数据。etcdctl snapshot save /path/to/backup/snapshot.db
docker或skopeo等工具来备份容器镜像。docker save -o /path/to/backup/image.tar image_name
# 或者使用 skopeo
skopeo copy docker://image_name file:///path/to/backup/image.tar
kubectl、rsync等工具进行备份。kubectl cp pod_name:/path/to/container/data /local/path
# 或者使用 rsync
rsync -avz --delete /path/to/source/ user@remote_host:/path/to/destination/
# 安装Velero
helm install velero ./velero --set tag=v1.14.1 --namespace velero
# 创建备份
velero backup create my-backup --include-namespaces my-namespace --include-resources pod,service,persistentvolumeclaim
# 恢复备份
velero restore create --from-backup my-backup
# 停止etcd服务
systemctl stop etcd
# 恢复etcd数据
rm -rf /var/lib/etcd/*
etcdctl snapshot restore snap1.db --data-dir /var/lib/etcd/
systemctl restart kubelet
# 停止Kubernetes组件
systemctl stop kubelet systemctl stop kube-proxy
# 恢复kubeconfig文件
cp /path/to/backup/admin.conf /etc/kubernetes/admin.conf
# 启动Kubernetes组件
systemctl start kubelet systemctl start kube-proxy
kubeadm reset和kubeadm join命令重新加入节点。# 重置Kubernetes组件
kubeadm reset -f
# 清理残留资源
kubectl delete all --all
# 重新加入节点
kubeadm join <master-ip>:<master-port> --token <token> --discovery-token-ca-cert-hash sha256:<hash>
# 恢复整个集群
velero restore create my-restore --backup-name my-backup