全部產品
Search
文件中心

Container Service for Kubernetes:其他雲廠商Kubernetes叢集應用遷移至ACK叢集

更新時間:Jan 24, 2025

將其他雲廠商的Kubernetes叢集接入到ACK One註冊叢集後,您可以通過備份中心對原叢集中部署的應用及資料進行備份,並在ACK叢集中完成恢複,實現應用跨雲的快速遷移。本文介紹如何使用備份中心將ACK One註冊叢集的應用遷移至ACK叢集。

前提條件

  • 已建立註冊叢集,並將其他雲廠商Kubernetes叢集(大於1.16版本)接入ACK One註冊叢集。具體操作,請參見建立註冊叢集

  • 已建立和ACK One註冊叢集同地區的ACK叢集(用於恢複應用),建議版本為1.18及以上。具體操作,請參見建立ACK託管叢集建立ACK專有叢集

    重要
    • 恢複叢集必須使用CSI儲存外掛程式,使用Flexvolume儲存外掛程式或通過csi-compatible-controller組件同時使用CSI Flexvolume儲存外掛程式的叢集不支援恢複。

    • 備份中心關注業務應用的備份和恢複。在恢複任務之前,您需要在恢複叢集中預先安裝並配置好所需的系統組件。例如:

      • ACR免密組件:您需要為恢複叢集重新授權並配置acr-configuration。

      • ALB Ingress組件:您需要預先配置ALBConfig等。

  • ACK One註冊叢集和ACK叢集均已開啟叢集備份。具體操作,請參見安裝備份服務元件並配置許可權

  • 對已通過CEN、Express Connect、專線、VPN等方式與雲上VPC互連的ACK One註冊叢集,已配置指向OSS內網網段的路由。更多資訊,請參見OSS內網網域名稱與VIP網段對照表

  • 已開通Cloud Backup服務。具體操作,請參見Cloud Backup

適用情境

雲備份容災:備份容災遷移一體化,快速實現應用上雲與資料災備。詳細介紹,請參見註冊叢集概述

注意事項

  • 備份本機存放區時,需要通過PV和PVC的方式掛載本地卷。

  • 備份其他雲廠商的Object Storage Service、檔案儲存體、Block Storage時,需要使用CSI外掛程式通過PV和PVC的方式掛載相應儲存卷。

  • ACK One註冊叢集、線上ACK叢集和OSS Bucket需要在同一地區內。

  • 若需要保證應用資料的強一致性,在備份完成前需暫停業務資料的寫入。

準備工作

本文以MySQL應用為例,流程為在其他雲廠商Kubernetes叢集中部署應用後,通過接入ACK One註冊叢集,在ACK One註冊叢集中建立備份任務進行備份,然後在ACK叢集中恢複該應用和資料。應用遷移前,請確認已完成如下條件。

  • ACK One註冊叢集

    已建立RAM使用者並配置OSS與Cloud Backup許可權,並使用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託管叢集,請確認已開通Cloud Backup服務,且已建立名為cnfs-oss-****的Bucket。

    • 若使用ACK專有叢集,請確認已為Worker RAM角色配置OSS與Cloud Backup許可權。具體操作,請參見ACK專有版叢集許可權配置

步驟一:在其他雲廠商Kubernetes叢集中部署應用

本文以一個部署在其他雲廠商Kubernetes叢集中的MySQL應用為例。該應用儲存聲明為mysql-pvc,儲存卷為mysql-pv,對應的掛載點路徑為/mnt

  1. 執行以下命令,建立命名空間test1

    kubectl create namespace test1
  2. 使用CSI外掛程式部署通過PV和PVC的方式掛載儲存的MySQL應用。具體操作,請參見對應雲廠商的CSI儲存文檔。

    若叢集不支援CSI儲存外掛程式,可接入ACK One註冊叢集後使用阿里雲CSI外掛程式進行掛載。更多資訊,請參見儲存-CSI

  3. 執行以下命令,確認MySQL應用部署成功。

    kubectl -n test1 get pod| grep mysql-sts

    預期輸出:

    mysql-sts-0   1/1     Running   0         1m02s
  4. 執行以下命令,確認儲存卷的配置。

    kubectl -n test1 get pv mysql-pv -oyaml 

    預期輸出:

      csi:
        driver: ****
        volumeAttributes:
          xxxx: xxxx
          xxxx: xxxx
        volumeHandle: mysql-pv

    預期輸出表明,儲存卷包含CSI欄位。

  5. 執行以下命令,進入MySQL容器。

    kubectl -n test1 exec -it mysql-sts-0 -- /bin/bash
  6. 在MySQL容器中執行以下命令,類比需要備份的資料。

    cd /mnt && touch test && ls

    預期輸出:

    test

步驟二:在ACK One註冊叢集中備份MySQL應用及資料

ACK One註冊叢集已接入其他雲廠商的Kubernetes叢集。您可以在ACK One註冊叢集中完成備份任務。步驟如下。

  1. (可選)若帳號下無可使用的備份倉庫,請建立備份倉庫。具體操作,請參見建立備份倉庫

  2. ACK One註冊叢集中立即備份mysql-backup,部分配置項設定如下。具體操作,請參見建立備份任務

    配置項

    樣本

    名稱

    mysql-backup。

    備份倉庫

    為您上一步建立的備份倉庫。

    備份命名空間

    test1。

    備份資料卷

    選中備份儲存卷,預設為您進行資料備份。

  3. 應用備份頁面,單擊備份記錄頁簽,查看mysql-backup任務的狀態。當該狀態由InProgress變為Completed,表示應用及資料備份已完成。

步驟三:在ACK叢集中關聯對應的備份倉庫

若您使用的是新建立的備份倉庫,或者此前在ACK恢複叢集中從未關聯過該備份倉庫,需要先進行關聯。

  1. 應用備份頁面,單擊立即恢複頁簽。

  2. 在彈出的立即恢複面板中,填寫名稱,選擇備份倉庫,單擊備份倉庫右側的初始化倉庫以關聯ACK恢複叢集和備份中心。

    每個備份倉庫只需要關聯一次,倉庫初始化完成後,在ACK One註冊叢集中建立的備份任務將自動同步到當前ACK叢集。

  3. 初始化完成後,選擇備份倉庫中待恢複的任務,然後單擊確定

  4. 備份記錄頁簽,等待mysql-backup任務出現在列表中。

步驟四:在ACK叢集中恢複MySQL應用及資料

線上上ACK叢集中恢複應用時,將以動態掛載的形式為MySQL應用掛載指定儲存類為alibabacloud-cnfs-nas的儲存聲明,並將資料恢複至關聯的儲存卷中。

  1. 建立恢複任務mysql-restore,並將MySQL應用部署在ACK叢集的test2命名空間中。部分配置項設定如下。具體操作,請參見恢複應用和資料卷

    配置項

    樣本

    名稱

    mysql-restore。

    備份倉庫

    選擇備份倉庫為您之前建立的備份倉庫。

    選擇備份

    mysql-backup。

    重定義命名空間

    test1變為test2

    儲存類轉換

    在轉換的PVC列表中為mysql-pvc選擇儲存類alibabacloud-cnfs-nas。

  2. 單擊立即恢複右側的查看恢複記錄,等待mysql-restore任務狀態由InProgress變為Completed,表示應用及資料恢複完成。

  3. 在ACK叢集中執行以下命令,確認MySQL應用部署成功。

    kubectl -n test2 get pod | grep mysql-sts

    預期輸出:

    mysql-sts-0   1/1     Running   0          4s
  4. 在ACK叢集中執行以下命令,確認資料已恢複正常。

    1. 確認資料已恢複為alibaba-cnfs-nas儲存類。

      kubectl -n test2 get pvc | grep mysql-pvc

      預期輸出:

      mysql-pvc   Bound    nas-****   25Gi       RWO            alibabacloud-cnfs-nas   3m24s
    2. 確認mysql-pvc已掛載到MySQL應用中。

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

      預期輸出:

      Used By:       mysql-sts-0
    3. 確認類比的資料已成功恢複。執行以下命令,進入MySQL容器。

      kubectl -n test2 exec -it mysql-sts-0 -- /bin/bash
    4. 在MySQL容器中查詢類比的資料。

      cd /mnt && ls

      預期輸出:

      test

      預期輸出表明,類比的資料已成功恢複。