跨地域跨集群迁移应用

备份中心可用于解决跨地域Kubernetes集群的应用备份与恢复,实现跨地域集群的备份容灾能力。

前提条件

  • 已创建恢复集群,为确保能正常使用ECS快照恢复云盘数据,建议恢复集群为v1.18及以上版本。具体操作,请参见创建ACK托管集群创建ACK专有集群创建注册集群并接入本地数据中心集群

    重要
    • 恢复集群必须使用CSI存储插件,使用Flexvolume存储插件或通过csi-compatible-controller组件同时使用CSI Flexvolume存储插件的集群不支持恢复。

    • 备份中心关注业务应用的备份和恢复。在恢复任务之前,您需要在恢复集群中预先安装并配置好所需的系统组件。例如:

      • ACR免密组件:您需要为恢复集群重新授权并配置acr-configuration。

      • ALB Ingress组件:您需要预先配置ALBConfig等。

  • 备份集群和恢复集群均已完成备份服务组件的安装及权限配置。具体操作,请参见安装migrate-controller备份服务组件并配置权限

  • 已开通ECS云盘快照

    开通快照服务不收取费用。创建快照后,阿里云默认根据快照容量与时长按量计费,更多信息,请参见快照计费

注意事项

  • 跨地域集群应用迁移支持应用备份,以及仅使用了阿里云云盘存储的数据卷备份

    如果您的集群为ACK专有版集群或注册集群(已接入ECS自建的Kubernetes集群),在使用云盘存储卷备份跨地域恢复功能前,需要检查是否已授权ECS云盘快照相关的权限策略。具体操作,请参见安装migrate-controller备份服务组件并配置权限

  • 备份应用时,正在被删除的资源不会被备份。

准备工作

本示例介绍如何跨地域跨集群实现应用备份并恢复。本示例中,华北2(北京)地域内一个名为Cluster_BJ的ACK Pro集群将作为备份集群,华南1(深圳)地域内一个名为Cluster_SZ的ACK Pro集群将作为恢复集群。备份仓库关联华北2(北京)地域内的OSS Bucket。

  1. 在华北2(北京)地域内,创建以cnfs-oss-***开头的OSS Bucket。

    若此地域内已有符合要求的OSS Bucket,则可以跳过此步骤。

  2. 执行以下命令,在Cluster_BJ备份集群的默认命名空间中创建有状态应用Nginx。

    有状态应用Nginx的YAML文件

    cat << EOF | kubectl apply -f -
    apiVersion: apps/v1
    kind: StatefulSet
    metadata:
      name: web
    spec:
      selector:
        matchLabels:
          app: nginx
      serviceName: "nginx"
      replicas: 1
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
            - name: nginx
              image: nginx:1.14.2
              ports:
                - containerPort: 80
                  name: web
              volumeMounts:
                - name: www
                  mountPath: /usr/share/nginx/html
      volumeClaimTemplates:
        - metadata:
            name: www
            labels:
              app: nginx
          spec:
            accessModes: [ "ReadWriteOnce" ]
            storageClassName: "alicloud-disk-topology-alltype"
            resources:
              requests:
                storage: 20Gi
    EOF

步骤一:创建备份仓库

说明
  • 各个集群内的备份仓库实例,与其关联的OSS Bucket之间的网络访问方式将自动设置,不同的网络访问方式将影响应用备份的上传和拉取速度。

    • 集群和OSS Bucket处于同一地域时,使用私网连接。

    • 集群和OSS Bucket处于不同地域时,使用公网连接,需为集群开启公网访问能力,以便能够访问OSS的公网地址,具体操作请参见为已有集群开启公网访问能力

  • 已创建过的备份仓库不支持更新,只能被删除。若您在删除备份仓库后,重新创建了同名的备份仓库,此新建的同名备份仓库在现有已使用过备份的集群中也无法生效。

当前应用备份功能使用阿里云OSS对备份数据进行存储。若创建备份任务时无可用的备份仓库,则需执行该步骤。关于创建备份仓库的具体操作,请参见创建备份仓库

步骤二:在Cluster_BJ集群备份任务

关于备份任务的具体操作,请参见创建备份计划或立即备份

重要

跨地域应用迁移场景仅支持无存储或仅使用阿里云云盘存储的应用,其他类型的有状态应用迁移时,请勿勾选备份存储卷,以避免跨地域恢复时失败。

步骤三:在Cluster_SZ集群恢复应用

关于恢复应用的具体操作,请参见步骤三:恢复应用和数据卷

步骤四:查看Nginx应用是否迁移成功

  1. 登录容器服务管理控制台,在左侧导航栏选择集群

  2. 在恢复集群Cluster_SZ的集群管理页左侧导航栏,选择工作负载 > 有状态

  3. 单击目标应用Nginx右侧操作列的详情,然后单击容器组页签。

    确认目标应用的状态为Running,表示Nginx应用迁移成功。

相关文档