使用kubeadm部署的Kubernetes集群,备份与恢复主要通过etcd实现。核心步骤是定期备份etcd数据快照,并通过etcdctl工具恢复。
延伸知识点: 自动备份etcd的CronJob配置
- 创建执行备份的脚本(/backup/etcd-backup.sh):
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 /data/etcd-backup/snapshot-$(date +%Y%m%d).db
- 创建Kubernetes CronJob资源配置:
apiVersion: batch/v1 kind: CronJob metadata: name: etcd-backup spec: schedule: "0 2 * * *" jobTemplate: spec: template: spec: containers: - name: etcd-backup image: bitnami/etcd:3.5.9 command: ["/bin/sh", "/backup/etcd-backup.sh"] volumeMounts: - mountPath: /etc/kubernetes/pki/etcd name: etcd-certs readOnly: true - mountPath: /data/etcd-backup name: backup-volume volumes: - name: etcd-certs hostPath: path: /etc/kubernetes/pki/etcd - name: backup-volume hostPath: path: /mnt/etcd-backups type: DirectoryOrCreate restartPolicy: OnFailure
此配置每日2点自动备份,需确保挂载路径与etcd证书路径匹配。恢复时使用
etcdctl snapshot restore
命令,需提前验证备份文件完整性,并确保恢复环境与原始集群的Kubernetes版本、网络配置一致。