復(fù)雜性會壓垮Kubernetes嗎?
Kubernetes肯定不會是第一個受制于其規(guī)模的開源項目,但是專家有不同看法……
Hadoop由于其使用不友好終于耗盡能量,相對于Hadoop如今人老珠黃,Kubernetes現(xiàn)在是開源社區(qū)新寵。正如Capital One的Bernard Golden所說,Kubernetes“易于操作”,正大步向前。相對這種外交辭令,有些人認(rèn)為Kubernetes正在忍受類似痔瘡一樣的痛苦。
Kubernetes會步Hadoop的后塵嗎?
很可能不會。相對于日益難用的Hadoop,Kubernetes變的越來越易用。盡管Kubernetes用起來并不簡單,但是其復(fù)雜性跟Hadoop有本質(zhì)不同。
Hadoop的不兼容復(fù)雜性
首先看看Hadoop。當(dāng)MapReduce概念提出時,Apache Hadoop就是很復(fù)雜的。隨著更多功能不斷加入和完善,復(fù)雜性更是不可避免。正如Tom Barber所說,“Hadoop本質(zhì)是什么?MapReduce被Spark取代又被其它功能取代,等等”,盡管如此,仍然很笨重。
為什么笨重,VMware的Jared Rosoff認(rèn)為:“Hadoop復(fù)雜性來自于其基礎(chǔ)架構(gòu)由太多不相關(guān)并且復(fù)雜系統(tǒng)溝通,每個系統(tǒng)都有不同生命周期和管理模式”。Flume,Chukwa,Hive,Pig,ZooKeeper等等,聽起來名字都很靈氣,但是把他們整合在一起工作的確是個噩夢,Hadoop其實是一個復(fù)雜解決方案棧,其復(fù)雜性來自于用戶。
Kubernetes的不同在于其擴展Hadoop的模式。如Rosoff所說,“Hadoop并沒有考慮人們會如何擴展系統(tǒng),因此造成了完全不兼容擴展的生態(tài)系統(tǒng)”,相對的,“Kubernetes則選擇了完全不同的擴展方式。Operators,CRI/CSI/CNI,確保當(dāng)更多組件加入時,表現(xiàn)的更加順暢”。換句話說,不像Hadoop不兼容擴展,“Kubernetes擴展后仍然是個整體”。
Kubernetes可信賴的復(fù)雜性
并不是說Kubernetes很簡單。Joe Beda of Heptio,作為Kubernetes創(chuàng)始人,聲明,“Kubernetes是個復(fù)雜系統(tǒng)”,但是這種復(fù)雜性是必須的,因為“Kubernetes做了很多抽象工作”。每個人都需要這種抽象嗎?不,“大部分人更希望一個簡易的功能”。
但是對于需要使用Kubernetes的用戶來說,Beda強調(diào),相對于已經(jīng)熟悉的“老舊兼容性復(fù)雜性”,他們更需要一種全新的復(fù)雜性系統(tǒng)。
作為工程師,我們更愿意體驗自己產(chǎn)生的復(fù)雜性,而不是需要去學(xué)習(xí)復(fù)雜性。隨著開發(fā)工作采用Jenkins,Bash,Puppet/Chef/Salt/Ansible,AWS,Terraform等,我們造就了獨特但是熟悉的復(fù)雜性,這種復(fù)雜性是內(nèi)生的因此并不會感到很復(fù)雜。
當(dāng)時讓新人加入這種系統(tǒng)就會比較困難,他們可能對工具很熟,但是對系統(tǒng)獨特性并不熟悉,這就是Kubernetes有價值的地方。Kubernetes提供一系列抽象層解決問題。盡管還會需要一些學(xué)習(xí),但是這種模式會大大提高生產(chǎn)效率,而且可以在不同項目和開發(fā)環(huán)境下進(jìn)行切換。
懂了嗎?與某些具有鎖定開發(fā)系統(tǒng)環(huán)境復(fù)雜性不同,Kubernetes復(fù)雜性帶來的好處是不會被捆綁在某種開發(fā)環(huán)境上。因此,Kubernetes所獲得的知識是可以遷移的。換句話說,“一次學(xué)習(xí),終身受益。”
一次學(xué)習(xí),終身受益
Kubernetes的學(xué)習(xí)過程也比Hadoop更容易,Gareth Rushgrove說,“在本地可以很容易運行Kubernetes,相比于其他復(fù)雜系統(tǒng),降低運行門檻非常重要”。另外,如CNCF基金的Chris Aniszczyk所說,“分布式系統(tǒng)內(nèi)生具有復(fù)雜性,Kubernetes幫助云提供商提供一種隨需擴展的實現(xiàn)方式”,盡管如此,我們應(yīng)該這么問這個問題:“Kubernetes相對于它要解決的問題來說復(fù)雜嗎?”,回答應(yīng)該是“不”。
因此對于“Kubernetes會步Hadoop后塵嗎?”,答案也是同樣的。Kubernetes已經(jīng)走過了艱難時刻,盡管Kubernetes的編排工具很復(fù)雜,不適合所有場景,但是所有的工具都需要學(xué)習(xí),使用和理解。幾個小時不夠,因為這個工具是為了解決復(fù)雜問題的。復(fù)雜性分為可控的和意外的兩種,Hadoop屬于后者,而Kubernetes則是前者。
因此,Kubernetes仍將會是容器編排領(lǐng)域的業(yè)界標(biāo)準(zhǔn)。