將其他雲廠商的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 5d22hACK叢集
若使用ACK託管叢集,請確認已開通Cloud Backup服務,且已建立名為cnfs-oss-****的Bucket。
若使用ACK專有叢集,請確認已為Worker RAM角色配置OSS與Cloud Backup許可權。具體操作,請參見ACK專有版叢集許可權配置。
步驟一:在其他雲廠商Kubernetes叢集中部署應用
本文以一個部署在其他雲廠商Kubernetes叢集中的MySQL應用為例。該應用儲存聲明為mysql-pvc,儲存卷為mysql-pv,對應的掛載點路徑為/mnt。
執行以下命令,建立命名空間test1。
kubectl create namespace test1使用CSI外掛程式部署通過PV和PVC的方式掛載儲存的MySQL應用。具體操作,請參見對應雲廠商的CSI儲存文檔。
若叢集不支援CSI儲存外掛程式,可接入ACK One註冊叢集後使用阿里雲CSI外掛程式進行掛載。更多資訊,請參見儲存-CSI。
執行以下命令,確認MySQL應用部署成功。
kubectl -n test1 get pod| grep mysql-sts預期輸出:
mysql-sts-0 1/1 Running 0 1m02s執行以下命令,確認儲存卷的配置。
kubectl -n test1 get pv mysql-pv -oyaml預期輸出:
csi: driver: **** volumeAttributes: xxxx: xxxx xxxx: xxxx volumeHandle: mysql-pv預期輸出表明,儲存卷包含CSI欄位。
執行以下命令,進入MySQL容器。
kubectl -n test1 exec -it mysql-sts-0 -- /bin/bash在MySQL容器中執行以下命令,類比需要備份的資料。
cd /mnt && touch test && ls預期輸出:
test
步驟二:在ACK One註冊叢集中備份MySQL應用及資料
ACK One註冊叢集已接入其他雲廠商的Kubernetes叢集。您可以在ACK One註冊叢集中完成備份任務。步驟如下。
步驟三:在ACK叢集中關聯對應的備份倉庫
若您使用的是新建立的備份倉庫,或者此前在ACK恢複叢集中從未關聯過該備份倉庫,需要先進行關聯。
在應用備份頁面,單擊立即恢複頁簽。
在彈出的立即恢複面板中,填寫名稱,選擇備份倉庫,單擊備份倉庫右側的初始化倉庫,以關聯ACK恢複叢集和備份中心。
每個備份倉庫只需要關聯一次,倉庫初始化完成後,在ACK One註冊叢集中建立的備份任務將自動同步到當前ACK叢集。
初始化完成後,選擇備份倉庫中待恢複的任務,然後單擊確定。
在備份記錄頁簽,等待mysql-backup任務出現在列表中。
步驟四:在ACK叢集中恢複MySQL應用及資料
線上上ACK叢集中恢複應用時,將以動態掛載的形式為MySQL應用掛載指定儲存類為alibabacloud-cnfs-nas的儲存聲明,並將資料恢複至關聯的儲存卷中。
建立恢複任務mysql-restore,並將MySQL應用部署在ACK叢集的test2命名空間中。部分配置項設定如下。具體操作,請參見恢複應用和資料卷。
配置項
樣本
名稱
mysql-restore。
備份倉庫
選擇備份倉庫為您之前建立的備份倉庫。
選擇備份
mysql-backup。
重定義命名空間
由test1變為test2。
儲存類轉換
在轉換的PVC列表中為mysql-pvc選擇儲存類alibabacloud-cnfs-nas。
單擊立即恢複右側的查看恢複記錄,等待mysql-restore任務狀態由InProgress變為Completed,表示應用及資料恢複完成。
在ACK叢集中執行以下命令,確認MySQL應用部署成功。
kubectl -n test2 get pod | grep mysql-sts預期輸出:
mysql-sts-0 1/1 Running 0 4s在ACK叢集中執行以下命令,確認資料已恢複正常。
確認資料已恢複為alibaba-cnfs-nas儲存類。
kubectl -n test2 get pvc | grep mysql-pvc預期輸出:
mysql-pvc Bound nas-**** 25Gi RWO alibabacloud-cnfs-nas 3m24s確認mysql-pvc已掛載到MySQL應用中。
kubectl -n test2 describe pvc mysql-pvc | grep "Used By"預期輸出:
Used By: mysql-sts-0確認類比的資料已成功恢複。執行以下命令,進入MySQL容器。
kubectl -n test2 exec -it mysql-sts-0 -- /bin/bash在MySQL容器中查詢類比的資料。
cd /mnt && ls預期輸出:
test預期輸出表明,類比的資料已成功恢複。