centos上k8s备份与恢复
导读:CentOS 上 Kubernetes 备份与恢复实战指南 一 备份范围与策略 备份范围应包含: etcd 数据:Kubernetes 的核心状态存储,包含集群配置与对象状态。 Kubernetes 资源对象:如 Pod、Service...
CentOS 上 Kubernetes 备份与恢复实战指南
一 备份范围与策略
- 备份范围应包含:
- etcd 数据:Kubernetes 的核心状态存储,包含集群配置与对象状态。
- Kubernetes 资源对象:如 Pod、Service、Deployment、ConfigMap、Secret、PVC/PV 声明 等。
- 节点与持久化数据:节点上重要目录(如 /var/lib/kubelet 等)及外部存储(如 NFS、Ceph、云盘)的数据。
- 策略要点:
- 明确备份频率(如每日/每周)与保留周期,并设定异地/多副本存储。
- 选择工具:资源级与迁移场景优先 Velero;控制面灾难恢复依赖 etcd 快照;节点/外部数据用 tar/rsync 等常规手段。
- 定期演练恢复与校验备份完整性,确保可恢复性与可用性。
二 使用 Velero 进行集群资源与持久卷备份恢复
- 安装与存储后端
- 准备对象存储(如 MinIO/S3),创建 Bucket 与访问密钥。
- 安装 Velero 客户端与服务端,配置 S3 凭证文件 credentials-velero,指定备份存储位置(Bucket、区域等)。
- 备份
- 全量备份:
velero backup create < backup-name> --wait - 指定命名空间:
velero backup create < backup-name> --include-namespaces < ns1,ns2> - 按资源过滤:
velero backup create < backup-name> --selector < key=value>
- 全量备份:
- 恢复
- 全量恢复:
velero restore create --from-backup < backup-name> - 指定命名空间:
velero restore create --from-backup < backup-name> --include-namespaces < ns1,ns2>
- 全量恢复:
- 迁移场景
- 在目标集群安装 Velero(同存储后端),直接
velero restore create --from-backup < backup-name>即可完成跨集群迁移。
- 在目标集群安装 Velero(同存储后端),直接
- 提示
- 确保源/目标集群的 存储类(StorageClass)、网络插件 等一致或兼容;恢复前评估应用与存储的兼容性与容量。
三 使用 etcd 快照进行控制面灾难恢复
- 备份 etcd(任选一个控制面节点执行)
- 设置 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 /opt/etcd-backup-$(date +%F).db - 建议同时备份 /etc/kubernetes 与 /var/lib/etcd 目录,便于配置与数据一致性校验。
- 设置 API 版本并保存快照:
- 恢复 etcd
- 单节点或 kubeadm 默认部署
- 暂停控制面静态 Pod:
mv /etc/kubernetes/manifests /etc/kubernetes/manifests.bak - 清理数据目录:
rm -rf /var/lib/etcd/* - 恢复快照:
etcdctl snapshot restore /opt/etcd-backup-2025-11-20.db --data-dir=/var/lib/etcd - 恢复目录权限:
chown -R etcd:etcd /var/lib/etcd - 恢复静态 Pod:
mv /etc/kubernetes/manifests.bak /etc/kubernetes/manifests - 重启 kubelet:
systemctl restart kubelet,等待控制面就绪。
- 暂停控制面静态 Pod:
- 多节点 etcd 集群
- 在每个 master 节点依次:暂停静态 Pod、清理 /var/lib/etcd。
- 在每个节点用快照恢复,并为每个节点指定唯一的 –name、–initial-advertise-peer-urls、–initial-cluster 等参数(与集群成员信息一致)。
- 恢复 /etc/kubernetes/manifests 并重启 kubelet,观察成员健康与集群状态。
- 单节点或 kubeadm 默认部署
四 节点与外部存储数据备份恢复
- 节点与配置
- 备份关键目录与证书:
/etc/kubernetes、/var/lib/etcd、/var/lib/kubelet等;必要时使用tar打包归档。
- 备份关键目录与证书:
- 应用数据(PV/PVC)
- 文件/块存储:在节点或存储侧使用 tar/rsync 定期同步到备份仓库;数据库等应用层建议使用各自工具(如 mysqldump、pg_dump)进行一致性备份。
- 示例(节点本地目录):
rsync -avz --delete /var/lib/myapp/data /backup/myapp/ - 恢复时按相同路径回灌,并确保 权限/属主 与 SELinux/AppArmor 上下文一致。
五 验证与注意事项
- 定期演练:从备份中执行小规模恢复与全量恢复演练,校验 Pod 可用性、数据一致性、网络与存储 是否正常。
- 版本与兼容:确保 etcdctl 与 etcd 版本匹配,Kubernetes 版本升级/回滚时验证备份可用性。
- 安全与合规:保护 证书、密钥、备份存储 的访问权限;按业务需求设置 保留策略 与 异地容灾。
- 影响评估:备份/恢复会产生 API 与 IO 负载,在业务低峰期执行,并控制并发与速率。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: centos上k8s备份与恢复
本文地址: https://pptw.com/jishu/752152.html
