簡介:隨着容器技術的快速發展和普遍應用,毫無疑問雲原生技術是將來發展的必然趨勢。做爲國內最先佈局容器技術的阿里雲,不管在技術仍是產品上,都取得了極大的成果。阿里雲資深技術專家易立經過阿里雲容器服務,分享容器技術落地的最佳實踐,但願可以幫助同窗們更好地理解容器技術和雲原生理念,合理地設計上雲架構,充分發揮雲的價值。(文末推薦:2020 阿里巴巴研發效能峯會)前端
沒有集裝箱,就沒有全球化。——《經濟學人》
容器的英語是 Container,它的意思是集裝箱。咱們知道,經濟全球化的基礎就是現代運輸體系,而其核心正是集裝箱。集裝箱的出現實現了物流運輸的標準化,自動化,大大下降了運輸的成本,使得整合全球的供應鏈變爲可能。這就是著名經濟學人談到的「沒有集裝箱,就沒有全球化」。算法
集裝箱背後的標準化、模塊化的理念也在推動建築業的供應鏈變革。在最近,疫情爆發以後。10 天 10 夜,在武漢火神山,一個能夠容納上千牀位的專科醫院平地而起,在抗疫過程當中發揮的重要做用。整個醫院都是採用集裝箱板房吊裝。模塊化的病房設計,預置了空調、消殺、上下水等設施,極大加速了施工速度。數據庫
軟件集裝箱 」容器技術「 也在重塑整個軟件供應鏈。容器做爲一種輕量化的操做系統虛擬化技術,和和傳統的物理機、虛擬化技術和使用方式有什麼不一樣呢?打個比喻:後端
傳統物理機就是獨棟大別墅安全
虛擬機就是聯排住宅網絡
容器就是集裝箱板房架構
在過去幾年中,容器技術獲得了愈來愈普遍的應用。其中最主要的 3 個核心價值是:負載均衡
敏捷less
天下武功惟快不破。在企業數字化轉型時代,每一個企業都在面臨着新興業務模式的衝擊和衆多的不肯定性。一個成功的企業不是看他如今規模有多大,過去的戰略有多成功,而是要看他是否有能力持續創新。容器技術提高了企業的 IT 架構的敏捷性,從而提高了業務敏捷性,能夠加速業務創新。好比疫情期間,教育、視頻、公共健康等行業的在線化出現了爆發性高速增加。經過容器技術能夠很好地把握業務快速增加的機遇。在業界的統計中,使用容器技術能夠實現 3~10 倍交付效率提高,這意味着企業能夠進行快速迭代,低成本試錯。運維
彈性
在互聯網時代,企業 IT 系統常常須要面對電商大促、突發事件等可預期和非預期的流量增加。經過容器技術能夠充分發揮雲計算的彈性,經過提高部署密度和彈性來下降計算成本。好比在線教育,面對疫情之下指數級增加的流量,能夠經過容器技術來緩解擴容的壓力,支持數十萬教師在線教學,百萬學生在線學習。
可移植性
容器技術推動了雲計算的標準化進程。容器已經成爲應用分發和交付的標準,能夠將應用與底層運行環境解耦;Kubernetes 成爲資源調度和編排的標準,屏蔽了底層架構的差別性,幫助應用平滑運行在不一樣的基礎設施上。CNCF 雲原生計算基金會推出了Kubernetes一致性認證,進一步保障了不一樣 K8s 實現的兼容性。採用容器技術來構建雲時代的應用基礎設施將變得愈來愈容易。
如今 Kubernetes 已經成爲了雲應用操做系統,愈來愈多應用運行在 Kubernetes 基礎之上:從無狀態的 Web 應用,到交易類應用(如數據庫、消息中間件),再到數據化、智能化應用。阿里經濟體也基於容器技術,實現了全面的雲原生上雲。
阿里雲容器服務產品家族能夠在公共雲、邊緣計算和專有云環境提供企業容器平臺。阿里雲容器產品的核心是 Kubernetes Service - ACK 和 Serverless K8s - ASK,它們構建在阿里雲的一系列基礎設施能力之上,包括計算、存儲、網絡、安全等,並提供標準化接口、優化的能力和簡化的用戶體驗。ACK 經過 CNCF K8s 一致性兼容認證,並提供了一系列企業關注的核心能力,好比安全治理,端到端可觀測性、多雲混合雲等。
鏡像服務 ACR 是企業雲原生應用資產管理的核心,能夠管理 Docker 鏡像,Helm Chart 等應用資產,並和 CI/CD 工具結合在一塊兒提供完整的 DevSecOps 流程。
託管服務網格 ASM,提供全託管的微服務應用流量管理平臺,兼容 Istio,支持多個 Kubernetes 集羣中應用的統一流量管理,爲容器和虛擬機中應用服務提供一致的通訊、安全和可觀測能力。
咱們以託管 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 倍,爲了解決這類需求,阿里雲容器服務提供了定時伸縮組件,開發者能夠定義定時擴縮容策略,提早擴容好資源,而在波谷到來後定時回收資源。能夠很好地平衡系統的穩定性和資源成本。
K8s 提供的強大的功能和靈活性,可是運維一個 Kubernetes 生產集羣極具挑戰。即便利用託管 Kubernetes 服務,可是依然要保有 worker 節點資源池,還須要對節點進行平常維護,好比 OS 升級,安全補丁等,並根據本身的資源使用狀況對資源層進行合理的容量規劃。
針對 K8s 的複雜性挑戰,阿里雲推出了 Serverless Kubernetes 容器服務—— ASK。ASK 在兼容 K8s 應用的前提下,對 Kubernetes 作減法,將複雜性下沉到雲基礎設施,極大下降了運維管理負擔,讓開發者更加專一於應用自身。
在 Serverless 容器場景,咱們提供了兩種不一樣的技術方案:ACK on ECI 和 ASK。
ACK on ECI
ACK 集羣兼具功能性和靈活性。很是適合大型互聯網企業或傳統企業的需求。能夠一個集羣中運行多種不一樣的應用、任務。它主要面向的是企業中 SRE 團隊,能夠對 K8s 進行定製化開發和靈活性控制。
ACK 集羣支持 3 種不一樣的容器運行時技術:
ECI 在 K8s 集羣中適合的場景:
ASK
ASK 則是針對 ISV 和企業中的部門/中小企業度身定製的容器產品。用戶徹底不需具有 K8s 的管理運維能力,便可建立和部署 K8s 應用,極大下降管理複雜性,很是適合應用託管、CI/CD、AI/數據計算等場景。好比能夠利用 ASK 和 GPU ECI 實例構建了免運維的 AI 平臺,能夠按需建立機器學習環境,總體架構很是簡單、高效。
雲原生分佈式應用架構具有幾個關鍵特性,高可用、可彈性伸縮、容錯性好、易於管理、便於觀察、標準化、可移植。咱們能夠在阿里雲上構建雲原生應用參考架構,其中包括:
首先是端到端的彈性的應用架構。
咱們能夠將前端應用、業務邏輯容器化,部署在 K8s 集羣上,並根據應用負載配置 HPA 水平伸縮。
在後端數據層,咱們能夠利用 PolarDB 這樣的雲原生數據庫。PolarDB 採用存儲和計算分離架構,支持水平擴展。同等規格下是 MySQL 性能的7倍,而且相較於 MySQL 可以節省一半成本。
此外是系統化的高可用設計:
這樣咱們能夠保障整個系統具有 AZ 級別的可用性,能夠容忍一個 AZ 的失效。
此外,阿里雲的高可用服務 AHAS,提供了架構感知的能力,能夠對系統的拓撲結構進行可視化。並且它提供了應用巡檢能力,幫助咱們定位可用性問題。好比應用副本數是否知足可用性需求,RDS 數據庫實例是否開啓了多可用區容災等等。
在一個大規模分佈式系統中,基礎設施(如網絡,計算節點、操做系統)或者應用自身都有可能會出現各類穩定性或者性能問題。可觀測性能夠幫助咱們解分佈式系統的狀態,便於作出決策,並做爲彈性伸縮和自動化運維的基礎。
通常而言,可觀測性包含幾個重要的層面:
Logging – 日誌(事件流)
咱們基於阿里雲日誌服務 SLS 提供了完整的日誌方案,不但能夠對應用日誌進行收集、處理,而且提供了操做審計,K8s 事件中心等能力。
Metrics – 監控指標
對基礎設施服務,好比 ECS、存儲,網絡,雲監控提供了全面的監控。對於業務應用的性能指標,好比 Java 應用的 Heap 內存利用狀況,ARMS無需修改業務代碼便可對 Java 和 PHP 應用提供全方位的性能監控。對於 K8s 應用和組件,ARMS 提供的託管 Prometheus 服務,提供多種開箱即用的預置監控大盤,也提供開放接口,便於三方集成。
Tracing – 全鏈路追蹤
Tracing Analysis 爲開發者提供了完整的分佈式應用調用鏈路統計、拓撲分析等工具。可以幫助開發者快速發現和診斷分佈式應用中的性能瓶頸,提高微服務應用的性能和穩定性。
安全是企業在應用容器技術中最大的顧慮,沒有之一。爲了系統化提高容器平臺的安全性,咱們須要全方位進行安全防禦。第一件事,咱們須要將 DevOps 提高成爲 DevSecOps,強調需將安全概念融入在整個軟件生命週期中,將安全防禦能力左移到開發和交付階段。
ACR 鏡像服務企業版提供了完整的安全軟件交付鏈。用戶上傳鏡像後,ACR 能夠自動化地進行鏡像掃描,發現其中存在的 CVE 漏洞。以後能夠利用 KMS 祕鑰服務,自動化對鏡像添加數字簽名。在 ACK 中,能夠配置自動化安全策略,好比只容許通過安全掃描且符合上線要求的鏡像在生產環境進行發佈。整個軟件交付鏈路可觀測、可追蹤、策略驅動。在保障安全性的前提下,能夠有效提高交付效率。
此外,在應用運行時,也會面對衆多安全風險,好比新發現的 CVE 漏洞或者病毒攻擊。阿里雲安全中心提供了運行時的安全監控和防禦能力。
雲安全中心能夠對容器應用進程與網絡狀況監控,對應用的異常行爲或者安全漏洞進行實時檢測。發現問題後,會經過郵件、短信對用戶進行通知,也提供了自動化隔離與修復能力。好比咱們拿一個去年著名的挖礦蠕蟲病毒爲例,它會利用用戶的配置錯誤對容器集羣發動攻擊。在雲安全中心的幫助下,咱們能夠輕鬆發現它的蹤影並進行一鍵清除。
今年二月,咱們發佈了業內首個全託管,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 架構
首先 ACK 提供了統一集羣管理能力,除了能夠管理阿里雲 K8s 集羣以外,還能夠納管用戶在 IDC 的自有 K8s 集羣和其餘雲的 K8s 集羣。利用統一的控制平面實現多個集羣的統一的安全治理、可觀測性、應用管理、備份恢復等能力。好比利用日誌服務、託管 Prometheus 服務,能夠無侵入的方式幫助用戶對線上、線下集羣有一個統一的可觀測性大盤。利用雲安全中心,AHAS 能夠幫助用戶在混合雲的總體架構中發現並解決安全和穩定性風險。
此外 ASM 提供統一的服務治理能力,結合 CEN、SAG 提供的多地域、混合雲網絡能力,能夠實現服務就近訪問,故障轉移,灰度發佈等功能,支持雲容災、異地多活等應用場景,提高業務連續性。
雲原生混合雲解決方案
一個案例:職優你是一個電子學習職業發展平臺,爲來自世界多個地區的用戶提供服務。它的應用部署在阿里雲的 4 個不一樣地域上多個 Kubernetes 集羣中。這些集羣經過雲企業網 CEN 將多個跨地域 VPC 網絡打通,並經過一個 ASM 服務網格,對多個 K8s 集羣中的微服務應用進行統一的流量管理。
服務路由策略由 ASM 控制平面統一管理,並下發到多個 K8s 集羣。用戶請求會通過 DNS 分流到最近地域的入口網關,以後經過服務網格的就近訪問能力,優先訪問本地域內的服務端點。若是本地域的服務不可用,能夠將請求自動轉移到其餘地域實現流量切換。
雲原生混合雲管理
阿里雲的混合雲解決方案有幾個重要特色:
咱們來談一下對 Windows 容器的支持。在現今企業中,Windows 操做系統依然佔據半壁江山,其市場份額達 60% 之多。企業還有有大量的 Windows 應用,好比 ERP,CRM,ASP.Net 網站等。利用 Windows 容器和 Kubernetes,可讓 .Net 應用在代碼不重寫的狀況下實現容器化交付,充分利用雲上的彈性、敏捷等能力,實現業務應用的快速迭代和伸縮。
ACK 支持 Windows 2019,在 K8s 容器集羣中:
1)爲 Linux 和 Windows 應用提供了一致的用戶體驗和統一的能力。
2)支持 Linux 和 Windows 應用在集羣中的混合部署和互連互通,好比咱們可讓運行在 Linux 節點的 PHP 應用訪問運行在 Windows 節點的 SQL Server 數據庫。
咱們已經在支持了聚石塔電商平臺和 supET 工業互聯網平臺支持了不少 ISV 來對 Windows 應用進行雲原生化改造、升級。
下面咱們快速介紹一下阿里雲在雲原生方面的產品市場策略。咱們能夠總結爲三條:
新基石:容器技術是用戶使用雲資源的新界面,雲原生技術是釋放雲價值的最短路徑
新算力:基於雲原生的軟硬一體化技術創新,提高計算效率,加速業務智能化升級
新生態:經過開放技術生態和全球合做夥伴計劃,幫助更多企業分享雲時代技術紅利
重磅推薦 | 2020 阿里巴巴研發效能峯會首次對外直播
6 月 12 日 - 13 日,阿里巴巴內部研發效能峯會首次對外直播!7 大論壇,35 個議題,1300 分鐘技術乾貨分享!39 位技術大咖,4 萬阿里工程師,邀你共享研發效能盛宴!
點擊文末」閱讀原文「當即預定直播!