資安

雲原生之路:容器技術落地最佳實踐

image.png

沒有集裝箱,就沒有全球化。——《經濟學人》

什麼是容器?

容器的英語是 Container,它的意思是集裝箱。我們知道,經濟全球化的基礎就是現代運輸體系,而其核心正是集裝箱。集裝箱的出現實現了物流運輸的標準化,自動化,大大降低了運輸的成本,使得整合全球的供應鏈變為可能。這就是著名經濟學人談到的“沒有集裝箱,就沒有全球化”。

集裝箱背後的標準化、模塊化的理念也在推進建築業的供應鏈變革。在最近,疫情爆發之後。10 天 10 夜,在武漢火神山,一個可以容納上千床位的專科醫院平地而起,在抗疫過程中發揮的重要作用。整個醫院都是採用集裝箱板房吊裝。模塊化的病房設計,預置了空調、消殺、上下水等設施,極大加速了施工速度。

容器的通俗理解

image.png

軟件集裝箱 ”容器技術“ 也在重塑整個軟件供應鏈。容器作為一種輕量化的操作系統虛擬化技術,和和傳統的物理機、虛擬化技術和使用方式有什麼不同呢?打個比喻:

傳統物理機就是獨棟大別墅

  • 一家人獨佔,住的舒適,不會被別人打擾。
  • 應用獨佔物理機,性能優異。但是缺點就是貴、交付時間長,資源利用率也不高。

虛擬機就是聯排住宅

  • 每戶有獨立的空間,有較好的隔離性。每棟房屋之間共享水電、地基等基礎設施。容積率提升了,成本下降了,交付速度也加快了。
  • 通過虛擬化技術,虛擬機中的應用可以實現安全隔離,還可以有效提升資源利用率。但是,虛擬機交付後還需進行應用配置和安裝,交付速度還不夠快。

容器就是集裝箱板房

  • 集裝箱房採用模塊化設計,自帶裝修,可以快速搭建,隨時移動。這是 2022 年卡塔爾世界盃一個體育場的設計。它將完全使用集裝箱方式搭建一個可以容納 4 萬人的體育場。每個集裝箱模塊都在在中國生產,已經預置了看臺,衛生間,酒吧等功能,在中國生產完畢後在卡塔爾組裝。不但工期可以縮短 3 年,而且賽事結束後可以拆卸,搬遷到其他地方。
  • 容器利用操作系統中 cgroup,namespace 等技術實現資源隔離。容器共享操作系統內核,非常輕量,沒有資源損耗,支持秒級啟動,極大提升了系統的應用部署密度和彈性。容器鏡像將應用和其依賴的系統組件和配置打包在一個標準化的、自包含的格式中。通過容器鏡像方式進行應用分發和交付,可以讓應用即開即用,並一致地運行在不同環境。

容器的價值

在過去幾年中,容器技術得到了越來越廣泛的應用。其中最主要的 3 個核心價值是:

敏捷

天下武功唯快不破。在企業數字化轉型時代,每個企業都在面臨著新興業務模式的衝擊和眾多的不確定性。一個成功的企業不是看他現在規模有多大,過去的戰略有多成功,而是要看他是否有能力持續創新。容器技術提升了企業的 IT 架構的敏捷性,從而提升了業務敏捷性,可以加速業務創新。比如疫情期間,教育、視頻、公共健康等行業的在線化出現了爆發性高速增長。通過容器技術可以很好地把握業務快速增長的機遇。在業界的統計中,使用容器技術可以實現 3~10 倍交付效率提升,這意味著企業可以進行快速迭代,低成本試錯。

彈性

在互聯網時代,企業 IT 系統經常需要面對電商大促、突發事件等可預期和非預期的流量增長。通過容器技術可以充分發揮雲計算的彈性,通過提升部署密度和彈性來降低計算成本。比如在線教育,面對疫情之下指數級增長的流量,可以通過容器技術來緩解擴容的壓力,支持數十萬教師在線教學,百萬學生在線學習。

可移植性
容器技術推進了雲計算的標準化進程。容器已經成為應用分發和交付的標準,可以將應用與底層運行環境解耦;Kubernetes 成為資源調度和編排的標準,屏蔽了底層架構的差異性,幫助應用平滑運行在不同的基礎設施上。CNCF 雲原生計算基金會推出了Kubernetes一致性認證,進一步保障了不同 K8s 實現的兼容性。採用容器技術來構建雲時代的應用基礎設施將變得越來越容易。

Kubernetes:雲原生時代的基礎設施

image.png

現在 Kubernetes 已經成為了雲應用操作系統,越來越多應用運行在 Kubernetes 基礎之上:從無狀態的 Web 應用,到交易類應用(如數據庫、消息中間件),再到數據化、智能化應用。阿里經濟體也基於容器技術,實現了全面的雲原生上雲。

阿里雲容器服務介紹

image.png

阿里雲容器服務產品家族可以在公共雲、邊緣計算和專有云環境提供企業容器平臺。阿里雲容器產品的核心是 Kubernetes Service - ACK 和 Serverless K8s - ASK,它們構建在阿里雲的一系列基礎設施能力之上,包括計算、存儲、網絡、安全等,並提供標準化接口、優化的能力和簡化的用戶體驗。ACK 通過 CNCF K8s 一致性兼容認證,並提供了一系列企業關注的核心能力,比如安全治理,端到端可觀測性、多雲混合雲等。

鏡像服務 ACR 是企業雲原生應用資產管理的核心,可以管理 Docker 鏡像,Helm Chart 等應用資產,並和 CI/CD 工具結合在一起提供完整的 DevSecOps 流程。

託管服務網格 ASM,提供全託管的微服務應用流量管理平臺,兼容 Istio,支持多個 Kubernetes 集群中應用的統一流量管理,為容器和虛擬機中應用服務提供一致的通信、安全和可觀測能力。

託管 K8s 集群

image.png

我們以託管 K8s 為例介紹集群部署拓撲結構。

ACK 託管 K8s 集群基於 Kubernetes on Kubernetes 架構設計。K8s 集群的 Master 組件,運行在 ACK VPC 中的控制平面 K8s Cluster 之上。

ACK 採用了默認高可用的架構設計:etcd 3 副本分別運行在 3 個不同 AZ 之上。也根據可擴展性最佳實踐,提供了兩組 etcd。一組保存配置信息,一組保存系統事件,這樣可以提升 etcd 的可用性和可擴展性。用戶 K8s 集群的 API Server/Scheduler 等 master 組件,採用多副本方式部署,運行在 2 個不同的 AZ 之上。master 組件可以根據工作負載進行彈性擴展,Worker 節點通過 SLB 來訪問 API Server。這樣的設計保證了整個 K8s 集群的可用性,即使一個 AZ 的失效,也不會導致 K8s 集群自身失敗。

worker 節點,運行在 VPC 上。將節點運行在不同的 AZ,配合應用的 AZ anti-affinity反親和性可以保障應用的高可用。

容器技術落地的最佳實踐

靈活豐富的彈性能力

彈性是雲最核心的能力之一,像雙十一這樣的典型脈衝應用場景,或者像疫情爆發之後的在線教育和辦公協同的極速增長,只能依靠雲提供的強大彈性算力才能支撐。Kubernetes 可以將雲的彈性能力發揮到極致。

ACK 在資源層和應用層提供了豐富的彈性策略,在資源層目前主流的方案是通過 cluster-autoscaler 進行節點的水平伸縮。當出現 Pod 由於資源不足造成無法調度時,cluster-autoscaler 會在節點池中自動創建新的節點實例,根據應用負載需求進行擴容。

ECI 彈性容器實例,基於輕量虛擬機提供了 Serverless 化的容器運行環境。我們可以在 ACK 通過調度將業務應用運行在 ECI 實例上。這非常適合大數據離線任務、CI/CD 作業、突發的業務擴容等。在微博的應用場景中,彈性容器實例可以在 30 秒內擴容 500 Pod,輕鬆應對突發的新聞事件。

在應用層,Kubernetes 提供了 HPA 的方式進行 Pod 的水平伸縮,和 VPA 進行 Pod 的垂直伸縮。阿里雲提供了 metrics-adapter,可以支持更加豐富的彈性指標,比如可以根據 Ingress 的 QPS 指標,動態調整應用 Pod 數量。另外很多應用負載的資源畫像是具有週期性的。比如證券行業業務的高峰是工作日的股市開盤時間。峰谷資源需求量的差異高達 20 倍,為了解決這類需求,阿里雲容器服務提供了定時伸縮組件,開發者可以定義定時擴縮容策略,提前擴容好資源,而在波谷到來後定時回收資源。可以很好地平衡系統的穩定性和資源成本。

Serverless Kubernetes

K8s 提供的強大的功能和靈活性,但是運維一個 Kubernetes 生產集群極具挑戰。即使利用託管 Kubernetes 服務,但是依然要保有 worker 節點資源池,還需要對節點進行日常維護,比如 OS 升級,安全補丁等,並根據自己的資源使用情況對資源層進行合理的容量規劃。

針對 K8s 的複雜性挑戰,阿里雲推出了 Serverless Kubernetes 容器服務—— ASK。ASK 在兼容 K8s 應用的前提下,對 Kubernetes 做減法,將複雜性下沉到雲基礎設施,極大降低了運維管理負擔,讓開發者更加專注於應用自身。

  • 對用戶而言,沒有節點的概念,用戶無需預留任何資源,免維護,零管理。
  • 所有資源按需創建,運行在彈性容器實例之上,按照應用實際消耗的資源付費。
  • 無需任何容量規劃。

image.png

在 Serverless 容器場景,我們提供了兩種不同的技術方案:ACK on ECI 和 ASK。

ACK on ECI

ACK 集群兼具功能性和靈活性。非常適合大型互聯網企業或傳統企業的需求。可以一個集群中運行多種不同的應用、任務。它主要面向的是企業中 SRE 團隊,可以對 K8s 進行定製化開發和靈活性控制。

ACK 集群支持 3 種不同的容器運行時技術:

  • RunC 容器,也就是 Docker 容器,與宿主機 Linux 共享內核,簡單、高效,但是安全隔離性比較弱。一旦惡意應用利用內核漏洞逃逸,可以影響整個宿主機上其他應用。
  • 為了提升安全隔離,阿里雲和螞蟻金服團隊合作,引入袋鼠安全沙箱容器技術。阿里雲是行業中,第一個提供 RunV 安全容器的公共雲容器服務。相比於 RunC 容器,每個 RunV 容器具有獨立內核,即使容器所屬內核被攻破,也不會影響其他容器。適合運行來自第三方不可信應用或者在多租戶場景下進行更好的安全隔離。此外,RunC 和 RunV 容器都支持資源超售,用戶可以自己靈活控制,來平衡穩定性和成本。
  • ACK 支持對彈性容器實例 ECI 的調度,ECI 本質上基於輕量虛擬機實現安全、隔離的容器運行環境。並充分利用整個阿里雲彈性計算資源池的算力,來滿足用戶對計算彈性的成本、規模、效率的訴求。在設計上,ECI 針對容器場景充分優化,利用操作系統剪裁、ENI 網卡直通、存儲直接掛載等技術,保障了 ECI 中應用的執行效率等於甚至略優於在虛擬機中的容器運行環境。ECI 目前不支持資源超售,但是提供了競價實例,可以讓用戶來控制成本和計算效率的平衡。

ECI 在 K8s 集群中適合的場景:

  • 在線業務突發流量:用戶可以保有一個靜態資源池應對日常流量,突發流量可以通過 ECI 來承載。
  • 批量計算任務:對有些臨時性、週期性的計算任務,資源規模不太容易預期或者預留大量的資源會產生浪費。我們可以讓 ECI 來承載這樣的批量數據處理任務。
  • 安全隔離:有些業務應用需要運行 3 方不可信應用,比如一個用戶上傳的 AI 算法模型,利用 ECI 本身的安全沙箱進行隔離,可以安全地運行。

ASK

ASK 則是針對 ISV 和企業中的部門/中小企業度身定製的容器產品。用戶完全不需具備 K8s 的管理運維能力,即可創建和部署 K8s 應用,極大降低管理複雜性,非常適合應用託管、CI/CD、AI/數據計算等場景。比如可以利用 ASK 和 GPU ECI 實例構建了免運維的 AI 平臺,可以按需創建機器學習環境,整體架構非常簡單、高效。

雲原生彈性、高可用架構

雲原生分佈式應用架構具備幾個關鍵特性,高可用、可彈性伸縮、容錯性好、易於管理、便於觀察、標準化、可移植。我們可以在阿里雲上構建雲原生應用參考架構,其中包括:

  • 雲原生基礎設施:基於神龍架構的 ECS 企業實例
  • 雲原生應用平臺:ACK 容器服務
  • 雲原生數據庫:PolarDB

首先是端到端的彈性的應用架構。

我們可以將前端應用、業務邏輯容器化,部署在 K8s 集群上,並根據應用負載配置 HPA 水平伸縮。

在後端數據層,我們可以利用 PolarDB 這樣的雲原生數據庫。PolarDB 採用存儲和計算分離架構,支持水平擴展。同等規格下是 MySQL 性能的7倍,並且相較於 MySQL 能夠節省一半成本。

此外是系統化的高可用設計:

  • 利用 AZ 級別的反親和性,我們可以將應用的副本實例部署在不同 AZ。
  • 通過 SLB 負載均衡接入在不同 AZ 的應用入口。
  • PolarDB 數據庫默認提供了跨 AZ 高可用。

這樣我們可以保障整個系統具備 AZ 級別的可用性,可以容忍一個 AZ 的失效。

此外,阿里雲的高可用服務 AHAS,提供了架構感知的能力,可以對系統的拓撲結構進行可視化。而且它提供了應用巡檢能力,幫助我們定位可用性問題。比如應用副本數是否滿足可用性需求,RDS 數據庫實例是否開啟了多可用區容災等等。

多維度可觀測性

image.png

在一個大規模分佈式系統中,基礎設施(如網絡,計算節點、操作系統)或者應用自身都有可能會出現各種穩定性或者性能問題。可觀測性可以幫助我們解分佈式系統的狀態,便於做出決策,並作為彈性伸縮和自動化運維的基礎。

一般而言,可觀測性包含幾個重要的層面:

Logging – 日誌(事件流)

我們基於阿里雲日誌服務 SLS 提供了完整的日誌方案,不但可以對應用日誌進行收集、處理,並且提供了操作審計,K8s 事件中心等能力。

Metrics – 監控指標

對基礎設施服務,比如 ECS、存儲,網絡,雲監控提供了全面的監控。對於業務應用的性能指標,比如 Java 應用的 Heap 內存利用情況,ARMS無需修改業務代碼即可對 Java 和 PHP 應用提供全方位的性能監控。對於 K8s 應用和組件,ARMS 提供的託管 Prometheus 服務,提供多種開箱即用的預置監控大盤,也提供開放接口,便於三方集成。

Tracing – 全鏈路追蹤

Tracing Analysis 為開發者提供了完整的分佈式應用調用鏈路統計、拓撲分析等工具。能夠幫助開發者快速發現和診斷分佈式應用中的性能瓶頸,提升微服務應用的性能和穩定性。

從 DevOps 到 DevSecOps

image.png

安全是企業在應用容器技術中最大的顧慮,沒有之一。為了系統化提升容器平臺的安全性,我們需要全方位進行安全防護。第一件事,我們需要將 DevOps 提升成為 DevSecOps,強調需將安全概念融入在整個軟件生命週期中,將安全防護能力左移到開發和交付階段。

ACR 鏡像服務企業版提供了完整的安全軟件交付鏈。用戶上傳鏡像後,ACR 可以自動化地進行鏡像掃描,發現其中存在的 CVE 漏洞。之後可以利用 KMS 祕鑰服務,自動化對鏡像添加數字簽名。在 ACK 中,可以配置自動化安全策略,比如只允許經過安全掃描且符合上線要求的鏡像在生產環境進行發佈。整個軟件交付鏈路可觀測、可追蹤、策略驅動。在保障安全性的前提下,可以有效提升交付效率。

此外,在應用運行時,也會面對眾多安全風險,比如新發現的 CVE 漏洞或者病毒攻擊。阿里雲安全中心提供了運行時的安全監控和防護能力。

雲安全中心可以對容器應用進程與網絡情況監控,對應用的異常行為或者安全漏洞進行實時檢測。發現問題後,會通過郵件、短信對用戶進行通知,也提供了自動化隔離與修復能力。比如我們拿一個去年著名的挖礦蠕蟲病毒為例,它會利用用戶的配置錯誤對容器集群發動攻擊。在雲安全中心的幫助下,我們可以輕鬆發現它的蹤跡並進行一鍵清除。

託管服務網格 ASM

image.png

今年二月,我們發佈了業內首個全託管,Istio 兼容的服務網格產品 ASM。服務網格的控制平面組件託管在阿里雲側,與數據平面側的用戶集群獨立。通過託管模式,極大簡化了 Istio 服務網格部署和管理的複雜性,解耦了網格與其所管理的 K8s 集群的生命週期,使得架構更加簡單、靈活,提升了系統的穩定性和可伸縮性。此外,ASM 在 Istio 基礎上進行大量的擴展,整合了阿里雲可觀測性服務、日誌服務等,可以幫助用戶更加高效地管理網格中的應用。

在數據平面的支持上,ASM 產品可以支持多種不同的計算環境,這包括了 ACK Kubernetes 集群、ASK 集群、以及 ECS 虛擬機等。通過雲企業網 CEN,ASM 可以實現多地域、跨 VPC 的 K8s 集群之間的服務網格。這樣 ASM 可以對多地域的大規模分佈式應用實現流量管理和灰度發佈。此外,ASM 也會很快推出多雲混合雲的支持。

混合雲:企業上雲新常態

上雲已是大勢所趨,但是對於企業用戶而言,有些業務由於數據主權和安全隱私的考慮,無法直接上雲,只能採用混合雲架構。Gartner 預測 81% 的企業將採用多雲/混合雲戰略,混合雲架構已經成為企業上雲的新常態。

傳統的混合雲架構以雲資源為中心進行抽象和管理。然而不同雲環境的基礎設施、安全架構能力的差異會造成企業 IT 架構和運維體系的割裂,加大混合雲實施的複雜性,提升運維成本。

在雲原生時代,以 Kubernetes 為代表的技術屏蔽了基礎設施的差異性,可以更好地在混合雲環境下,進行統一資源調度和統一應用生命週期管理。以應用為中心的混合雲 2.0 架構已經到來!

這裡有幾個典型場景:

  • 利用公共雲的彈性算力應對突發流量。線下數據中心承載日常流量,當業務突增時,通過雲資源擴容,承載突發流量。
  • 利用公共雲構建低成本的雲災備中心。線上線下兩套系統,線上系統作為熱備。當線下數據中心發生故障時,可以快速將業務流量切換到雲上。
  • 構建異地多活的應用架構。在雲上多個地域部署單元化的業務系統,並提供統一的服務治理能力。當一個地域發生故障時,將業務流量遷移到其他地域提升業務連續性。

基於 ACK 和阿里雲的混合雲網絡、存儲網關以及數據庫複製等能力,我們可以幫助企業構建全新的混合雲 IT 架構。

混合雲 2.0 架構

image.png

首先 ACK 提供了統一集群管理能力,除了可以管理阿里雲 K8s 集群之外,還可以納管用戶在 IDC 的自有 K8s 集群和其他雲的 K8s 集群。利用統一的控制平面實現多個集群的統一的安全治理、可觀測性、應用管理、備份恢復等能力。比如利用日誌服務、託管 Prometheus 服務,可以無侵入的方式幫助用戶對線上、線下集群有一個統一的可觀測性大盤。利用雲安全中心,AHAS 可以幫助用戶在混合雲的整體架構中發現並解決安全和穩定性風險。

此外 ASM 提供統一的服務治理能力,結合 CEN、SAG 提供的多地域、混合雲網絡能力,可以實現服務就近訪問,故障轉移,灰度發佈等功能,支持雲容災、異地多活等應用場景,提升業務連續性。

雲原生混合雲解決方案

image.png

一個案例:職優你是一個電子學習職業發展平臺,為來自世界多個地區的用戶提供服務。它的應用部署在阿里雲的 4 個不同地域上多個 Kubernetes 集群中。這些集群通過雲企業網 CEN 將多個跨地域 VPC 網絡打通,並通過一個 ASM 服務網格,對多個 K8s 集群中的微服務應用進行統一的流量管理。

服務路由策略由 ASM 控制平面統一管理,並下發到多個 K8s 集群。用戶請求會經過 DNS 分流到最近地域的入口網關,之後通過服務網格的就近訪問能力,優先訪問本地域內的服務端點。如果本地域的服務不可用,可以將請求自動轉移到其他地域實現流量切換。

雲原生混合雲管理

阿里雲的混合雲解決方案有幾個重要特點:

  • ACK 提供了統一的集群管理,統一的安全治理,統一的應用管理和可觀測性。
  • CEN 實現了全地域網絡連通,通過高速、低延時的網絡互連。
  • ASM 支持統一的智能化應用流量管理,可以優化服務訪問,提升業務連續性。

Windows 容器平滑上雲

image.png

我們來談一下對 Windows 容器的支持。在現今企業中,Windows 操作系統依然佔據半壁江山,其市場份額達 60% 之多。企業還有有大量的 Windows 應用,比如 ERP,CRM,ASP.Net 網站等。利用 Windows 容器和 Kubernetes,可以讓 .Net 應用在代碼不重寫的情況下實現容器化交付,充分利用雲上的彈性、敏捷等能力,實現業務應用的快速迭代和伸縮。

ACK 支持 Windows 2019,在 K8s 容器集群中:

1)為 Linux 和 Windows 應用提供了一致的用戶體驗和統一的能力。

  • 支持 CPU、內存、存儲卷等資源調度和編排
  • 支持無狀態/有狀態等多種不同應用負載

2)支持 Linux 和 Windows 應用在集群中的混合部署和互連互通,比如我們可以讓運行在 Linux 節點的 PHP 應用訪問運行在 Windows 節點的 SQL Server 數據庫。

我們已經在支持了聚石塔電商平臺和 supET 工業互聯網平臺支持了很多 ISV 來對 Windows 應用進行雲原生化改造、升級。

阿里雲容器服務的演進方向

下面我們快速介紹一下阿里雲在雲原生方面的產品市場策略。我們可以總結為三條:

新基石:容器技術是用戶使用雲資源的新界面,雲原生技術是釋放雲價值的最短路徑

  • 支撐全球化應用交付:通過 ACR EE,可以實現一次提交、全球發佈,發佈效率提升 7 倍。
  • 實現 Serverless 化應用架構:利用 ASK/Knative,讓開發者聚焦業務應用,無需管理基礎設施。
  • 支持混合雲、多雲架構:幫助企業用戶平滑上雲,讓工作負載在不同環境動態遷移。
  • 構建雲-邊-端一體的分佈式雲架構:將雲的能力延伸到邊緣和設備端,更好迎接 5G 和 AIoT 時代的創新機遇。優酷在應用邊緣容器技術後,API 端到端網絡延遲降低了 75%。

新算力:基於雲原生的軟硬一體化技術創新,提升計算效率,加速業務智能化升級

  • 容器和神龍架構相結合,性能優於物理機 20%。
  • 支持 GPU,NPU(含光芯片)等異構算力的調度和共享,可以實現利用率 2 ~ 4 倍提升。
  • 安全沙箱容器在強安全隔離的同時,實現原生進程90%性能。也推出了基於 Intel SGX 的機密計算的支持,可以為隱私和機密信息處理提供安全、可信的執行環境。

新生態:通過開放技術生態和全球合作伙伴計劃,幫助更多企業分享雲時代技術紅利

  • 容器雲應用市場:鏈接企業與雲原生創新,已入駐 Fortinet、駐雲、Intel 等多家合作伙伴,覆蓋了從容器安全、監控到業務應用的不同商品,便於用戶獲得完整的容器化解決方案。
  • 全球合作伙伴生態:我們和 SAP,紅帽,Rancher,Click2Cloud,BanzaiCloud等全球技術合作夥伴進行了產品能力集成。幫助企業用戶在阿里雲上用好雲原生技術。

重磅推薦 | 2020 阿里巴巴研發效能峰會首次對外直播

6 月 12 日 - 13 日,阿里巴巴內部研發效能峰會首次對外直播!7 大論壇,35 個議題,1300 分鐘技術乾貨分享!39 位技術大咖,4 萬阿里工程師,邀你共享研發效能盛宴!識別下方二維碼,或點擊文末”閱讀原文“立即預約直播:
image.png

Leave a Reply

Your email address will not be published. Required fields are marked *