其他云廠商Kubernetes集群應(yīng)用遷移至ACK集群
將其他云廠商的Kubernetes集群接入到注冊(cè)集群后,您可以通過備份中心對(duì)集群中部署的應(yīng)用及數(shù)據(jù)進(jìn)行備份,并在ACK集群中恢復(fù),實(shí)現(xiàn)應(yīng)用跨云的快速遷移。本文介紹如何使用備份中心將注冊(cè)集群的應(yīng)用遷移至ACK集群。
前提條件
已創(chuàng)建注冊(cè)集群,并將其他云廠商Kubernetes集群(大于1.16版本)接入注冊(cè)集群。具體操作,請(qǐng)參見創(chuàng)建注冊(cè)集群。
已創(chuàng)建和注冊(cè)集群在同一地域的用于恢復(fù)應(yīng)用的ACK集群,建議恢復(fù)集群為1.18及以上版本。具體操作,請(qǐng)參見創(chuàng)建ACK托管集群和創(chuàng)建ACK專有集群。
重要恢復(fù)集群必須使用CSI存儲(chǔ)插件,使用Flexvolume存儲(chǔ)插件或通過csi-compatible-controller組件同時(shí)使用CSI Flexvolume存儲(chǔ)插件的集群不支持恢復(fù)。
備份中心關(guān)注業(yè)務(wù)應(yīng)用的備份和恢復(fù)。在恢復(fù)任務(wù)之前,您需要在恢復(fù)集群中預(yù)先安裝并配置好所需的系統(tǒng)組件。例如:
ACR免密組件:您需要為恢復(fù)集群重新授權(quán)并配置acr-configuration。
ALB Ingress組件:您需要預(yù)先配置ALBConfig等。
注冊(cè)集群和ACK集群均已開啟集群備份。具體操作,請(qǐng)參見安裝備份服務(wù)組件并配置權(quán)限。
對(duì)已通過CEN、高速通道、專線、VPN等方式與云上VPC互通的注冊(cè)集群,已配置指向OSS內(nèi)網(wǎng)網(wǎng)段的路由。更多信息,請(qǐng)參見OSS內(nèi)網(wǎng)域名與VIP網(wǎng)段對(duì)照表。
已開通云備份(Cloud Backup)服務(wù)。具體操作,請(qǐng)參見云備份(Cloud Backup)。
適用場景
云備份容災(zāi):備份容災(zāi)遷移一體化,實(shí)現(xiàn)快速應(yīng)用上云與數(shù)據(jù)災(zāi)備。
注意事項(xiàng)
備份本地存儲(chǔ)時(shí),需要通過PV和PVC的方式掛載本地卷。
備份其他云廠商的對(duì)象存儲(chǔ)、文件存儲(chǔ)、塊存儲(chǔ)時(shí),需要使用CSI插件通過PV和PVC的方式掛載相應(yīng)存儲(chǔ)卷。
注冊(cè)集群、線上ACK集群和OSS Bucket需要在同一地域內(nèi)。
若需要保證應(yīng)用數(shù)據(jù)的強(qiáng)一致性,在備份完成前請(qǐng)暫停業(yè)務(wù)數(shù)據(jù)的寫入。
準(zhǔn)備工作
本文以MySQL應(yīng)用為例,在其他云廠商Kubernetes集群中部署應(yīng)用后,通過接入注冊(cè)集群,在注冊(cè)集群中創(chuàng)建備份任務(wù)進(jìn)行備份,然后在ACK集群中進(jìn)行恢復(fù)。應(yīng)用遷移前,請(qǐng)確認(rèn)已完成所有前提條件,并滿足如下條件。
注冊(cè)集群:
確認(rèn)已創(chuàng)建RAM用戶并配置OSS與云備份權(quán)限,并使用RAM用戶的AccessKey ID和AccessKey Secret在注冊(cè)集群的csdr命名空間中創(chuàng)建alibaba-addon-secret的Secret資源。執(zhí)行以下命令,確認(rèn)alibaba-addon-secret已存在。
kubectl get secret alibaba-addon-secret -n csdr
預(yù)期輸出:
alibaba-addon-secret Opaque 2 5d22h
ACK集群:
若使用ACK托管集群,請(qǐng)確認(rèn)已開通云備份服務(wù),且已創(chuàng)建cnfs-oss-****名稱的Bucket。
若使用ACK專有集群,請(qǐng)確認(rèn)已為Worker RAM角色配置OSS與云備份權(quán)限。具體操作,請(qǐng)參見ACK專有版集群權(quán)限配置。
步驟一:在其他云廠商Kubernetes集群中部署應(yīng)用
本文以其他云廠商Kubernetes集群中一個(gè)名為mysql-sts的MySQL應(yīng)用為例說明,該應(yīng)用使用的存儲(chǔ)聲明為mysql-pvc,存儲(chǔ)卷為mysql-pv,mysql-pv對(duì)應(yīng)的掛載點(diǎn)路徑為/mnt
。
執(zhí)行以下命令,創(chuàng)建命名空間test1。
kubectl create namespace test1
使用CSI插件部署通過PV和PVC的方式掛載存儲(chǔ)的MySQL應(yīng)用。具體操作,請(qǐng)參見對(duì)應(yīng)云廠商的CSI存儲(chǔ)文檔。若集群不支持CSI存儲(chǔ)插件,可接入注冊(cè)集群后使用阿里云CSI插件進(jìn)行掛載。更多信息,請(qǐng)參見存儲(chǔ)-CSI。
執(zhí)行以下命令,確認(rèn)MySQL應(yīng)用部署成功。
kubectl -n test1 get pod| grep mysql-sts
預(yù)期輸出:
mysql-sts-0 1/1 Running 0 1m02s
執(zhí)行以下命令,確認(rèn)存儲(chǔ)卷的配置。
kubectl -n test1 get pv mysql-pv -oyaml
預(yù)期輸出:
csi: driver: **** volumeAttributes: xxxx: xxxx xxxx: xxxx volumeHandle: mysql-pv
預(yù)期輸出表明,存儲(chǔ)卷包含CSI字段。
執(zhí)行以下命令,進(jìn)入MySQL容器。
kubectl -n test1 exec -it mysql-sts-0 -- /bin/bash
在MySQL容器中執(zhí)行以下命令,模擬需要備份的數(shù)據(jù)。
cd /mnt && touch test && ls
預(yù)期輸出:
test
步驟二:在注冊(cè)集群中備份MySQL應(yīng)用及數(shù)據(jù)
由于注冊(cè)集群已接入其他云廠商Kubernetes集群,您可以在注冊(cè)集群中進(jìn)行備份任務(wù)操作,具體步驟如下:
(可選)若賬號(hào)下無可使用的備份倉庫,請(qǐng)創(chuàng)建備份倉庫。具體操作,請(qǐng)參見創(chuàng)建備份倉庫。
在注冊(cè)集群中立即備份mysql-backup,部分配置項(xiàng)設(shè)置如下。具體操作,請(qǐng)參見創(chuàng)建備份任務(wù)。
配置項(xiàng)
示例
名稱
mysql-backup。
備份倉庫
為您上一步創(chuàng)建的備份倉庫。
備份命名空間
test1。
備份數(shù)據(jù)卷
選中備份存儲(chǔ)卷,默認(rèn)為您進(jìn)行數(shù)據(jù)備份。
在應(yīng)用備份頁面,單擊備份記錄頁簽,查看mysql-backup任務(wù)狀態(tài)由InProgress變?yōu)?b data-tag="uicontrol" id="uicontrol-t3t-sla-3gq" class="uicontrol">Completed,表示應(yīng)用及數(shù)據(jù)備份完成。
步驟三:在ACK集群中關(guān)聯(lián)對(duì)應(yīng)的備份倉庫
若您使用的是新創(chuàng)建的備份倉庫,或者此前在ACK恢復(fù)集群中從未關(guān)聯(lián)過該備份倉庫,需要先進(jìn)行關(guān)聯(lián)。
在應(yīng)用備份頁面,單擊立即恢復(fù)頁簽。
在彈出的立即恢復(fù)面板中,填寫名稱,選擇備份倉庫,單擊備份倉庫右側(cè)的初始化倉庫,將ACK恢復(fù)集群和指定的備份中心進(jìn)行關(guān)聯(lián)。
每個(gè)備份倉庫只需要關(guān)聯(lián)一次,倉庫初始化完成后,在注冊(cè)集群中創(chuàng)建的備份任務(wù)將自動(dòng)同步到當(dāng)前ACK集群。
初始化完成后,選擇備份倉庫中待恢復(fù)的任務(wù),然后單擊確定。
在備份記錄頁簽,等待mysql-backup備份任務(wù)出現(xiàn)在列表中。
步驟四:在ACK集群中恢復(fù)MySQL應(yīng)用及數(shù)據(jù)
本文以將應(yīng)用的存儲(chǔ)轉(zhuǎn)換為alibabacloud-cnfs-nas存儲(chǔ)類為例,說明如何在線上ACK集群中恢復(fù)應(yīng)用。
應(yīng)用恢復(fù)過程將以動(dòng)態(tài)掛載的形式為MySQL應(yīng)用掛載指定存儲(chǔ)類為alibabacloud-cnfs-nas的存儲(chǔ)聲明,并將數(shù)據(jù)恢復(fù)至關(guān)聯(lián)的存儲(chǔ)卷中,具體步驟如下。
創(chuàng)建恢復(fù)任務(wù)mysql-restore,并將MySQL應(yīng)用部署在ACK集群的test2命名空間中。部分配置項(xiàng)設(shè)置如下。具體操作,請(qǐng)參見恢復(fù)應(yīng)用和數(shù)據(jù)卷。
配置項(xiàng)
示例
名稱
mysql-restore。
備份倉庫
選擇備份倉庫為您之前創(chuàng)建的備份倉庫。
選擇備份
mysql-backup。
重定義命名空間
由test1變?yōu)?b data-tag="uicontrol" id="621b3e20591ch" class="uicontrol">test2。
存儲(chǔ)類轉(zhuǎn)換
在轉(zhuǎn)換的PVC列表中為mysql-pvc選擇存儲(chǔ)類alibabacloud-cnfs-nas。
單擊立即恢復(fù)右側(cè)的查看恢復(fù)記錄,查看mysql-restore任務(wù)狀態(tài)由InProgress變?yōu)?b data-tag="uicontrol" id="uicontrol-f3r-rgi-d49" class="uicontrol">Completed,表示應(yīng)用及數(shù)據(jù)恢復(fù)完成。
在ACK集群中執(zhí)行以下命令,確認(rèn)MySQL應(yīng)用部署成功。
kubectl -n test2 get pod | grep mysql-sts
預(yù)期輸出:
mysql-sts-0 1/1 Running 0 4s
在ACK集群中執(zhí)行以下命令,確認(rèn)數(shù)據(jù)已恢復(fù)正常。
執(zhí)行以下命令,確認(rèn)數(shù)據(jù)已恢復(fù)為alibaba-cnfs-nas存儲(chǔ)類。
kubectl -n test2 get pvc | grep mysql-pvc
預(yù)期輸出:
mysql-pvc Bound nas-**** 25Gi RWO alibabacloud-cnfs-nas 3m24s
執(zhí)行以下命令,確認(rèn)mysql-pvc已掛載到MySQL應(yīng)用中。
kubectl -n test2 describe pvc mysql-pvc | grep "Used By"
預(yù)期輸出:
Used By: mysql-sts-0
確認(rèn)模擬的數(shù)據(jù)已成功恢復(fù)。執(zhí)行以下命令,進(jìn)入MySQL容器。
kubectl -n test2 exec -it mysql-sts-0 -- /bin/bash
執(zhí)行以下命令,在MySQL容器中查詢模擬的數(shù)據(jù)。
cd /mnt && ls
預(yù)期輸出:
test
預(yù)期輸出表明,模擬的數(shù)據(jù)已成功恢復(fù)。