3. 云原生灾备概述:Kubernetes集群备份、etcd快照、Velero与Kasten K10工具简介

云原生环境下的灾备与传统虚拟化或物理机环境有本质区别。Kubernetes 集群的状态不仅包含持久化数据,还包含大量的声明式资源对象(Deployment、ConfigMap、Secret、CRD 等)以及集群元数据(etcd 中的集群状态)。因此,云原生灾备必须覆盖应用层资源与数据层状态两个维度。

3.1 云原生灾备的核心挑战

在 Kubernetes 环境中,传统的文件级或卷级快照无法完整恢复一个分布式应用。主要挑战包括:

  • 资源依赖复杂:应用通常由多个微服务、Service、Ingress、PVC 组成,恢复时必须按依赖顺序重建。
  • 集群元数据易失:etcd 存储了整个集群的配置和状态,一旦损坏或丢失,集群将无法启动。
  • 跨集群迁移需求:灾备场景往往需要将应用从生产集群恢复到同构或异构的灾备集群。
  • 合规与审计要求:灾备恢复演练和实际恢复过程需要可追溯、可验证,SBOM 在此环节提供软件成分的准入证据。
关键认知:云原生灾备不是简单的“备份 PVC 数据”,而是“备份整个应用拓扑 + 数据 + 集群元数据”的三位一体操作。

3.2 Kubernetes 集群备份的两种层次

根据备份粒度和目标,Kubernetes 集群备份可分为以下两个层次:

备份层次 备份对象 典型工具 恢复速度 适用场景
etcd 快照 集群全部元数据(Pod、Service、ConfigMap、RBAC 等) etcdctl snapshot 快(分钟级) 集群级灾难恢复、etcd 数据损坏
应用级备份 特定命名空间下的资源对象 + 持久卷数据 Velero、Kasten K10 中(取决于数据量) 应用迁移、版本回滚、灾备演练
注意:etcd 快照是集群的“全量元数据快照”,恢复时会覆盖整个集群状态,通常用于极端灾难场景。日常应用备份应使用 Velero 或 K10 等工具,避免误操作影响生产集群。

3.3 etcd 快照:集群的“最后一道防线”

etcd 是 Kubernetes 集群的“大脑”,存储了所有 API 对象的状态。etcd 快照是集群级灾备的基础。使用 etcdctl 工具可以创建和恢复快照:

# 创建 etcd 快照(在 etcd 主节点执行)
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-snapshot-$(date +%Y%m%d%H%M%S).db

# 恢复 etcd 快照(需停止 etcd 服务)
ETCDCTL_API=3 etcdctl snapshot restore /backup/etcd-snapshot-20250301120000.db \
  --data-dir=/var/lib/etcd-restore \
  --initial-cluster=master=https://192.168.1.10:2380 \
  --initial-cluster-=etcd-cluster-1 \
  --initial-advertise-peer-urls=https://192.168.1.10:2380

etcd 快照的局限性在于:它只备份集群元数据,不包含持久卷(PV)中的实际数据。因此,etcd 快照通常与存储层快照配合使用。

3.4 Velero:开源 Kubernetes 备份/迁移标准工具

Velero(原 Heptio Ark)是目前最广泛使用的开源 Kubernetes 备份和迁移工具。它通过调用 Kubernetes API 和存储后端接口,实现应用级备份与恢复。

3.4.1 Velero 核心架构

下图展示了 Velero 在 Kubernetes 集群中的组件交互关系:

Velero 核心架构与备份流程 Kubernetes API Server 资源对象查询/创建 Velero 服务端 备份/恢复控制器 对象存储 S3/GCS/Azure Blob 读取资源 上传备份 节点卷 (PV/PVC) CSI 快照 / Restic 文件级备份 Velero 节点代理 Restic / Kopia 卷数据读取 读取数据 上传卷数据 备份计划 (Schedule) Cron 表达式 / 手动触发 选择命名空间 / 标签 恢复操作 (Restore) 选择备份点 / 映射存储类 资源重命名 / 命名空间映射 触发备份 执行恢复 说明:Velero 通过 API Server 获取资源清单,通过节点代理或 CSI 驱动获取卷数据,最终统一打包上传至对象存储。 恢复时反向操作:从对象存储拉取数据,重建资源对象并恢复卷。

3.4.2 Velero 常用操作命令

# 安装 Velero(使用 AWS S3 作为后端)
velero install \
  --provider aws \
  --bucket velero-backups \
  --secret-file ./credentials-velero \
  --backup-location-config region=us-east-1 \
  --use-volume-snapshots=false \
  --plugins velero/velero-plugin-for-aws:v1.7.0

# 创建按需备份(备份整个命名空间)
velero backup create app-backup-20250301 \
  --include-namespaces production \
  --ttl 720h

# 查看备份状态
velero backup describe app-backup-20250301

# 从备份恢复
velero restore create --from-backup app-backup-20250301 \
  --namespace-mappings production:dr-production

3.5 Kasten K10:企业级云原生数据管理平台

Kasten K10 是 Veeam 旗下的企业级 Kubernetes 数据管理平台,在 Velero 的基础上提供了更丰富的企业特性:可视化仪表板、策略引擎、合规报告、多集群管理以及 SBOM 集成能力。

3.5.1 K10 核心功能对比

功能维度 Velero(开源) Kasten K10(企业版)
备份粒度 命名空间 / 标签选择 命名空间 + 应用拓扑自动发现
数据移动性 Restic / CSI 快照 原生移动卷 + 跨云存储分层
策略引擎 基于 CronJob 的 Schedule 可视化策略(保留、加密、合规)
合规与审计 无内置审计 内置审计日志 + SBOM 导出
恢复验证 手动验证 自动恢复演练 + 应用健康检查
多集群管理 需独立部署 统一控制台管理多集群

3.5.2 K10 灾备策略与 SBOM 集成

K10 允许用户为每个应用定义灾备策略(Policy),策略中可包含备份频率、保留周期、目标存储位置以及加密设置。更重要的是,K10 支持在备份时自动生成应用的 SBOM(软件物料清单),记录备份中包含的所有容器镜像及其摘要(Digest)。

# K10 策略示例(通过 kubectl 或 Dashboard 创建)
apiVersion: config.kio.kasten.io/v1alpha1
kind: Policy
metadata:
  name: production-app-backup
  namespace: kasten-io
spec:
  comment: "生产应用每日备份 + SBOM 生成"
  frequency: "@daily"
  retention:
    daily: 7
    weekly: 4
    monthly: 3
  actions:
    - action: backup
      backupType: Full
    - action: export
      exportType: SBOM
      target:
        name: sbom-bucket
        namespace: kasten-io
  selector:
    matchLabels:
      app.kubernetes.io/env: production
SBOM 集成价值:在灾备恢复场景中,SBOM 提供了恢复后应用所使用镜像的完整清单。合规审计人员可以通过比对备份时的 SBOM 与恢复后的 SBOM,验证恢复过程是否引入了未经批准的镜像版本,从而满足准入策略的审计要求。

3.6 灾备工具选型建议

根据团队规模、预算和合规要求,建议如下:

  • 初创团队 / 实验环境:使用 Velero + 对象存储(MinIO 或 S3),配合 etcd 定期快照。
  • 中型企业 / 生产环境:使用 Velero + CSI 快照 + Restic,结合外部监控和手动审计。
  • 大型企业 / 金融合规场景:使用 Kasten K10,利用其内置的 SBOM 导出、审计日志和自动恢复演练功能,满足 SOC2、PCI-DSS 等合规要求。