快速雲原生化,從資料中心到雲原生的遷移最佳實踐

阿里巴巴雲原生發表於2021-12-02

作者:劉大鵬(雨鏡)

前言

雲原生的時代已經到來,雲原生技術正在重塑整個軟體生命週期,阿里巴巴是國內最早佈局雲原生技術的公司之一。

容器服務團隊在過去的幾年時間內幫助很多使用者成功把業務雲原生化並遷移上雲,其中有現在已經是我們 TOP10 的大客戶,也有需要在國內開展業務的海外使用者,有些是從其他雲廠商遷移過來的使用者,有些是從 IDC 裡遷移上雲的使用者,而且越來越多的使用者開始諮詢如何對自己的應用做雲原生化改造、如何把業務平滑地遷移到雲上。每個使用者的業務場景都是不同的,有些差異化的業務場景對容器平臺也有一些定製化的需求,我們在幫助這些使用者落實遷雲方案的同時也在不斷思考如何把這些案例中共性的東西做一些沉澱,總結出一些優秀的解決方案、最佳實踐以及開發一些工具來幫助使用者快速完成遷雲的這件事情。這些解決方案、最佳實踐以及遷雲工具就是今天這篇文章想要分享的內容。

在幫助使用者落實遷雲方案之前,我們首先必須要回答至少 3 個問題:

(1)ACK(阿里雲容器服務 Kubernetes)如何能保證使用者業務的可靠性、穩定性、安全性和靈活性;

(2)如何設計遷雲方案把業務平滑地遷移到 ACK;

(3)應用如何做進一步改造來適配 ACK 提供的更強大的擴充套件能力。

ACK 如何保證使用者業務的可靠性、穩定性、安全性和靈活擴充性

首先,ACK 是以阿里雲可靠穩定的 IaaS 平臺為底座的,有最大的彈性化與低廉成本和全球化接入的優勢;其次,ACK 本身處於阿里雲的安全體系架構之下並從基礎設施到容器執行時環境對容器叢集有全維度的安全加固;過去幾年我們很好地支撐了成百上千家大小企業的業務執行,有海量使用者經驗總結並經過雙 11 驗證;除此之外。ACK 是在標準的 Kubernetes 基礎上,對與使用者息息相關的能力做了大幅提升,使用者完全不需要擔心會被某一家廠商繫結。

 title=

在我們過去幫助使用者業務上雲的案例中,絕大部分是自建 Kubernetes 叢集遷移到 ACK 叢集,與自建 Kubernetes 叢集相比較,ACK 在成本、彈性、IaaS 高度融合、效能、安全加固以及實踐經驗等方面都有非常巨大的優勢。

另外,ACK 與阿里雲的所有 region 保持一致,除了國內多個區域開服外,在東南亞、中東、歐洲、美東美西等地域都有開服,完全可以滿足使用者開展全球業務的需求。

整體遷雲方案設計

使用者業務整體遷雲的方案設計會涉及到叢集規劃、資料搬遷、監控切換、日誌切換以及最終的生產流量切換或併網操作。

 title=

遷雲到 ACK 需要做涉及到哪些元件、搬遷哪些資料、切換哪些服務等,都是需要需要在遷移上雲之前設計好的。

首先需要做叢集規劃,使用者需要根據自己業務場景的不同來選擇不同的機器型別,比如 CPU 機器還是 GPU 機器,比如虛擬伺服器ECS還是神龍裸金屬伺服器等等。

其次網路規劃這部分會涉及到容器叢集基礎設施選擇 vpc 內網網路還是經典網路,叢集內 pod 之間進行通訊模式是 flannel 模式還是 terway 模式等。

再次在容量規劃這部分,使用者可以根據自己的成本以及預算規劃一個可滿足初期業務正常執行的容量即可,隨後可以配置動態擴縮容隨時彈縮叢集規模。

第四在安全防護提升這部分,有基礎架構安全比如設定合理的安全組規則,有映象安全比如使用私有映象並定義映象安全掃描,Kubernetes 應用安全管理比如設定不同服務間互相訪問的網路安全策略等。

第五在監控切換這部分相對於使用者自建 Kubernetes 會更加全維度和立體,從基礎設施到容器執行時監控一應俱全,並可根據閾值設定觸發報警通知;使用者一般也會把自建的日誌收集方案切換成阿里雲上企業級的日誌產品 SLS。

第六在資料遷移是非常重要的一部分,這些資料包括資料庫資料、儲存資料、容器映象等,我們會對接阿里雲上企業級的產品以及遷移工具來完成資料的遷移,目的是為了保證資料遷雲的可靠性、安全性。目前備份中心支援雲下資料到雲上 ACK 的遷移,您可以使用備份中心來完成應用及資料到 ACK 的遷移。

最後在應用改造主要涉及的內容包括映象地址的更新、服務暴露方式的優化以及儲存盤掛載方式的更新適配。另外需要提供一個滿足使用者快速迭代上線產品的 CICD 方案。以上各個元件除錯完畢後,我們就可以進行一部分生產流量的切換。

以上是從叢集規劃到生產流量切換便是使用者業務遷移上雲所需要涉及到的總體幾個步驟。

 title=

我們提供了一個企業容器化生命週期模型,這個模型是根據時間階段和使用者側各個業務角色來劃分的,比如業務架構師角色需要關心的是業務上雲能給公司帶來什麼價值,在 TCO 和場景上會帶來哪些優化,雲平臺在安全性以及計算、儲存、網路能力上是否能滿足當前業務需求;IT 架構師負責規劃當前業務需要的叢集容量和規模以及網路選型等問題,剩下的就是系統管理員與應用管理員把遷雲方案的各個細節落實下來。這個模型的主要核心關注點是讓使用者的業務上雲後能更穩定、成本更低、效率更高。

全棧遷雲架構思路分兩種,一種是整體遷移,一種是平滑遷移。整體遷移是指使用者應用全部遷移上雲後,各個元件除錯完畢、測試驗收通過後,可以整體切換生產流量到線上叢集,待線上叢集上的業務穩定執行一段時間後再下線原有環境。平滑遷移是指使用者可以使用線上 ACK 叢集納管線下節點,或者線上叢集與線下叢集混合組網對外提供服務,逐步改造業務元件上雲後將原有環境下線。這兩種方式相比,整體遷移更簡單,平滑遷移響度複雜但對業務影響小,所以也需要根據使用者的實際場景做選擇。

 title=

容器化整體遷雲這部分還有兩個小場景,一個是使用者從自建 Kubernetes 叢集遷移到 ACK,此場景下使用者的應用已經做了很大一部分的雲原生化改造,遷移工作相對來說會簡單些,還有一部分使用者的應用是傳統應用,直接執行在虛擬機器或者裸金屬伺服器上,沒有做過任何雲原生化的改造,對於這部分場景,我們也提供了相關工具或方案幫助使用者進行雲原生化的遷雲改造,比如使用 derrick 專案可以自動檢測原始碼專案型別並生成 Dockerfile 和用於應用部署編排的 yaml 檔案。

 title=

為了幫助使用者提高遷雲的效率,我們也在持續積累和開源一些遷雲工具及產品。比 ack-image-builder 為使用者提供建立 ACK 叢集節點自定義映象的模板並通過校驗模組檢查自定義映象是否滿足 ACK 叢集要求;sync-repo 能夠幫助使用者快速完成容器映象批量遷移至 ACR(容器映象倉庫服務); 備份中心為無狀態或有狀態應用的備份、恢復與遷移提供了一站式的解決方案,特別是對混合雲,多叢集的有狀態應用提供了資料容災和應用遷移能力,能夠幫助使用者快速把其他雲廠商或者自建 Kubernetes 叢集下的完整應用及 PV 資料遷移至 ACK 叢集,並支援豐富的雲下儲存型別。

通過備份中心來實現已有 Kubernetes 叢集遷移的主要步驟如下:

  1. 線上下 Kubernetes 建立叢集(例如,Rancher 叢集),將線下叢集接入註冊叢集。具體操作,請參見建立註冊叢集並接入本地資料中心叢集;
  2. 雲上通過 ACK 建立託管版叢集,部署備份服務元件;
  3. 雲下納管叢集(即註冊叢集)安裝備份元件,並通過備份中心備份線下叢集的應用及 PV 資料,具體操作,請參見建立備份任務;
  4. 在雲上 ACK 叢集中,通過備份中心使雲下應用和資料的備份,在雲上進行恢復。

 title=

在資料搬遷部分,可靠遷移是關鍵。目前備份中心支援的雲下儲存型別為:

  • 資料中心本地塊儲存 SAN、Ceph OBD 及本地盤 LVM 等。
  • 資料中心檔案系統 HostPath、NFS、NetApp、GlusterFS 及 CephFS 等。
  • 資料中心本地物件儲存 Ceph S3 等。

通過備份中心,可以將雲下 Kubernetes 應用及 PV 資料遷移到 ACK 叢集,實現順利雲原生化改造。

 title=

資料、應用遷雲完成後,需要進一步適配監控、日誌等元件,待各個元件除錯完畢通過驗收後,可以使用智慧 DNS 進行生產流量的切割。

應用改造和優化

 title=

 title=

對於應用改造和優化這部分,Kubernetes 到 Kubernetes 的場景下,需要優化的是去適配自動擴容等自建 Kubernetes 不具備的那些能力,在傳統應用遷移到 ACK 的場景下,這部分的工作量會更大些,所以我們針對這個場景也輸出了一些方案,比如類似於異地多活的方案,我們把使用者傳統應用環境,通常是虛擬機器或者裸機環境整合到線上 ACK 部署的 Istio 網格中,逐步改造應用直至業務全部切換到線上 ACK 叢集。

 title=

在應用逐步改造的這個過程中,會涉及到應用如何容器化、網路環境如何遷移以及資料遷移的問題,應用容器化這個問題,我們可以使用SMC遷雲中心來完成虛擬機器轉換為容器映象的過程,網路這部分可以通過 iptables,External,CoreDNS PrivateZone 等方式對 IP 地址 DNS 域名做處理,保持原先的邏輯 IP 和域名不變,並通過 Istio 實現網路虛擬路由和可觀測性的管理。

案例和總結

 title=

最後列舉的是部分遷雲案例,其中有對高效能網路有特殊需求的使用者,有做深度學習相關業務對大規模 GPU 機器有需求的使用者,也有要求裸金屬機型伺服器的使用者等等。

以上這些不同使用者的不同業務場景在雲原生化遷雲方案的設計和落實上都有各自的差異性,不盡相同,需要結合 ACK 團隊沉澱下來的最佳實踐來快速做出評估和計劃,並藉助已有的一系列遷雲工具快速完成業務從線下遷移上雲的過程。

其他

ack-image-builder 能夠幫助使用者製作符合 ACK 叢集節點要求的自定義映象

sync-repo 能夠幫助使用者快速完成容器映象批量遷移至 ACR(容器映象倉庫服務)

跨叢集恢復 Kunbernetes 應用備份中心能夠幫助使用者快速把其他雲廠商或者自建 Kubernetes 叢集下的完整應用遷移至 ACK 叢集

相關連結

1)ACK(阿里雲容器服務Kubernetes):

https://cs.console.aliyun.com...

2)derrick:

https://github.com/alibaba/de...

3)ack-image-builder:

https://github.com/AliyunCont...

4)sync-repo:

https://github.com/AliyunCont...

5)ACR(容器映象倉庫服務)

https://cr.console.aliyun.com...

6)備份中心

https://help.aliyun.com/docum...

7)Rancher叢集

https://rancher.com/docs/ranc...

8)建立註冊叢集並接入本地資料中心叢集

https://help.aliyun.com/docum...

9)建立備份任務

https://help.aliyun.com/docum...

10)ack-image-builder

https://github.com/AliyunCont...

11)sync-repo

https://github.com/AliyunCont...

12)ACR(容器映象倉庫服務)

https://cr.console.aliyun.com...

13)跨叢集恢復Kunbernetes應用

https://help.aliyun.com/docum...

??點選此處,即可檢視容器服務 ACK 產品詳情!

近期熱門

#雲原生加速器,為你而來#

就等你了!趕快點選下圖瞭解詳情吧~

 title=

相關文章