天天看點

應雲而生,原力覺醒 - 雲原生基礎設施

阿裡雲容器服務團隊

應雲而生,原力覺醒 - 雲原生基礎設施
雲原生是雲計算領域的熱點之一。就像 “一千個人眼裡有一千個哈姆雷特”,大家對"雲原生"的定義也見仁見智。在CNCF-雲原生計算基金會的 定義

中 :

“雲原生技術有利于各組織在公有雲、私有雲和混合雲等新型動态環境中,建構和運作可彈性擴充的應用。雲原生的代表技術包括容器、服務網格、微服務、不可變基礎設施和聲明式API。

這些技術能夠建構容錯性好、易于管理和便于觀察的松耦合系統。結合可靠的自動化手段,雲原生技術使工程師能夠輕松地對系統作出頻繁和可預測的重大變更。

雲原生計算基金會(CNCF)緻力于培育和維護一個廠商中立的開源生态系統,來推廣雲原生技術。我們通過将最前沿的模式民主化,讓這些創新為大衆所用。”

在我們的了解中,雲原生計算包含三個次元的内容

應雲而生,原力覺醒 - 雲原生基礎設施

  • 可程式設計的、動态的、彈性基礎設施
    • 支援公共雲、專有雲、邊緣計算等不同環境
  • 分布式應用架構
    • 具備松耦合、可彈性擴充、高容錯性等特點
  • 創新的應用開發、傳遞方式
    • 基于自動化、可觀測、可管理的軟體傳遞流程,加速創新效率的同時保障系統穩定性

本系列将和大家分享阿裡雲容器服務團隊在雲原生計算領域的探索和思考。我們今天将聚焦在雲原生基礎設施。

雲原生基礎設施

Gartner将雲原生基礎設施劃分成四大類

應雲而生,原力覺醒 - 雲原生基礎設施

原圖:

https://blogs.gartner.com/tony-iams/containers-serverless-computing-pave-way-cloud-native-infrastructure/
分類

IaaS

Infrastructure as a Service

CaaS

Container as a Service

Serverless容器

fPaaS/FaaS

Function PaaS/Function as a Service

代表産品 彈性計算 - ECS K8s服務 - ACK

Serverless K8s - ASK

彈性容器執行個體 - ECI

函數計算 - FunctionCompute
虛拟化技術 硬體虛拟化 作業系統虛拟化 - 容器 MicroVM 容器或應用運作時虛拟化
應用傳遞

虛拟機鏡像

配合自動化腳本

容器鏡像 應用代碼

應用相容性

靈活性

擴容機關 虛拟機 Pod 函數執行個體
彈性效率 分鐘級 秒級 毫秒級

我們可以看到這幾類基礎設施,計算單元的粒度越來越細,也越來越多展現的雲原生的特質

  1. 子產品化程度越高 - 自包含的應用打包方式,應用與底層實體基礎設施解耦
  2. 自動化運維程度越來越高 - 自動化的資源排程和彈性伸縮能力,使用者将關注點逐漸聚焦到應用自身。
  3. 彈性效率越來越高 - VM可以實作分鐘級擴容;容器可以實作秒級擴容;函數可以做到毫秒級擴容。
  4. 故障回複能力越來越高 - 随着系統自愈性的增強,大大簡化了應用架構容錯的複雜性。

為了更好的了解雲原生計算出現的時代背景,我們必須要了解雲計算的經濟學基礎與核心競争力所在。

應“雲”而生

經濟學家亞當·斯密提出:分工是社會發展的必然,而且分工将極大的提高生産效率。從經濟學的角度來講,雲計算是IT産業發展的必然階段。網際網路和移動網際網路時代的到來,加速了企業的數字化轉型。雲計算可以提供時刻線上的服務能力,并滿足日益增長不斷變化的計算需求。此外,雲計算将IT服務的固定成本投入轉化成為了可變成本,極大降低了創新成本。在咖啡館中,随處可見創業的青年人圍坐在一起構畫未來,是網際網路和雲計算讓夢想變得觸手可及。

雲計算的規模經濟

雲計算的經濟學基礎的來自規模經濟。直覺上,批量采購,帶來更低的供應鍊成本;大型資料中心,降低營運成本。更重要的是,由于不同使用者不同時間的工作負載不同,可以利用規模優勢進行削峰填谷。結合自動化、智能化的供應鍊和營運體系,進一步提升了硬體資産營運效率。雲計算正如電力這樣的公共服務基礎設施,集中發電比每家每戶自建發電機,有更低的成本和更高的效率。

此外,雲計算是典型的平台型業務模式。随着規模的增長,會産生網絡效應。提供為企業提供産品/服務的ISV與SI,會更加青睐于那些擁有更多使用者的雲平台。而使用者會更加傾向于能夠提供豐富技術産品和服務支撐生态的雲平台。随着雲平台的成長,将對使用者和生态産生更強的吸引力。

雲計算的核心技術創新加速規模效應的形成。比如,計算資源池化與虛拟化技術,讓應用和底層硬體資源解耦。一方面提升資源使用率,降低計算成本;一方面提升了資源的彈性供給,彈性成為差異化雲基礎設施和傳統IDC的關鍵能力。

此外在傳統IT中,軟體、硬體和服務由不同廠商分離傳遞。而雲計算将軟體、硬體、服務一體化傳遞,極大降低了計算成本,提升了傳遞效率,提供了創新的技術能力。這裡面有幾個關鍵點:

  • 軟硬一體設計,可以針對規模和性能進行全棧優化,極大降低計算成本。而且由于雲計算的規模效應,随着産量的增加,邊際成本會拉低平均制造成本。全球主流雲廠商都在IDC設計、網絡、晶片等方向加大自研投入。
  • 以API方式傳遞IT能力,一方面可程式設計的基礎設施極大提升了IT的靈活性,更好地支援業務靈活性;一方面API可以更加友善地被內建到三方服務商的解決方案中。進一步加速規模效應産生
  • 随着IT能力的規模化,一些資料化、智能化的創新的技術和業務模式的形成。比如ECS當機預測和自動熱遷移,可以将虛拟機的SLA提升到傳統需要硬體備援才能達到的穩定性标準;RDS對資料庫的自動優化和問題診斷,無需DBA的人力過多介入。

雲原生的崛起

2013年春,Docker技術開源宣告了雲原生計算的序幕。Docker公司創新地提出了應用打包規範 Docker鏡像,它将應用及其所有依賴項打包,進而使應用可以在不同的計算環境之間快速、可靠地運作。容器技術提供了一個優雅的抽象,讓開發所需要的靈活性、開放性和運維所關注的标準化、自動化達成平衡。容器鏡像迅速成為了應用分發的工業标準。随後Google開源的Kubernetes因為其優秀的開放性,可擴充性和活躍的社群,在容器編排之戰中脫穎而出,成為分布式資源排程和自動化運維的事實标準。Kubernetes屏蔽了底層基礎架構的差異,提供了良好的可移植性可以幫助應用一緻地運作在不同的環境,包括資料中心、雲、邊緣計算等。

在技術上,容器技術徹底解耦了應用和運作時環境,可以幫助應用更加快速平滑地遷雲;容器輕量化、自包含的特性極大簡化了應用彈性,釋放雲的核心價值。此外,容器技術的标準化促進生态的分工和協同。基于Kubernetes,社群開始建構上層的業務抽象。比如,服務網格Istio,機器學習平台Kubeflow,無伺服器應用架構Knative等等。通過這樣的架構分層,進一步降低了技術門檻,加速了雲價值釋放。對于企業客戶而言,他們可以通過Kubernetes這樣的開放标準來設計企業的雲架構,可以避免廠商鎖定的顧慮,更好支援多雲/混合雲。容器技術和生态的發展會加速雲計算規模經濟形成。所有的雲廠商都在加大對容器技術領域的投入。

作為雲原生技術的演進,無伺服器計算(Serverless)進一步釋放了雲計算的能力,将彈性伸縮、高可用、安全等需求由基礎設施實作。無伺服器計算抽象了運作時環境,讓開發人員可以将更多的精力放在應用程式的設計和優化上,而不是與基礎架構相關的配置和管理上;Serverless應用可以迅速彈性伸縮,使用者無需進行容量規劃;采用按需付費的模型,使用者隻按應用實際消耗的資源付費。在無伺服器計算中,應用邏輯被解耦為多個函數,每個函數可以通過事件驅動的方式觸發執行。執行粒度進一步細化可以進一步提升了彈性的效率,此外還把應用部署從本地代碼(如x86指令集)提升到了進階語言層面,這給成本優化帶來了更多的空間。(比如可以在ARM等低成本的計算資源上來運作Python/NodeJS腳本。)這推動了進一步的社會分工,雲廠商可以通過規模化、集約化和技術創新實作計算成本的持續優化。

伯克利的論文

《A Berkeley View on Serverless Computing》

提出斷言:Serverless 計算将會成為雲時代預設的計算範式。但是這條路還很漫長,現有無伺服器計算FaaS也存在自身的局限性:

  1. FaaS應用架構和研發、傳遞流程和傳統應用相比有很大的改變
  2. 可移植性和廠商鎖定的顧慮,FaaS依然缺乏标準,而且通常需要依賴大量的後端服務(BaaS, Backend as a Service),這導緻了為AWS開發的Serverless應用較難移植到阿裡雲的平台,或者在自己的資料中心中運作。
  3. FaaS也引入了一些新的技術挑戰,比如冷啟動會導緻應用響應延遲,按需建立資料庫連接配接成本高等等,需要平台能力的持續增強。

雲原生之路

企業上雲之路,要根據自己的業務需求,技術能力群組織結構來選擇合适的路徑。

應雲而生,原力覺醒 - 雲原生基礎設施

我們可以将遷移之路分為3類

  • Rehost 新托管 - 簡單地通過lift-and-shfit方式,将線下實體機替換成為雲上虛拟機或者裸金屬執行個體,不改變原有的運維方式。
  • Re-platform 新平台 - 利用托管的雲服務替換線下自建應用基礎設施,比如通過RDS資料庫服務替換自建MySQL,通過容器服務,比如阿裡雲ACK來取代自建K8s叢集。托管的雲服務通常提供更好的彈性、穩定性和自治運維能力,可以讓使用者關注于應用而非基礎設施管理。
  • Refactor/Re-architect 重構/新架構 - 包括單體應用的微服務架構改造,應用的容器化和Serverless化整體開發和傳遞架構改造。

從Rehost, Re-platform到Re-architect,我們可以看到遷移的成本和複雜性在增加,但是靈活性、彈性、可用性、容錯性等收益也在持續增加。雲原生已經成為勢不可擋的技術趨勢。在CNCF 2020年釋出的

《雲原生開發狀态報告》

中,我們可以看到全球有470萬雲原生開發者,占全部後端開發者的36%。其中包括290萬使用容器技術以及330萬使用Serverless架構的開發人員。

雲原生基礎設施的未來趨勢

站在容器角度,我們看到未來雲原生基礎設施的一些技術趨勢。

應雲而生,原力覺醒 - 雲原生基礎設施

趨勢一:無處不在的計算催生新一代容器實作

在1988年,當時施樂PARC的首席科學家Mark Weiser提出了“Ubiquitous Computing”的概念,“在未來,計算将無處不在”。随着網際網路的發展和進化,5G, AIoT等新技術的湧現,随處可見的計算需求已經成為現實,無處不在地計算正在改變我們的世界。

針對不同計算場景,容器運作時有不同的需求。比如在傳統資料中心,基于作業系統虛拟化的RunC/Docker容器可以很好地滿足大部分業務需求。如何提升更好的安全隔離能力,KataContainer,Firecracker, gVisor, Unikernel等新技術層出不窮。但是沒有任何一款容器技術可以在安全隔離性、執行效率和通用性上都做到完美。我們在相當長的一個曆史階段,依然可以看到多種技術路線并存和多彩紛呈的競争。OCI(Open Container Initiative)标準的出現,可以對不同的技術采用一緻的方式進行容器生命周期管理,進一步促進了容器引擎技術的持續創新。

應雲而生,原力覺醒 - 雲原生基礎設施

其中幾個主要的趨勢

  • 基于MicroVM的安全容器的占比将逐漸增加,可以提供更高的安全隔離能力。虛拟化和容器技術的融合,已經成為了一個重要趨勢。在公共雲上,比如AWS的Firecracker已經成為Lambda/Fargate等Serverless雲服務的基礎設施。阿裡雲的袋鼠容器引擎,已經成為ECI/ASK的基礎。
  • 基于軟硬一體設計的機密計算容器開始展露頭角。比如,阿裡雲安全、系統軟體、容器服務團隊和螞蟻可信原生團隊共同推出了面向機密計算場景的開源容器運作時技術棧 inclavare-containers 支援基于Intel SGX機密計算技術的機密容器實作,如螞蟻的 Occlum ,開源社群的 Graphene 等Libary OS。降低機密計算的技術門檻,簡化可信應用的開發、傳遞和管理。
  • OS的虛拟化創新也從未停步,從Linux 4.5核心開始cgroup v2接口在逐漸成熟,将進一步完善了資源隔離性。Docker也釋出了rootless模式,可以更好利用Linux作業系統的安全能力來提升容器的安全性。
  • WebAssembly是新一代可移植、輕量化、應用虛拟機,在IoT,邊緣計算,區塊鍊等場景會有廣泛的應用前景。在伺服器端,WebAssembly是容器的颠覆者還是同盟者?大家會有不同的觀點。我個人傾向于後者,WASM/WASI可以成為一個跨平台的容器實作技術。近期Solo.io推出的WebAssembly Hub就是将WASM應用通過 OCI鏡像标準 進行統一的管理和分發,可以很好地應用在Istio服務網格生态中。

趨勢二:雲原生作業系統開始浮現

Kubernetes已經成為雲時代的作業系統。我們可以對比一下經典的Linux和Kubernetes的概念模型,他們都是定義了開放的、标準化的通路接口;向下封裝資源,向上支撐應用。

應雲而生,原力覺醒 - 雲原生基礎設施

它們都提供了對底層計算、存儲、網絡、異構計算裝置的資源抽象和安全通路模型。可以根據應用需求進行資源排程和編排。Linux的計算排程單元是程序,排程範圍限制在一台計算節點。而Kubernetes的排程機關是Pod,可以在分布式叢集中進行資源排程,甚至跨越不同的雲環境。

應雲而生,原力覺醒 - 雲原生基礎設施

在初期,Kubernetes上主要運作着無狀态的Web應用。随着技術的成熟和社群的發展,我們看到更多的有狀态應用和大資料/AI應用負載逐漸遷移到K8s上。目前企業的大資料業務還是被YARN等排程技術主導,但是K8s已經在大資料社群得到更多的關注。Flink,Spark等開源社群和一系列商業公司如Cloudera、Databricks、星環都開始加大對K8s的支援力度。

  • 統一技術棧提升資源使用率:多種計算負載在K8s叢集統一排程,可以有效提升資源使用率。Gartner預測“未來3年,70% AI任務運作在容器和Serverless上。” AI模型訓練和大資料計算類工作負載需要K8s提供更低的排程延遲、更大的并發排程吞吐和更高的異構資源使用率。針對這些挑戰,華為推出了Volcano項目,提供了一個針對資料計算類任務的獨立排程器。阿裡雲在和K8s上遊社群共同合作,在Scheduler V2 framework上,通過 擴充機制 增強K8s排程器的規模、效率和能力,具備更好的相容性,可以更好的支撐多種工作負載的統一排程。
  • 統一技能棧降低人力成本:K8s可以在IDC、雲端、邊緣等不同場景進行統一部署和傳遞。雲原生提倡的DevOps文化和工具集可以有效提升技術疊代速度。整體上降低人力成本。
  • 加速資料服務的雲原生化:由于計算存儲分離具備巨大的靈活性和成本優勢。資料服務的雲原生化也逐漸成為趨勢。容器和Serverless的彈性可以簡化對計算任務的容量規劃。結合分布式緩存加速(比如Alluxio或阿裡雲Jindofs)和排程優化,也可以大大提升資料計算類和AI任務的計算效率。

阿裡雲計算平台和容器服務團隊已經在多個領域共同探索雲原生大資料/AI場景的産品技術創新。

趨勢三:在雲端,Serverless技術逐漸融入主流

除了FaaS的快速發展,Serverless和容器技術也開始融合,尤其是得到了雲廠商的高度關注。通過Serverless容器,一方面可以根本性解決K8s自身的複雜性,讓使用者無需受困于K8s叢集容量規劃、安全維護、故障診斷等運維工作;一方面進一步釋放了雲計算的能力,将安全、可用性、可伸縮性等需求下沉到基礎設施實作,可以幫助雲廠商形成差異化競争力。

阿裡雲在2018年5月推出 ECI(Elastic Container Instance彈性容器執行個體),ASK (Alibaba Cloud Serverless Kubernetes)等産品,并在2019年2月正式商業化。目前業界所有公有雲廠商都推出了Serverless容器産品,除阿裡雲ASK/ECI外,還包括AWS Fargate, Azure ACI,華為CCI,騰訊EKS, GCP CloudRun等。

在AWS的調研中,在2019年 40%的ECS(AWS彈性容器服務)新客戶采用ECS on Fargate的Serverless Container形态。

Serverless容器可以和FaaS形成良好的互補。Serverless容器支援容器鏡像作為應用載體,支援各種類型應用,比如無狀态應用、有狀态應用、計算任務類應用等。大量使用者現有的應用無需修改即可部署在Serverless Container環境中。

在Gartner在 2020年 Public Cloud Container Service Market評估報告中把Serverless容器作為雲廠商容器服務平台的主要差異化之一,其中将産品能力劃分為Serverless 容器執行個體和Serverless Kubernetes兩類。這與阿裡雲ECI/ASK的産品定位高度一緻。Gartner在報告中也談到 Serverless容器業界标準未定,雲廠商有很多空間通過技術創新提供獨特的增值能力,其對雲廠商的建議是:

  • 擴充Serverless容器應用場景和産品組合,遷移更多普通容器workload到serverless容器服務。
  • 推進Serverless容器的标準化,減輕使用者對雲廠商鎖定的擔憂。

趨勢四:動态、混合、分布式的雲環境将成為新常态

上雲已是大勢所趨。但是對于企業客戶而言,有些業務由于資料主權和安全隐私的考慮,會采用混合雲架構。一些企業為了滿足安全合規、成本優化、提升地域覆寫性和避免廠商鎖等需求,會選擇多個雲供應商。混合雲/多雲架構已經成為企業上雲的新常态。Gartner指出,"到2021,超過 75% 的大中型組織将采用多雲或者混合IT戰略。"

此外,随着5G時代的臨近,AIoT應用快速發展,一個萬物智聯的時代開始到來。邊緣計算可以更好地連結實體世界和數字世界,為應用提供更低的網絡延遲,更高的網絡帶寬和更低的網絡成本。邊緣計算将成為企業雲戰略的重要組成部分,我們需要有能力将智能決策、實時處理能力從雲延展到邊緣和IoT裝置端。

在Gartner釋出的《2020年基礎架構和營運的十大趨勢》中提出了分布式雲的趨勢。随着雲平台已經成為企業數字化轉型的創新平台,一個變化随之産生——雲正在靠近它們。在分布式雲中,公有雲的服務能力可以位于不同的實體位置,而公共雲平台提供者會負責服務的營運、治理、更新和演變。

然而不同環境的基礎設施能力、安全架構的差異會造成企業IT架構和運維體系的割裂,加大雲戰略實施的複雜性,增加運維成本。在雲原生時代,以Kubernetes為代表的雲原生技術屏蔽了基礎設施的差異性,推動了以應用為中心的混合雲/分布式雲架構的到來。可以更好地支援不同環境下應用統一生命周期管理和統一資源排程。Kubernetes已經成為企業多雲管理的事實基礎,

2019年Google推出Anthos多雲應用平台,其基礎就是GKE K8s托管服務。 微軟在的Build 2020會議上宣布了Azure Arc支援Kubernetes叢集的預覽版。微軟CEO薩蒂亞·納德拉将Azure Arc描述為混合雲計算的控制平面,可以統一管理雲上、邊緣和IDC中運作的Kubernetes叢集,以及Windows和Linux伺服器執行個體。

阿裡雲容器服務ACK去年9月份釋出了混合雲 2.0架構,提供了完備的混合雲K8s管理能力。

應雲而生,原力覺醒 - 雲原生基礎設施
  1. 首先ACK提供了統一叢集管理能力,除了可以管理阿裡雲K8s叢集之外,還可以納管使用者在IDC的自有K8s叢集和其他雲的K8s叢集。利用統一的控制平面實作多個叢集的統一的安全治理、可觀測性、應用管理、備份恢複等能力。比如利用日志服務、托管Prometheus服務,可以無侵入的方式幫助使用者對線上、線下叢集有一個統一的可觀測性大盤。利用雲安全中心,AHAS可以幫助客戶在混合雲的整體架構中發現并解決安全和穩定性風險。
  2. 此外托管服務網格ASM提供統一的服務治理能力,結合阿裡雲雲企業網CEN、智能接入網關SAG提供的多地域、混合雲網絡能力,可以實作服務就近通路,故障轉移,灰階釋出等功能。
  3. ACK也提供了統一的應用傳遞能力,通過GitOps方式可以将應用安全、一緻、穩定地釋出在多個不同的雲環境中。配合網格ASM提供的流量管理能力,可以支援雲容災、異地多活等應用場景,提升業務連續性。
應雲而生,原力覺醒 - 雲原生基礎設施

2019年六月,阿裡雲ACK@Edge邊緣容器釋出。邊緣K8s容器叢集中可以同時管理雲端ECS和邊緣ENS節點、以及IoT裝置。我們在K8s基礎之上,針對邊緣計算場景的特殊性,提供了單元化隔離和斷連自治、自愈和安全等增強能力。借助ACK@Edge,我們可以将一些需要低延遲處理的應用部署在邊緣節點實作就近通路,比如,我們可以把AI模型預測和實時資料處理放置到邊緣,進行實時智能決策;而将模型訓練,大資料處理等需要海量算力應用放到雲端。可以極大簡化雲邊端一體應用協同。

在2020年5月底,我們将ACK@Edge的核心元件開源 —

OpenYurt

,該項目的核心理念是『Extending your native Kubernetes to edge.』,在架構上保持了對原生K8s無侵入的設計,通過一系列元件和工具,提供了對邊緣計算場景良好的支援能力。推出該開源項目,一方面可以把我們在雲原生邊緣計算領域的積累回饋社群,另一方面我們希望加速雲計算向邊緣延伸的程序,并和社群共同探讨未來雲原生邊緣計算架構的統一标準。

總結

雲原生計算加速了應用和基礎資源的解耦,充分釋放雲的彈性;通過關注點分離,讓開發者關注業務價值,而複雜性下沉到基礎設施。對企業而言,雲原生計算可以幫助企業優化雲架構,最大化發揮雲價值。在後續的文章中,我們将繼續介紹雲原生應用架構和生命周期管理的進化方向。

繼續閱讀