坚持探索与落地并重,阿里巴巴云原生之路全景揭秘
阿里妹導讀:阿里云已經成功地規模化落地云原生,26日的 KubeCon 大會上,CNCF TOC 和阿里云資深技術專家李響發表主題演講,分享了阿里巴巴在規模擴展、可靠性、開發效率、遷移策略等方面的經驗,并探討云原生的落地及應對若干技術挑戰。
為什么要做云原生?云原生究竟能帶來什么價值?從最初的獨自摸索到如今擁抱開源回饋社區,阿里巴巴走過了怎樣的云原生旅程?又有哪些技術心得?今天,將全部分享出來。
多年沉淀,堅持探索與落地并重
阿里巴巴從2011年開始通過容器實踐云原生技術體系,在整個業界都還沒有任何范例可供參考的大背境下,逐漸摸索出了一套比肩全球一線技術公司并且服務于整個阿里集團的容器化基礎設施架構。這個探索歷程雖然孤獨,但卻被始終如一的堅持至今。這正是在這個孤注一擲的技術探索與奮進的過程中,阿里巴巴的技術團隊完整的經歷了云原生技術浪潮里的所有關鍵節點,不僅成為了這次技術革命的重要見證者,也逐漸成為中國云原生技術體系當之無愧的推動者與引領者之一。
阿里的體量大、業務復雜,推動云原生要找到合適的切入點。在雙十一成本壓力的推動下,資源成本與效率優化成了阿里云原生的起點。
阿里從容器入手,研究低成本虛擬化與調度技術:提供靈活、標準的部署單元;將靜態資源分配更換為動態按需調度,進一步提升部署效率,解決資源碎片化問題,提高部署密度;通過存儲網絡虛擬化和存儲計算分離等技術,增強任務的可遷移性,進一步提高了資源的可靠性,降低了資源成本。
在資源成本的推動下,阿里完成了全面容器化,資源分配也被高效調度平臺接管。阿里的云原生并未止步于此。提高研發效率與加快迭代周期是推動阿里業務增強的秘密武器。阿里希望通過云原生讓開發者效率更高。
為了降低應用部署難度,提高部署自動化程度,阿里開始采用 Kubernetes 作為容器編排平臺,并且持續推動 Kubernetes 的性能與可擴展性。具體 Kubernetes,阿里持續對研發、部署流程進行改進。為了構建更云原生化的 CI/CD,進一步做到標準化和自動化,從研發到上線流程,阿里引入了諸如 Helm 的應用標準化管理,也嘗試了 GitOps 這樣的部署流程,還推動了 PaaS 層的面向終態自動化改造。于此同時,阿里也開始探索服務網格,致力于進一步提高服務治理的普適性與標準性,降低開發者采用門檻,進一步推動微服務在多語言和多環境下的普及。
今年,阿里也展開了全站上云。經過云原生的探索與改造,阿里基礎架構體系是現代化和標準化的。利用容器技術,應用與宿主機運行時完成了解耦;利用 Kubernetes 對 Pod 與 Volume 等的抽象,完成了對多種資源實現的統一化;通過智能調度與 PaaS 平臺,讓自動遷移應用,修復不穩定因素成為了可能,阿里通過云原生技術大大降低了上云的難度。
在這個提高資源和人員效率的過程中,阿里巴巴的整個基礎設施也變得更加開放,連通開源生態,在交流互動中不斷吸收和貢獻好的理念、技術、思想。如今,阿里云不僅支撐著中國最大的云原生應用雙11,而且擁有國內最大的公共云集群和鏡像倉庫。作為唯一入選 Gartner 的公有云容器服務競爭格局的廠商,阿里云也積累了最為豐富和寶貴的客戶實踐。
追求極致,優化擴展性和規模性
彈性和規模性,這是支撐阿里巴巴各種類型的復雜場景以及流量高峰的關鍵因素。
經過不斷打磨,阿里巴巴在 Kubernetes 規模與性能上取得了顯著的成果:將存儲object 的數量提升25倍,支持的節點數從5000提升到上萬,在端到端調度延遲從5s變為100ms等等。其中有不少工作在阿里巴巴和社區中共同開展,而這些研發成果都已經貢獻給社區,我們期望其他企業及開發者也可以享受阿里巴巴規模所帶來的技術紅利。
阿里巴巴持續優化性能,可以分為以下四個維度:工作負載追蹤、性能分析、定制化調度、大規模鏡像分發。首先對工作負載調度有完整的追蹤、重放機制,其次將所有性能問題的進行細致分析,逐一攻克技術瓶頸。Kubernetes 本身的可定制性很強,阿里巴巴針對自身業務場景沉淀了定制化的調度能力和鏡像分發系統。開源Dragonfly 項目脫胎于雙十一,具備極強的鏡像分發能力。數十個超級集群,每個超級集群具有數萬節點,數百萬的容器。
阿里巴巴落地 Kubernetes 可以分為三個階段:首先通過 Kubernetes 提供資源供給,但是不過多干擾運維流程,這系統容器是富容器,將鏡像標準化與輕量級虛擬化能力帶給了上面的 PaaS 平臺。第二步,通過 Kubernetes controller 的形式改造PaaS 平臺的運維流程,給 PaaS 帶來更強的面向終態的自動化能力。最后把運行環境等傳統重模式改成原生容器與 pod 的輕量模式,同時將 PaaS 能力完全移交給Kubernetes controller,從而形成一個完全云原生的架構體系。
如何解決云原生的關鍵難點
阿里巴巴云原生的探索,起步于自研容器和調度系統,到如今擁抱開源的標準化技術。對于當下開發者的建議是:如果想構建云原生架構,建議直接從 Kubernetes 入手即可。一方面,Kubernetes 為平臺建設者而生,已經成為云原生生態的中流砥柱,它不僅向下屏蔽了底層細節,而且向上支撐各種周邊業務生態;另一方面,更重要的是社區中有著越來越多圍繞 Kubernetes 構建的開源項目,比如Service Mesh、Kubeflow。
那么作為過來人,阿里有哪些“避坑指南”呢?
云原生技術架構演進中最為艱難的挑戰,其實來自于 Kubernetes 本身的管理。因為 Kubernetes 相對年輕,其自身的運維管理系統生態尚不完善。對于阿里而言,數以萬計的集群管理至關重要,我們探索并總結了四個方法:Kubernetes on Kubernetes,利用 K8s 來管理 K8s 自身;節點發布回滾策略,按規則要求灰度發布;將環境進行鏡像切分,分為模擬環境和生產環境;并且在監控側下足功夫,將Kubernetes 變得更白盒化和透明化,及早發現問題、預防問題、解決問題。
另外一個關鍵技術問題是 Kubernetes 的多租戶管理。相比于 namespace 擴展性差和命名沖突等限制,可以在 Kubernetes 之上建立虛擬集群。在提高擴展性的同時,能夠做到 API 層面的強隔離,通過 syncer 鏈接虛擬集群和真實集群,在 node添加 agent,達到更好的多租管理和更好的利用。
此次 KubeCon 大會上,阿里云重磅公布了兩個項目:Cloud Native App Hub —— 面向所有開發者的 Kubernetes 應用管理中心,OpenKruise —— 源自全球頂級互聯網場景的 Kubernetes 自動化開源項目集。
云原生應用中心(Cloud Native App Hub),可以簡單理解為 Helm 應用中國鏡像站,方便用戶獲得應用資源,并大大簡化了 Kubernetes 部署安裝一個應用的步驟;OpenKruise/Kruise 項目致力于成為“云原生應用自動化引擎”,解決大規模應用場景下的諸多運維痛點。這次沙龍首秀,開發者們體驗了從云原生應用中心快速下載應用,并通過帶狀態pod 原地升級、sidecar 容器注入、節點鏡像預熱等三個場景,實際體驗了 Kruise 強大的自動化運維能力。
值得一提的是,OpenKruise 項目源自于阿里巴巴經濟體過去多年的大規模應用部署、發布與管理的最佳實踐;源于容器平臺團隊對集團應用規模化運維,規模化建站的能力;源于阿里云 Kubernetes 服務數千客戶的需求沉淀。從不同維度解決了 Kubernetes 之上應用的自動化問題,包括部署、升級、彈性擴縮容、QoS 調節、健康檢查,遷移修復等等。
原文鏈接
本文為云棲社區原創內容,未經允許不得轉載。
總結
以上是生活随笔為你收集整理的坚持探索与落地并重,阿里巴巴云原生之路全景揭秘的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 技术三板斧:关于技术规划、管理、架构的思
- 下一篇: 那些年,我们见过的 Java 服务端“问