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