全部產品
Search
文件中心

Container Service for Kubernetes:通過註冊叢集實現跨帳號ACK叢集的備份與恢複

更新時間:Jul 01, 2025

跨帳號備份恢複情境下,您可通過註冊叢集接入,將備份組群接入到恢複叢集帳號下的註冊叢集,並配置相關的OSS等雲產品許可權,實現將跨帳號的ACK叢集間的備份恢複轉化為同帳號叢集間的備份和恢複。

實現原理

注意事項

  • 若需要跨地區恢複,請在恢複帳號下建立與恢複叢集處於相同地區的註冊叢集。備份組群將通過公網接入註冊叢集,使用公網備份資料到雲端、使用內網從雲端恢複資料到恢複叢集。

  • 備份組群與恢複叢集備份組群為1.16或以上版本。考慮到apiVersion相容問題,不建議您通過備份中心將高版本叢集中的應用遷移至低版本的叢集中。

  • 備份應用時,正在刪除的資源不會被備份。

  • 如需恢複為容器網路檔案系統管理的NAS類型(即恢複時轉換為儲存類列選擇為alibabacloud-cnfs-nas),您需要先建立StorageClass。請參見通過CNFS管理NAS檔案系統(推薦)

  • 恢複應用時,資源將優先按照恢複叢集版本推薦的apiVersion進行恢複。若某資源在兩個版本中無同時支援的apiVersion版本,恢複時您需要手動部署。例如:

    • 1.16版本叢集Deployment支援extensions/v1beta1apps/v1beta1apps/v1beta2以及apps/v1,恢複至1.28叢集時將全部恢複至apps/v1

    • 1.16版本叢集Ingress支援extensions/v1beta1networking.k8s.io/v1beta1,無法將其直接恢複至1.22及以上版本叢集。

    更多叢集版本API變更資訊,請參見ACK版本發布說明Deprecated API Migration Guide

    重要

    在1.16版本叢集中,appsrbac.authorization.k8s.io等groups已支援v1,升級至1.28版本叢集時,您需要手動恢複Ingress、CronJob等資源。

  • 註冊叢集與普通ACK叢集的備份中心安裝模板不同,涉及到備份組群接入或移出註冊叢集的操作時,若需要繼續使用備份中心功能,則需要在註冊叢集(叢集接入)或備份組群(叢集移出)中重新安裝備份中心組件。

  • 在註冊叢集使用ECS快照功能做雲端硬碟備份時建立的快照屬於備份帳號,無法直接在恢複帳號中恢複。對於雲端硬碟類型應用,您可以通過ECS提供的共用快照功能,手動完成恢複;或在備份前修改全域配置,通過雲備份方案備份雲端硬碟資料。具體操作,請參見步驟四:在恢複叢集中建立恢複任務

前提條件

計費說明

備份中心功能本身不收費,使用備份中心時,可能用到以下相關服務,您需要支付相關的儲存費用。

  • Object Storage Service費用:OSS Bucket用於儲存備份的叢集資源(即相關YAML)。

  • 雲端硬碟快照費用:雲端硬碟快照用於備份阿里雲雲端硬碟儲存卷資料。

    說明
    • 自2023年10月12日11:00起,阿里雲ECS雲端硬碟不再收取快照極速可用儲存費和快照極速可用功能費,更多資訊,請參見快照極速可用能力

    • 使用PL0、PL1、PL2、PL3層級的ESSD雲端硬碟或ESSD AutoPL雲端硬碟時,在備份時建立的快照預設開啟快照極速可用功能。

  • 雲備份費用:雲備份用於備份其他類型(除雲端硬碟外)的儲存卷資料。

應用樣本

本文以以下情境為例,為您介紹如何?叢集應用資料的備份和恢複操作。

備份組群中包含如下應用:

應用

掛載儲存卷

應用特性

是否需要備份資料

sts-disk

  • 掛載了雲端硬碟儲存卷的應用sts-disk

  • PVC名稱為pvc-disk

對資料有強一致性需求,備份前會暫停寫入。

是(雲備份/ECS快照)

sts-nas

  • 掛載了NAS儲存卷的應用sts-nas

  • PVC名稱為pvc-nas

對資料無強一致性需求,接受備份期間寫入的資料可能丟失。

沒有跨帳號VPC打通計劃,恢複叢集無法讀取原NAS服務資料。

是(雲備份)

sts-oss

  • 掛載了OSS儲存卷的應用sts-oss

  • PVC名稱為pvc-oss

海量資料,希望通過備份帳號的AK授權繼續使用原Bucket。

否(直接按原PVC/PV的YAML恢複,指向原OSS Bucket)

如何建立掛載不同類型儲存卷的應用,請參見儲存-CSI

(可選)步驟一:在備份組群中卸載備份中心

若您之前在備份組群中使用過備份中心相關功能,由於註冊叢集與普通ACK叢集的備份中心安裝模板不同,因此需要先在備份組群中卸載備份中心組件。若備份組群未安裝備份中心組件,則無需執行該步驟。

  1. 使用備份帳號登入Container Service管理主控台,在左側導覽列選擇叢集列表

  2. 叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,單擊組件管理

  3. 組件管理頁面單擊應用管理頁簽。

  4. 找到migrate-controller組件卡片,並單擊右下角的卸載

  5. 在彈出的卸載組件對話方塊中單擊確認,完成組件卸載。

步驟二:在註冊叢集中安裝備份中心

  1. 使用恢複帳號建立ACK One註冊叢集,並將備份組群接入註冊叢集中。

  2. 在註冊叢集中安裝migrate-controller備份服務元件並配置許可權

    說明

    由於備份組群為同地區雲上ACK叢集,無需配置OSS內網網段路由。

步驟三:在註冊叢集中建立備份任務

重要

此操作步驟需要全部在恢複帳號下的註冊叢集中進行,請勿切換至備份帳號下的備份組群中操作。

與使用HBR雲備份服務相比,使用ECS快照功能備份具有速度快、一致性強的優勢。但是,在註冊叢集使用ECS快照功能做雲端硬碟備份時建立的快照屬於備份帳號,無法直接在恢複帳號中恢複。

對於雲端硬碟類型應用sts-disk,有兩種方式實現跨帳號恢複:

備份方案

雲備份方案

ECS快照方案

實現方式

在備份前,通過配置csdr下的configmap/csdr-config,改用雲備份服務備份雲端硬碟內資料。

恢複時,通過配置儲存類轉換,重新恢複為雲端硬碟類型的儲存卷。

使用預設的ECS快照功能備份雲端硬碟資料,通過ECS的共用快照功能,將建立的快照由備份帳號共用給恢複帳號。

在通過備份中心恢複前,需要在叢集中手動靜態建立VolumeSnapshot快照,並重建所有雲端硬碟類型的PVC,保證雲端硬碟正常建立掛載。

優勢

基本不需要額外的手動操作。

由ECS雲端硬碟快照保證單盤資料的一致性,備份恢複速度快。

不足

雲備份服務備份恢複時間長度較長且不保證資料一致。若應用對資料一致性要求較高,暫停寫入時間較長。

若涉及雲端硬碟數量較多,手動操作部分較為繁瑣。

說明

若您的應用未使用雲端硬碟儲存,請直接根據云備份方案進行備份。

雲備份方案

如果您的應用使用了雲端硬碟儲存,且希望使用雲備份方案完成雲端硬碟備份。請參考如下操作進行資料備份。

  1. 確認ECS快照功能已關閉。

    1. 執行以下命令編輯csdr-config

      kubectl -ncsdr edit cm csdr-config 
    2. 確認enable_ecs_snapshot配置項為false,否則修改並儲存退出。

    3. 若配置已修改,執行以下命令,重啟工作群組件使配置生效。

      kubectl -ncsdr delete pod -l control-plane=csdr-controller
  2. 若恢複帳號下還未有備份的倉庫,請建立備份倉庫並關聯恢複帳號下以cnfs-oss-*格式命名的OSS Bucket。具體操作,請參見建立備份倉庫

  3. 為sts-oss建立備份。具體操作,請參見建立備份計劃或立即備份

    • 由於sts-oss應用需要使用原OSS bucket,即不需要備份OSS儲存卷中的資料,因此需要為其單獨建立備份,建立備份任務時,備份資料卷勾選不開啟

    • 假設sts-oss應用運行在命名空間OSS中,備份僅選擇包含命名空間OSS的應用。(若sts-oss應用與其他應用在同一命名空間,可通過指定標籤選擇備份)。

    • 應用備份備份記錄頁簽,確認相關備份任務的狀態由InProgress轉為Completed。單擊備份記錄名稱,確認sts-oss相關的資源,如StatefulSet、Pod、PVC、PV及存放AK資訊的Secret均已備份。

  4. 為sts-nas、sts-disk應用建立備份。具體操作,請參見建立備份計劃或立即備份

    • 建立備份任務時,備份資料卷勾選已掛載資料卷

    • 由於enable_ecs_snapshot已設為false,雲端硬碟儲存卷的資料備份同樣通過雲備份實現。您可以在雲備份控制台左側導覽列單擊容器備份,在備份任務頁簽中找到每個儲存聲明的備份進展及結果。

ECS快照方案

如果您的應用使用了雲端硬碟儲存,且希望使用ECS快照方案完成雲端硬碟備份。請參考如下操作進行資料備份。

  1. 確認ECS快照功能已開啟。

    1. 執行以下命令編輯csdr-config

      kubectl -ncsdr edit cm csdr-config 
    2. 確認enable_ecs_snapshot配置項為true,否則修改並儲存退出。

    3. 若配置已修改,執行以下命令,重啟工作群組件使配置生效。

      kubectl -ncsdr delete pod -l control-plane=csdr-controller
  2. 若恢複帳號下還未有備份的倉庫,請建立備份倉庫並關聯恢複帳號下以cnfs-oss-*格式命名的OSS Bucket。具體操作,請參見建立備份倉庫

  3. 為sts-oss建立備份。具體操作,請參見建立備份計劃或立即備份

    • 由於sts-oss應用需要使用原OSS bucket,即不需要備份OSS儲存卷中的資料,因此需要為其單獨建立備份,建立備份任務時,備份資料卷勾選不開啟

    • 假設sts-oss應用運行在命名空間OSS中,備份僅選擇包含命名空間OSS的應用。(若sts-oss應用與其他應用在同一命名空間,可通過指定標籤選擇備份)。

    • 應用備份備份記錄頁簽,確認相關備份任務的狀態由InProgress轉為Completed。單擊備份記錄名稱,確認sts-oss相關的資源,如StatefulSet、Pod、PVC、PV及存放AK資訊的Secret均已備份。

  4. 為sts-nas、sts-disk應用建立備份backup-nas-disk。具體操作,請參見建立備份計劃或立即備份

    • 建立備份任務時,備份資料卷勾選已掛載資料卷

    • 雲端硬碟儲存卷的資料備份預設通過ECS快照實現,您可以在ECS控制台左側導覽列單擊快照,在雲端硬碟快照頁簽中找到每塊雲端硬碟對應的快照。

    • NAS儲存卷的資料備份預設通過雲備份實現,您可以在雲備份控制台左側導覽列單擊容器備份,在備份任務頁簽中找到每個儲存聲明的備份進展及結果。

步驟四:在恢複叢集中建立恢複任務

重要
  • 在建立恢複任務之前,您需要在恢複叢集中預先安裝並配置好所需的系統組件。例如:

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

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

  • 若恢複叢集中已存在同名的資源,則恢複任務將跳過該資源。

說明
  • 若您的應用未使用雲端硬碟儲存,請直接根據云備份方案進行恢複。

  • Service資源恢複時,根據Service類型的不同將進行如下適配:

    • NodePort類型的Service:跨叢集恢複時,預設保留連接埠號碼。

    • LoadBalancer類型的Service:ExternalTrafficPolicy為Local時,HealthCheckNodePort預設使用隨機連接埠號碼。若您需要保留連接埠號碼,請在建立恢複任務時,設定spec.preserveNodePorts: true

    • 在備份組群中由指定已有SLB的Service,恢複時將使用原有的SLB並預設關閉強制監聽,您需要前往SLB控制台配置監聽。

    • 在備份組群中由CCM管理SLB的Service,恢複時將由CCM建立新的SLB執行個體,更多資訊,請參見Service的負載平衡配置注意事項

雲備份方案

您需要使用恢複帳號,在恢複叢集下執行以下操作。

  1. 建立恢複任務,恢複sts-oss應用。具體操作,請參見恢複應用和資料卷

    1. 應用備份頁面單擊立即恢複,選擇備份倉庫並初始化,等待備份同步至恢複叢集。

    2. 選擇備份backup-oss建立恢複任務。

    3. 在恢複叢集中確認sts-oss是否正常恢複。可通過kubectl exec命令進入容器中檢查資料是否一致。

  2. 建立恢複任務,恢複sts-nas、sts-disk應用,並通過儲存類轉換恢複資料的儲存類型。具體操作,請參見恢複應用和資料卷

    1. 應用備份頁面單擊立即恢複,選擇備份backup-nas-disk。並為pvc-disk選擇儲存類alicloud-disk、為pvc-nas選擇儲存類alibabacloud-cnfs-nas。

      其中alicloud-disk預設指代CSI提供的alicloud-disk-topology-alltype儲存類。您也可以在叢集中建立自訂的儲存類用於轉換。

    2. 在恢複叢集中確認應用、資料是否正常。您可以在ECS控制台確認是否在恢複帳號中建立了新雲端硬碟並掛載至對應的節點上。

ECS快照方案

  1. 使用恢複帳號,在恢複叢集下建立恢複任務,恢複sts-oss應用。具體操作,請參見恢複應用和資料卷

    1. 應用備份頁面單擊立即恢複,選擇備份倉庫並初始化,等待備份同步至恢複叢集。

    2. 選擇備份backup-oss建立恢複任務。

    3. 在恢複叢集中確認sts-oss是否正常恢複。可通過kubectl exec命令進入容器中檢查資料是否一致。

  2. 切換至備份帳號,在ECS控制台將快照集共用給恢複帳號。具體操作,請參見共用快照

    由備份中心建立的快照均以“snapshot-”開頭,您可通過備份記錄的建立時間快速確認目標快照。

  3. 為方便後續手動恢複雲端硬碟類型儲存卷,在備份帳號下記錄以下映射關係:

    1. 在ECS控制台中查詢並記錄建立的快照ID與雲端硬碟ID之間的映射。

    2. 在備份組群中查詢並記錄雲端硬碟類型PVC及其對應的雲端硬碟ID。

      執行以下操作,同時擷取某個雲端硬碟類型PV對應的PVC與雲端硬碟資訊:

      kubectl get pv <PV-Name> -o jsonpath='{"PVC: "}{.spec.claimRef.name}{"\nNamespace: "}{.spec.claimRef.namespace}{"\nVolumeHandle: "}{.spec.csi.volumeHandle}'

      預期輸出類似:

      PVC: <disk-pvc-name>
      Namespace: <disk-pvc-namespace>
      VolumeHandle: d-2ze323ra0h2v5lxxxxx

      其中PVC與Namespace分別為雲端硬碟類型PVC的名稱及所在命名空間,VolumeHandle為通過備份建立的雲端硬碟ID。

    3. 結合上述資訊,可建立雲端硬碟類型PVC與對應的快照ID之間的映射。

  4. 切換至恢複帳號,在資源共用控制台接收共用的快照。具體操作,請參見共用快照

    快照集共用至恢複帳號後,快照名稱不變,但快照ID已變更。

    您可通過快照名稱得到新舊快照ID的映射關係。結合步驟3中的映射,建立雲端硬碟類型PVC與共用出來的新快照ID的映射關係。

  5. 在恢複叢集中手動恢複雲端硬碟類型的儲存卷,對單個卷的恢複,具體步驟如下:

    1. 以靜態方式在恢複叢集中建立VolumeSnapshotContent及VolumeSnapshot資源,具體操作,請參見為單個雲端硬碟儲存卷建立快照。其中VolumeSnapshot資源需要與PVC在同一命名空間下,VolumeSnapshotContent中的snapshotHandle為共用出來的新快照ID。

    2. 通過VolumeSnapshot建立與原PVC同名的新PVC,具體操作,請參見為單個雲端硬碟儲存卷建立快照中的步驟6。其中,除追加的dataSource欄位外,其他配置建議與原PVC一致。

  6. 在恢複叢集中建立恢複任務,恢複sts-nas 、sts-disk應用。具體操作,請參見恢複應用和資料卷

    其中,由於sts-disk應用使用的儲存卷已恢複,在本次恢複中會預設跳過這些儲存卷的恢複,恢複時sts-disk應用的負載將自動掛載同名的PVC。

    1. 應用備份頁面單擊立即恢複,選擇備份backup-nas-disk。在不選擇儲存類轉換的情況下,將預設使用原儲存類進行恢複,恢複前請確認儲存類存在。

    2. 在恢複叢集中確認應用、資料是否正常。您可在ECS控制台確認是否在恢複帳號中建立了新雲端硬碟並掛載至對應的節點上。

(可選)步驟五:將備份組群移出註冊叢集,重新部署組件

  • 若您不需要再進行跨帳號備份和恢複,您可以將備份組群從註冊叢集中移除。

  • 若您需要在備份帳號下的備份組群中繼續使用備份中心,請卸載組件後,使用備份帳號重新安裝。

相關文檔