谷歌承認Kubernetes太複雜,於是開啓了容器界的Autopilot
試問上手Kubernetes有多難?有時候真得會讓你懷疑人生。
過去幾年,就連互聯網大廠的技術磚家也得細細捋。
“儘管我們過去幾年看到越來越多的企業開始擁抱Kubernetes,但是隨後就陷入了困境。”
Google Kubernetes Engine(GKE)產品負責人Drew Bradstock在最近的一次公開聲明中説道。
Kubernetes就像一把雙刃劍,既是最佳的容器編排技術,同時也存在相當高的複雜性和應用的高門檻,這個過程中往往會導致一些常見性錯誤。
2019年,知名軟件開發服務商Atlassian在嘗試部署Kubernetes的三年後就發現了這一點:Kubernetes部署起來實在太複雜了。
如今,就連Kubernetes的創立者和核心推動者Google本身都承認這個問題。
為什麼Kubernetes這麼難
實際上,在國內,Kubernetes直到2017年之後才開始由混亂開始逐漸走向成熟,很大程度上也源自雲計算市場本身的企業用户實踐大大加快。
一次採訪中,阿里巴巴資深技術專家張磊分析了Kubernetes的本質,他指出,
“Kubernetes本身是一個分佈式系統而不是一個簡單的 SDK 或者編程框架,這本身已經將其複雜度提升到了系統級分佈式開源項目的位置。此外,Kubernetes 第一次將聲明式 API 的思想在開源基礎設施領域普及開來,並以此為基礎提出了系列諸如容器設計模式和控制器模型等使用範式,這些具有一定先進性和前瞻性的設計也使得 Kubernetes 項目被大眾接受是存在一定學習週期的。”
也就是説,從目前造成Kubernetes複雜性的原因在於兩點:一是技術本身的應用難度,二是開發者的接受度,市場的認知和成熟度均有待提高。
鼻祖Google如何不拋棄不放棄
自2015年Google推出其雲端託管Kubernetes服務Google Kubernetes Engine(GKE),就一直得到外界關注和使用。在此期間,Google也在不斷釋出新的版本模型以強化其應用性。
不久前,Google推出一項新功能Autopilot以簡化部署和管理Kubernetes配置過程中存在的挑戰。
GKE是一個Kubernetes管理平台,主要在谷歌雲平台上運行,也可以在Anthos集羣管理的其他雲平台或本地部署的平台上。
這麼來看,目前存在兩種操作模式,一是標準的手動控制,二是自動控制Autopilot。Autopilot的基本原理可以解釋為:一款GKE完全託管部署的平台,需要運行在谷歌雲平台上。儘管GKE本身就是一項託管服務,但與Autopilot的區別在於,後者能夠比GKE具備更強的自主化和自動化能力。
Kubernetes本身涉及了集羣(一組物理或虛擬服務器)、節點(單個服務器)、pod(代表節點上一個或多個容器的管理單元)和容器等方面。GKE主要對集羣進行託管,而Autopilot則將這點擴展至節點和pod。
谷歌雲通常是一地三個或三個以上機房。如果將所有資源放在單個機房,其彈性將小於將其分散在多個機房中,同時將故障分散到多個機房又可以最大程度提升彈性能力。Autopilot模式始終是按地域劃分的,這有利於彈性伸縮能力,不過成本較高。
p.s. 通常雲用region和zone兩個概念來進行分區,前者主要指地理分區,後者主要指具體機房。
不過,應用Autopilot模式同樣存在其限制條件。其中包括操作系統始終基於Google自家容器的Linux“容器優化”,而不是基於Docker,或者基於Windows Server服務器。而且,每個節點的pod最大數量為32,而標準GKE為110。
同時,定價模式上也有所不同。每個Autopilot集羣每小時還需要支付1美分的費用。
究竟是Autopilot更貴還是GKE更貴,這種顯而易見的問題回答起來卻並不簡單。“與GKE相比,它還有一個溢價,因為我們得到了站點可靠性工程(Site Reliability Engineering,SRE)和SLA的服務,這就不僅僅只是產品功能了。”
也就是説,由於難以估計計算實例的正確規範,因此未充分GKE標準部署的成本可能會高於Autopilot。
整體來看,新的Autopilot服務為Kubernetes提供了更多選擇範疇,可參考成本是否增加、靈活性是否降低、或者給IT運維人員帶來的潛在挑戰等等。當然,這並不包括對客户支持的滿意度這一問題。
值得一提的是,軟件工程師Kevin Lin在最近對比了亞馬遜和谷歌雲服務,指出Google的客户支持基本上沒有任何幫助,相比之下亞馬遜的技術服務既快又有用。Kevin Lin曾為亞馬遜公司任職,他最近描述了自己使用AWS和Google雲的經歷。
回到一開始雷鋒網所探討的,針對Kubernetes複雜性問題是一直以來困惑很多開發人員的技術問題,伴隨Kubernetes已然成為整個雲原生社區最主流的開源容器編排技術,在生產環境的採用率越來越高,可以預見其複雜度也會呈線性增長。
你有沒有針對複雜性問題的一個最佳實踐呢?歡迎你的解決方案。(雷鋒網雷鋒網)