赛尔校园公共服务平台 Logo
平台使用
阿里云
百度云
移动云
智算服务
教育生态
登录 →
赛尔校园公共服务平台 Logo
平台使用 阿里云 百度云 移动云 智算服务 教育生态
登录
  1. 首页
  2. 阿里云
  3. 分布式云容器平台ACK One
  4. 操作指南
  5. 备份中心
  6. 自建Kubernetes集群应用迁移至线上ACK集群

自建Kubernetes集群应用迁移至线上ACK集群

  • 备份中心
  • 发布于 2025-04-18
  • 0 次阅读
文档编辑
文档编辑

您可以通过备份中心对ACK One注册集群中部署的应用及数据进行备份,并在线上ACK集群中进行恢复,实现线下应用到线上的快速迁移。本文介绍如何使用备份中心将已接入ACK One注册集群的线下集群中的应用迁移至线上ACK集群。

前提条件

  • 已创建ACK One注册集群,并将自建Kubernetes集群(大于1.16版本)接入注册集群。具体操作,请参见创建注册集群并接入本地数据中心集群。

  • 已创建和ACK One注册集群同地域的ACK集群(用于恢复应用),建议版本为1.18及以上。具体操作,请参见创建ACK托管集群和创建ACK专有集群(已停止新建)。

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

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

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

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

  • ACK One注册集群和ACK集群均已开启集群备份。具体操作,请参见安装备份服务组件并配置权限。

  • 对已通过CEN、高速通道、专线、VPN等方式与云上VPC互通的ACK One注册集群,已配置指向OSS内网网段的路由。更多信息,请参见OSS内网域名与VIP网段对照表。

  • 已开通云备份(Cloud Backup)服务。具体操作,请参见云备份(Cloud Backup)。

适用场景

云备份容灾:备份容灾迁移一体化,快速实现应用上云与数据灾备。详细介绍,请参见注册集群概述。

注意事项

  • 备份线下集群数据时,需要通过PV和PVC的方式挂载本地卷。阿里云CSI插件支持ACK One注册集群的挂载功能。更多信息,请参见本地存储卷。

  • ACK One注册集群、线上ACK集群和OSS Bucket需要在同一地域内。

准备工作

本文以MySQL应用为例,介绍如何在线下集群中部署应用并备份,然后在线上ACK集群中恢复。应用迁移前,请确认ACK One注册集群和ACK集群在同一地域内,且均已开启集群备份,并满足如下条件。

  • ACK One注册集群:确认已创建RAM用户并配置OSS与云备份权限,并使用RAM用户的AccessKey ID和AccessKey Secret在ACK One注册集群的csdr命名空间中创建alibaba-addon-secret的Secret资源。

    执行以下命令,确认alibaba-addon-secret已存在。

    kubectl get secret alibaba-addon-secret -n csdr

    预期输出:

    alibaba-addon-secret   Opaque   2      5d22h
  • 线上ACK集群:

    • 若为ACK托管集群,请确认已开通云备份服务,且已创建cnfs-oss-****名称的Bucket。

    • 若为ACK专有集群,请确认已为Worker RAM角色配置OSS与云备份权限。具体操作,请参见为专有版集群配置OSS权限和为专有版集群或注册集群的用户配置云备份权限。

操作视频

步骤一:在线下集群中部署应用

  1. 执行以下命令,创建命名空间test1。

    kubectl create namespace test1
  2. 使用以下内容,创建app-mysql.yaml文件。替换<your-hostname>为待备份的节点名称,替换username和password为实际备份应用的用户名和密码。

    apiVersion: apps/v1
    kind: StatefulSet
    metadata:
      name: mysql-sts
      namespace: test1
    spec:
      selector:
        matchLabels:
          app: mysql-sts
      serviceName: mysql-sts
      template:
        metadata:
          labels:
            app: mysql-sts
        spec:
          containers:
          - name: mysql-sts
            image: mysql:5.7
            env:
            - name: MYSQL_ROOT_PASSWORD
              valueFrom:
                secretKeyRef:
                  name: mysql-pass
                  key: password
            ports:
            - containerPort: 80
              name: mysql-sts
            volumeMounts:
            - name: mysql
              mountPath: /var/lib/mysql
          volumes:
            - name: mysql
              persistentVolumeClaim:
                claimName: example-pvc
    ---
    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: example-pv
    spec:
      capacity:
        storage: 100Gi
      volumeMode: Filesystem
      accessModes:
      - ReadWriteOnce
      persistentVolumeReclaimPolicy: Delete
      storageClassName: local-storage
      local:
        path: /mnt/disk
      nodeAffinity:
        required:
          nodeSelectorTerms:
          - matchExpressions:
            - key: kubernetes.io/hostname
              operator: In
              values:
              - <your-hostname> # 待备份的节点名称。
    ---
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: example-pvc
      namespace: test1
    spec:
      accessModes:
      - ReadWriteOnce
      resources:
        requests:
          storage: 25Gi
      storageClassName: local-storage
      volumeName: example-pv
    ---
    apiVersion: v1
    kind: Secret
    metadata:
      name: mysql-pass
      namespace: test1
    type: Opaque
    data:
      username: dGVz****             # 待备份MySQL应用的用户名,需替换为您实际备份应用的用户名。
      password: dGVzdDEt****     # 待备份MySQL应用的用户密码,需替换为您实际备份应用的用户密码。
  3. 执行以下命令,部署MySQL应用,并将本地盘挂载为PV,配置相关PV与PVC。

    kubectl create -f app-mysql.yaml

    预期输出:

    statefulset.apps/mysql-sts created
    persistentvolume/example-pv created
    persistentvolumeclaim/example-pvc created
    secret/mysql-pass created
  4. 执行以下命令,确认MySQL应用部署成功。

    kubectl get pod -n test1 | grep mysql-sts

    预期输出:

    mysql-sts-0   1/1     Running   1 (4m51s ago)   4m58s

步骤二:在线下集群中备份MySQL应用及数据

ACK One注册集群已接入线下集群,您可在ACK One注册集群中进行备份任务。

  1. 在ACK One注册集群中创建备份仓库。具体操作,请参见创建备份仓库。

  2. 在ACK One注册集群中创建名为MySQL的立即备份。具体操作,请参见创建备份计划或立即备份。

    输入立即备份的名称为MySQL,选择备份仓库为您上一步创建的备份仓库,选择备份命名空间为test1。

  3. 在应用备份页面,单击备份记录页签,查看mysql-backup任务的状态。当该状态由InProgress变为Completed,表示应用数据备份已完成。

步骤三:在线上ACK集群中恢复应用

本文以将线下集群的存储转化为alibabacloud-cnfs-nas存储类为例,介绍如何在线上ACK集群中恢复MySQL应用。具体步骤如下:

  1. 创建恢复任务mysql-restore,将MySQL应用部署在线上ACK集群的test2命名空间中,并转换至存储类alibabacloud-cnfs-nas。具体操作,请参见恢复应用和数据卷。

    配置项

    示例

    名称

    mysql-restore。

    备份仓库

    选择备份仓库为您之前创建的备份仓库。若提示初始化仓库,请单击并等待备份记录同步至该集群。

    选择备份

    MySQL。

    重定义命名空间

    由test1变为test2。

    存储类转换

    在转换的PVC列表中为example-pvc选择存储类alibabacloud-cnfs-nas。

  2. 单击立即恢复右侧的查看恢复记录,查看mysql-restore任务状态由InProgress变为Completed,表示MySQL应用数据恢复已完成。

  3. 在ACK集群中执行以下命令,确认MySQL应用部署成功。

    kubectl get pod -n test2 | grep mysql-sts

    预期输出:

    mysql-sts-0   1/1     Running   0          4s
  4. 在ACK集群中执行以下命令,确认数据已恢复正常。

    1. 确认数据已恢复为alibaba-cnfs-nas存储类。

      kubectl get pvc -n test2 | grep example-pvc

      预期输出:

      example-pvc   Bound    nas-acde4acd-59b6-4332-90af-b74ef6******   25Gi       RWO            alibabacloud-cnfs-nas   31m
    2. 确认example-pvc已挂载到MySQL应用中。

      kubectl describe pvc example-pvc -n test2 | grep "Used By"

      预期输出:

      Used By:       mysql-sts-0
相关文章

备份中心 2025-04-18 18:08

容器服务ACK备份中心为无状态或有状态应用的备份、恢复与迁移提供了一站式的解决方案,特别是对混合云、多集群的有状态应用提供了数据容灾和应用迁移能力。例如,集群内应用和数据的定时备份、统一恢复,以及跨可用区、跨地域的迁移。本文介绍备份中心的工作原理、计费说明及使用场景。 工作原理

安装migrate-controller备份服务组件并配置权限 2025-04-18 18:08

备份中心用于应用的备份、恢复与迁移,您可以通过备份中心实现多集群和混合环境中应用的数据容灾和应用迁移。使用备份中心需要安装migrate-controller备份服务组件并配置相关权限以开启备份能力。 前提条件

集群内备份和恢复应用 2025-04-18 18:08

备份中心可用于解决Kubernetes集群内的应用备份与恢复,实现集群的备份容灾能力。 使用限制

通过Prometheus监控备份中心并配置告警 2025-04-18 18:08

您可以将备份中心接入Prometheus,通过阿里云Prometheus服务监控当前集群中备份仓库及备份任务的状态,实现应用迁移、备份容灾状态的实时监控。本文介绍如何使用备份中心监控大盘以及如何配置备份任务失败告警。 前提条件 已安装migrate-controller备份服务组件,且组件为v1.7

自建Kubernetes集群应用迁移至线上ACK集群 2025-04-18 18:08

您可以通过备份中心对ACK One注册集群中部署的应用及数据进行备份,并在线上ACK集群中进行恢复,实现线下应用到线上的快速迁移。本文介绍如何使用备份中心将已接入ACK One注册集群的线下集群中的应用迁移至线上ACK集群。

将其他云厂商Kubernetes集群应用迁移至ACK集群 2025-04-18 18:08

将其他云厂商的Kubernetes集群接入到ACK One注册集群后,您可以通过备份中心对原集群中部署的应用及数据进行备份,并在ACK集群中完成恢复,实现应用跨云的快速迁移。本文介绍如何使用备份中心将ACK One注册集群的应用迁移至ACK集群。

目录
Copyright © 2025 your company All Rights Reserved. Powered by 赛尔网络.
京ICP备14022346号-15
gongan beian 京公网安备11010802041014号