CentOS上Kubernetes的备份与恢复方法有哪些
导读:CentOS上Kubernetes的备份与恢复方法 一、核心备份对象与总体策略 备份对象 etcd 数据:Kubernetes 的“唯一数据源”,包含集群状态与配置。 Kubernetes 资源对象:如 Pod、Deployment、S...
CentOS上Kubernetes的备份与恢复方法
一、核心备份对象与总体策略
- 备份对象
- etcd 数据:Kubernetes 的“唯一数据源”,包含集群状态与配置。
- Kubernetes 资源对象:如 Pod、Deployment、Service、ConfigMap、Secret、PVC/PV 声明 等。
- 持久化卷数据:数据库、日志等落在 PV/PVC 或外部存储的数据。
- 节点与配置:如 /etc/kubernetes/ 证书与清单、/var/lib/etcd/ 数据目录、节点上重要目录。
- 策略要点
- 明确备份范围与频率(每日/每周)、保留周期与异地/多活存放。
- 选择工具:集群级用 Velero;控制面“硬核”恢复用 etcd 快照;节点/文件级用 tar/rsync。
- 定期做恢复演练与完整性校验,确保可恢复性与恢复时间目标(RTO/RPO)达标。
二、etcd快照备份与恢复(控制面一致性)
- 适用场景
- 需要恢复整个集群到某个时间点(如误操作、灾难恢复、升级回滚)。
- 备份步骤
- 准备证书与端点(示例为 kubeadm 默认路径与本地端点):
- 导出 API 版本:
export 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 /backup/etcd-$(date +%F-%H%M).db
- 导出 API 版本:
- 建议同时备份 /etc/kubernetes/ 与 /var/lib/etcd/ 目录以便“文件级”回滚。
- 准备证书与端点(示例为 kubeadm 默认路径与本地端点):
- 恢复步骤
- 单节点/静态 Pod 场景(kubeadm)
- 暂停控制面:
mv /etc/kubernetes/manifests /etc/kubernetes/manifests.bak - 清理数据:
rm -rf /var/lib/etcd/* - 恢复快照:
etcdctl snapshot restore /backup/etcd-2025-11-28.db --data-dir=/var/lib/etcd - 恢复清单:
mv /etc/kubernetes/manifests.bak /etc/kubernetes/manifests - 验证:
kubectl get pod -n kube-system,必要时重启 kubelet。
- 暂停控制面:
- 多节点/集群场景
- 在每个 master 节点上先暂停控制面并清理 /var/lib/etcd,随后分别执行
snapshot restore,并指定本节点的 –name、–initial-advertise-peer-urls、–initial-cluster 等参数,确保集群成员信息一致后启动控制面。
- 在每个 master 节点上先暂停控制面并清理 /var/lib/etcd,随后分别执行
- 单节点/静态 Pod 场景(kubeadm)
- 校验与提示
- 校验快照:
etcdctl --write-out=table snapshot status /backup/etcd-*.db - 证书路径与端点可从 kube-system 命名空间的 etcd Pod 描述中获取,避免手工错误。
- 校验快照:
三、Velero备份与恢复(集群资源与PV)
- 适用场景
- 按命名空间/资源类型做定期备份、跨集群迁移、按需颗粒度恢复。
- 安装与存储后端
- 部署对象存储(如 MinIO)作为备份仓库,创建 Bucket 与 credentials-velero 凭证文件。
- 安装 Velero 客户端与服务端,配置默认备份存储位置(Bucket、Region、凭证)。
- 备份与恢复
- 备份:
velero backup create nginx-backup --include-namespaces nginx-example --wait - 恢复:
velero restore create --from-backup nginx-backup - 支持备份 PV(Restic/CSI 插件按需启用),支持定时备份与保留策略。
- 备份:
- 迁移提示
- 目标集群需预先安装 Velero 并配置相同/兼容的 存储类 与网络插件,确保 PV 可绑定与应用可启动。
四、资源清单与节点文件级备份(轻量/快速回滚)
- 资源清单导出
- 全量导出:
kubectl get all --all-namespaces -o yaml > all-resources.yaml - 关键资源:
kubectl get configmap --all-namespaces -o yaml > all-configmaps.yaml - 密钥:
kubectl get secret --all-namespaces -o yaml > all-secrets.yaml(注意 base64 编码,仅作迁移/审计参考) - PVC 声明:
kubectl get pvc --all-namespaces -o yaml > all-pvcs.yaml
- 全量导出:
- 节点与目录备份
- 打包备份:
tar czvf etcd-backup-$(date +%F).tar.gz /var/lib/etcd/ - 证书与清单:
tar czvf k8s-config-$(date +%F).tar.gz /etc/kubernetes/ - 文件同步:
rsync -avz --delete /path/to/pv/data /backup/pv/ - 自动化:结合 crontab 定时执行与日志轮转,便于审计与回滚。
- 打包备份:
五、实践建议与注意事项
- 版本与兼容
- etcd v3 API 是备份/恢复的基础(Kubernetes 1.13+ 默认使用 v3);恢复时保证 Kubernetes 版本与备份时尽量一致,避免 API/数据不兼容。
- 一致性与可用性
- 备份 etcd 时尽量在维护窗口进行,避免业务写入影响一致性;恢复前先演练并校验快照状态。
- 存储与保留
- 备份存储建议异地/多副本,设置保留周期与定期清理策略,避免容量风险。
- 恢复顺序
- 控制面恢复(etcd)→ 核心组件就绪 → 资源对象恢复(Velero/清单)→ PV 数据恢复 → 应用自检与流量切换。
- 安全合规
- Secret 包含敏感信息,清单备份需配合 RBAC 与 加密 策略;传输与存放过程使用 TLS 与最小权限访问。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: CentOS上Kubernetes的备份与恢复方法有哪些
本文地址: https://pptw.com/jishu/758894.html
