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