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