温馨提示×

Kubernetes在CentOS上的备份与恢复策略

小樊
38
2025-11-16 04:15:00
栏目: 智能运维

Kubernetes在CentOS上的备份与恢复策略

一 备份范围与总体策略

  • 备份对象应覆盖四类关键资产:
    1. etcd 数据(集群状态与控制面配置);2) Kubernetes 资源对象(如 Deployment、Service、ConfigMap、Secret、PVC/PV 等);3) 持久卷数据(数据库、日志、业务文件等);4) 节点与平台配置(如 kubelet 配置、容器运行时、系统/应用配置)。
  • 策略要点:
    • 明确备份频率与保留周期(如每日增量、每周全量、保留 7–30 天),并落地为自动化任务异地/多区域存储。
    • 对关键业务实施定期恢复演练备份完整性校验,并建立监控告警操作记录
    • CentOS 环境中,结合系统工具(如 rsync、tar)与 Kubernetes 原生/开源方案(如 Velero、CSI 快照)形成分层备份体系。

二 etcd 备份与恢复

  • 备份步骤(推荐 API v3 + 证书直连):
    1. etcd 节点或具备访问权限的主机上设置环境变量:
      export ETCDCTL_API=3
      ETCD_ENDPOINTS=“https://127.0.0.1:2379”
      CERT_DIR=“/etc/kubernetes/pki/etcd”
    2. 执行快照并校验:
      etcdctl --endpoints=$ETCD_ENDPOINTS \ –cacert=$CERT_DIR/ca.crt \ –cert=$CERT_DIR/healthcheck-client.crt \ –key=$CERT_DIR/healthcheck-client.key \ snapshot save snapshot.db
      etcdctl --write-out=table snapshot status snapshot.db
    3. 建议通过 CronJob 定时执行并上传快照至安全存储。
  • 恢复步骤(控制面停机窗口):
    1. 停止控制面组件(单节点或先停 kube-apiserver 再停 etcd):
      systemctl stop kube-apiserver etcd
    2. 备份并清理旧数据目录:
      mv /var/lib/etcd /var/lib/etcd.bak-$(date +%F)
    3. 从快照恢复(注意替换节点名与地址为实际拓扑):
      etcdctl snapshot restore snapshot.db \ –name=etcd-node1 \ –initial-cluster=“etcd-node1=https://10.0.0.1:2380” \ –initial-cluster-token=etcd-cluster \ –initial-advertise-peer-urls=https://10.0.0.1:2380 \ –data-dir=/var/lib/etcd
      chown -R etcd:etcd /var/lib/etcd
    4. 启动服务并校验:
      systemctl start etcd kube-apiserver
      etcdctl --endpoints=$ETCD_ENDPOINTS endpoint health
      kubectl get pods -A
  • 多节点 etcd:各节点按相同拓扑参数恢复,确保 –initial-cluster 一致性与节点名称匹配。

三 应用与持久卷的备份与恢复

  • 卷快照(CSI 标准方式):
    • 部署 CSI SnapshotterVolumeSnapshotClass,按需创建 VolumeSnapshot,用于时间点恢复或克隆;在云上可配合云盘 CSI(如 EBS)实现快照生命周期管理。
  • 应用级备份(数据库一致性优先):
    • MySQL 使用 mysqldump,对 PostgreSQL 使用 pg_dump 等工具在应用内获取一致性备份,再与对象存储或备份系统归档。
  • 集群资源与迁移(Velero):
    • 安装 Velero(如对接 MinIO/S3),创建 BackupRestore,支持按 命名空间/标签/资源类型 选择,可做跨集群迁移灾难恢复
      • 备份:velero backup create nginx-backup --include-namespaces nginx-example --wait
      • 恢复:velero restore create --from-backup nginx-backup
  • 节点/外部数据:对节点上落盘的 PV 数据或关键目录,使用 rsync/tar 脚本配合 crontab 做定期归档与异地拷贝。

四 实战备份方案示例

  • 方案A(控制面优先,适用于小规模或测试):
    • 每日对 etcd 做快照并上传对象存储;每周对关键 命名空间Velero 全量备份;数据库使用应用内备份;关键节点目录用 rsync 归档。
  • 方案B(生产级分层,控制面+应用层+卷快照):
    • 控制面:每日 etcd 快照 + 每周全量;
    • 应用层:Velero 按日/周备份(含 Secret/ConfigMap 等);
    • 数据层:启用 CSI 快照(如 EBS 或兼容 CSI),对数据库执行应用级一致性备份
    • 异地:对象存储开启跨区域复制;定期恢复演练备份校验

五 恢复流程与注意事项

  • 恢复流程建议:
    1. 明确恢复目标(仅资源、含卷、时间点);
    2. 恢复 etcd(如需回滚控制面);
    3. 恢复 Kubernetes 资源(Velero Restore);
    4. 恢复 持久卷(卷快照克隆或应用级导入);
    5. 校验业务可用性与数据一致性。
  • 关键注意事项:
    • 版本兼容:确保 etcdctl/etcd 与集群版本匹配,备份与恢复工具版本兼容;
    • 最小化停机:控制面恢复窗口内串行操作,先停 kube-apiserver 再停 etcd
    • 权限与密钥:证书、密钥、凭据文件妥善备份与访问控制;
    • 安全与合规:备份加密异地/多区域存放,满足审计与合规;
    • 演练与监控:定期恢复演练失败告警记录归档

0