- Kubernetes權威指南:從Docker到Kubernetes實踐全接觸(第5版)
- 龔正等編著
- 1849字
- 2024-01-22 18:49:42
1.2 為什么要用Kubernetes
使用Kubernetes的理由很多,最重要的理由是,IT行業從來都是由新技術驅動的。Kubernetes是軟件領域近幾年來最具創新的容器技術,涵蓋了架構、研發、部署、運維等全系列軟件開發流程,不僅對互聯網公司的產品產生了極大影響,也對傳統行業的IT技術產生了越來越強的沖擊。基于Kubernetes的新一代容器架構已成為互聯網產品及大規模系統的必選方案。2020年3月,虛擬化技術巨頭VMware發布了使用Kubernetes重新打造的全新vSphere 7,向全球宣告了其擁抱Kubernetes的決心,堪稱虛擬化技術十年來最大的一次演進。vSphere 7通過底層重構,使得用戶能夠以ESXi管理VM虛擬機的方式來運用Kubernetes的能力。毫無疑問,VMware的這一舉動將對IT行業帶來重大影響,也宣告了以Kubernetes為核心的容器技術取代、融合虛擬機技術的時代正在加速到來。
如今,數百家廠商和技術社區共同構建了非常強大的云原生生態,市面上幾乎所有提供云基礎設施的公司都以原生形式將Kubernetes作為底層平臺,可以預見,會有大量的新系統選擇Kubernetes,不論這些新系統是運行在企業的本地服務器上,還是被托管到公有云上。阿里云容器服務Kubernetes版ACK(Alibaba Cloud Container Service for Kubernetes)是全球首批通過Kubernetes一致性認證的服務平臺。據公開資料,截至2020年,在阿里云的ACK上,已經運行著上萬個用戶的Kubernetes集群。而騰訊自研的TKEx容器平臺的底層也使用了Kubernetes原生技術,服務于騰訊的各種業務系統,包括騰訊會議、騰訊課堂、QQ及騰訊看點等,目前這些業務已運行的Kubernetes集群規模達到幾百萬CPU核數。百度云容器引擎(Cloud Container Engine)也采用Kubernetes作為容器集群管理系統,于2019年年底也得到了云原生計算基金會的官方認證,而在更早的2018年,百度的深度學習平臺PaddlePaddle也宣布支持Kubernetes,并在當年成為Kubernetes官方唯一支持的深度學習框架。華為早在Kubernetes剛開源時就以社區創始成員及白金會員的身份加入其中,華為云的容器引擎(CCE)也基于Kubernetes實現,同時補齊了完整的應用開發、交付與運維流程,為客戶提供完整的一站式云上應用生命周期管理方案。
使用Kubernetes會收獲哪些好處呢?
首先,可以“輕裝上陣”地開發復雜系統。以前需要很多人(其中不乏技術達人)一起分工協作才能設計、實現和運維的分布式系統,在采用Kubernetes解決方案之后,只需一個精悍的小團隊就能輕松應對。在這個團隊里,只需一名架構師負責系統中服務組件的架構設計,幾名開發工程師負責業務代碼的開發,一名系統兼運維工程師負責Kubernetes的部署和運維,因為Kubernetes已經幫我們做了很多。
其次,可以全面擁抱以微服務架構為核心思想的新一代容器技術的領先架構,包括基礎的微服務架構,以及增強的微服務架構(如服務網格、無服務器架構等)。微服務架構的核心是將一個巨大的單體應用分解為很多小的相互連接的微服務,一個微服務可能由多個實例副本支撐,副本的數量可以隨著系統的負荷變化進行調整。微服務架構使得每個服務都可以獨立開發、升級和擴展,因此系統具備很高的穩定性和快速迭代能力,開發者也可以自由選擇開發技術。谷歌、亞馬遜、eBay、Netflix等大型互聯網公司都采用了微服務架構,谷歌更是將微服務架構的基礎設施直接打包到Kubernetes解決方案中,讓我們可以直接應用微服務架構解決復雜業務系統的架構問題。
再次,可以隨時隨地將系統整體“搬遷”到公有云上。Kubernetes最初的設計目標就是讓用戶的應用運行在谷歌自家的公有云GCE中,華為云(CCE)、阿里云(ACK)和騰訊云(TKE)全部支持Kubernetes集群,未來會有更多的公有云及私有云支持Kubernetes。除了公有云,私有云也大量采用Kubernetes架構。在私有云與公有云融合的混合云領域,Kubernetes也大顯身手。在Kubernetes和容器技術誕生之前,要實現多云和混合云是很困難的,應用開發商需要針對每個云服務商進行定制化開發,導致遷移云服務商時從基礎架構到應用程序層面都需要做出相應的改動和適配。有了Kubernetes之后,用戶本地的私有云(數據中心)可以與云服務商的Kubernetes集群保持一致的接口,這樣應用程序在大部分情況下就不需要與具體的云服務商直接綁定了。
然后,Kubernetes內建的服務彈性擴容機制可以讓我們輕松應對突發流量。在服務高峰期,我們可以選擇在公有云中快速擴容某些Service的實例副本以提升系統的吞吐量,這樣不僅節省了公司的硬件投入,還大大改善了用戶體驗。中國鐵路總公司的12306購票系統,在客流高峰期(如節假日)就租用了阿里云進行分流。
最后,Kubernetes系統架構超強的橫向擴容能力可以讓我們的競爭力大大提升。對于互聯網公司來說,用戶規模等價于資產,因此橫向擴容能力是衡量互聯網業務系統競爭力的關鍵指標。我們利用Kubernetes提供的工具,不用修改代碼,就能將一個Kubernetes集群從只包含幾個Node的小集群平滑擴展到擁有上百個Node的大集群,甚至可以在線完成集群擴容。只要微服務架構設計得合理,能夠在多個云環境中進行彈性伸縮,系統就能夠承受大量用戶并發訪問帶來的巨大壓力。