歡迎光臨
每天分享高質量文章

AWS vs K8s 是新的 Windows vs Linux

作者:Ian Miell是開源程式員、演講師、作家和部落格寫手

以前……

如果你與我一樣,年過四十,又在IT行業工作,恐怕還記得每個人使用Windows,一小群但越來越多的人在業餘時間埋頭編譯Linux的年代。

Windows使用者見此情形會困惑不解:“明明Windows擁有你需要的一切功能,得到支援,還易於使用,你何必這麼做?!”

這個問題的答案可謂五花八門。有些人喜歡搗鼓,有些人希望作業系統“免費”,有些人想要對軟體擁有更大的控制權,有些人想要速度更快的系統,所有人都能搬出這麼做的某個理由。

現在……

當我又熬夜試圖讓某個新的Kubernetes附件按檔案記載的那樣執行時,驚訝地發現我處於與過去頗為相似的境地。就在幾年前,Kubernetes本身對於門外漢來說是混亂而恐怖的東西:API經常變更;你試圖自行構建,卻發覺說明檔案編得很差;以及一個不成熟的大型軟體專案該有的種種特點。

話雖如此,無論過去還是現在,Kubernetes的治理都比大多數開源軟體專案先進得多,不過當時的感覺就如同2000年前後編譯Linux,或者處理每當你拔掉USB連線,一半時候崩潰的膝上型電腦(是的,這種事過去常發生)。

就拿knative來說吧:

knative俱樂部的第一條規則是,你無法解釋knative是什麼東東。

我那些使用AWS的同事看到我經常費老大的勁,問道:“明明AWS擁有你需要的一切功能,得到支援,還易於使用,你何必這麼做?!”

AWS是Windows

與Windows一樣,AWS也是一種產品。它並不靈活,但效能可靠。API得到了明確的定義,關鍵效能指標(KPI)很好,對於大多數“實際”工作負載來說足夠實用。幫助定義你能實現什麼、不能實現什麼的種種資源方面有限制。

大多數人都想要這樣,就像大多數人想要一輛可以跑起來,又不需要常修理的汽車一樣。有些人喜歡維修汽車。一些公司聘有機修工來維修一大批汽車,因為規模化後成本較低。同樣道理,一些組織切中要點:它們可以看到再度自建資料中心帶來的好處。想想Facebook或者完全改弦易轍的Dropbox。(後文會探討這點)。

與微軟一樣,AWS採取的做法是擁抱並拓展(embrace and extend),現在谷歌如法炮製,一旦覺得某個領域有利可圖,就開發出越來越多的產品。

AWS和Kubernetes

這就引出了AWS與Kubernetes的關係。AWS沒有領會Kubernetes的要點,這可不是什麼秘密。AWS已經擁有ECS,這是個醜陋又笨拙的產品,不過如果你一開始就在AWS上投入了大成本,它倒是再合適不過。

有人說,不過有EKS。我最近沒有關註EKS,該產品很久後才面市,但它根本談不上功能豐富。給人的感覺就像是一個雲框架(AWS)與另一個框架(K8s)聯姻,一個難纏的青少年退學了。比如說,繼續有人埋怨部署起來“太費時間”。

就像微軟當初對待Linux,AWS長期無視Kubernetes,而且與微軟一樣,AWS也被迫對競爭對手採取“擁抱並拓展”的做法來保護市場份額。我經常接觸AWS人員,他們在解釋我們明明可以用ECS為什麼要使用EKS時諱莫如深。

EKS和鎖定

這就引出了AWS交付EKS,因而“擁抱”Kubernetes的主要原因之一:身份和訪問管理(IAM)。

EKS(同所有AWS服務一樣)與AWS IAM高度整合。正如大多數人所知,IAM是AWS鎖定的真正根源(而Lambda是出眾的鎖定技術。)

改變身份管理系統幾乎是任何一家企業組織最不想做的事情。要求貴公司的技術長主張對核心安全系統進行根本性改變,短期內對公司沒有效益,風險又很大,這可不是提升職業生涯的舉措。

另一方面,有人對為什麼Linux永遠不會威脅Windows提出了類似的論點;雖然桌面端確是如此,但手機和Mac的出現已經將Windows淪為消費級計算市場的配角。只要看看在過去的10年微軟沒有將瀏覽器強行推給人們就略知一二了。

因此,只要市場上出現一些意想不到的轉變,另外某種技術就能受到追捧,成為市場老大。微軟清楚這一點,AWS也清楚這一點。這就是為什麼微軟和AWS不斷為各自的解決方案新增新產品和新功能,這就是為什麼EKS會問世。

微軟最終讓這艘巨型油輪掉頭駛向雲,大力支援開源、Linux和Docker以及能夠將IT人員吸引到其服務上的所有技術。哦,你可以使用與貴公司網路一樣的活動目錄(AD),並將微軟Windows許可證轉移到雲端。第一個是免費的。微軟不再關心作業系統。沒有人關心,連Red Hat這家以支援與Windows競爭的作業系統為生的公司也不關心。作業系統已死,成了提供的剩餘價值越來越少的大路貨。

Kubernetes會迫使AWS將這艘巨型油輪駛向Kubernetes嗎?我們可以預料它會擁抱Istio和Knative以及此後出現的任何框架進入到它的解決方案中嗎?

AWS的競爭和成本

我不知道。但下麵有另外幾個原因解釋它可能會這麼做。

與Windows作業系統鼎盛時期的微軟一樣,AWS只有一個競爭對手:私有資料中心。就像微軟當時的競爭對手(Linux)一樣,接納這個競爭對手很痛苦,成本昂貴,而且風險頗大。

但那個資料中心的作業系統又是什麼呢?在Kubernetes出現之前,答案應該是OpenStack。OpenStack被廣泛認為很失敗,不過憑我的經驗,它在大型企業組織中還活著(即便日子不是過得很滋潤)。我不是OpenStack的專家,不過據我所知,它無法滿足在它需要執行的所有基礎設施上成為一種穩定產品,併成為大眾化產品所需要的全部條件。這同樣是微軟在過去面臨的情況:你可以在“任何”PC和“任何”硬體上執行,它會“工作”。蘋果以限制和控制硬體(併在此過程中獲得可觀的利潤)來應對。Linux有強大的社群支援,它最終滿足了對其使用場合來說足夠有用的條件。

OpenStack還沒有抵達成功彼岸,它試圖一蹴而就,不過它嵌入得足夠深,對不想被雲提供商鎖定的那些企業組織而言已成為Kubernetes安裝的預設基礎。

值得關註的是,AWS提出私有雲失敗的原因對它自己來說同樣適用:企業無法適當地管理彈性需求,無論在自己的資料中心還是掏錢請別的公司打理。指揮與控制式的財務治理結構根本不會在一夜之間改變,以適應敏捷靈活的資源配置樣式。(順便插一下,如果你想在企業中轉變IT,就從財務部門開始。如果能拿下這個部門,就有機會在安全和控制職能部門取得成功。如果你不知道為什麼一開始從財務部門開始很重要,必然會失敗)。

但企業沒有全力投入AWS有其他理由:鎖定(見上文)和規模經濟。我們前面已經提到Dropbox從AWS遷移到自己的資料中心。

就我使用雲服務的經歷而言,這裡有相似的情況。我本人覺得對我自己的資料而言,雲儲存仍不是來得更便宜,儘管它有明顯的好處(沒錯,即使我計入了自己的人力和冗餘要求)。為什麼是這樣?有這幾個原因:

  • 我擁有設計降低人力成本的解決方案的專長和能力

  • 旋轉磁碟的折舊很低(購買2塊以上磁碟更是如此),訪問速度很快

  • 我有足夠多的資料要儲存,線性雲成本開始顯得很昂貴

這些原因(專長、資產價值和資料規模經濟)是大企業同樣會自己搞的幾個原因。這個簡略的圖表表明瞭這一點:

紅線=執行Kubernetes的成本

執行Kubernetes的零日成本很高(左邊紅線),但隨著你擴充套件服務,該值呈指數級增長。這就是為什麼AWS賺了那麼多錢:只要未向你透露其非線性特性,對你使用者而言的價值就遠高於成本。坦率地說,如果你的規模變得足夠大,那麼AWS會開始壓榨你,但你可能不在乎,因為貴公司在擴充套件規模。你好比是水裡煮的青蛙。等你意識到自己的處境,為時太晚――脫身會很難很難。

AWS和“如果貝索斯失去理智會怎樣?”因素

大公司鼎力支援,Linux才真正流行起來。與之相仿,Kubernetes一開始就得到了兩家大公司的大筆資金:谷歌和Red Hat。

只有企業組織重視AWS的壟斷問題,才會真正取得進展。一些企業肯定重視這個問題,因為監管部門已要求:制定計劃,萬一貝索斯失去理智,或者亞馬遜裡面安插了眾多俄羅斯間諜,可以在合理的時間裡設法遷移。其他原因是,不同的雲提供商有不同的優勢;隨著時間的推移,大企業更有可能同時面對多家提供商。

如果足夠多的企業組織這麼做,那麼AWS基本上無力應對這種威脅。

若使用微軟產品,如果你想要其軟體,除了乖乖交錢外,別無他路;但如果使用Linux,你其實並不真正被一家提供商牢牢鎖定。我見過大企業在談判期間與Red Hat比膽量,並且投入大量資金調查改而使用CentOS。

出現在Linux身上的一幕出現了在Kubernetes的身上。我們已經看到Kubernetes採用Linux的“發行版”樣式:構建了這個平臺的精選版,以便更容易使用“特定版本”。早期就有RedHat的OpenShift,它後來改名為“OKD”(我猜是“OpenShift Kubernetes發行版”的意思)。

一些企業會為此付費:讓一個龐大的Kubernetes壟斷性支持者掌管一切,不過(與Linux一樣)總是可以選擇換成內部支援或另一家提供商,因為核心系統不歸任何人所有。

未來

Kubernetes足夠龐大、足夠獨立才能獨自生存。

看看OpenShift以及它如何避免被人說成是Kubernetes的分支。無論是什麼樣的正當理由,RedHat的抗議並非是不真誠的――他們不僅知道可以在開源基礎設施的基礎上賺錢,還知道自己也得益於開源基礎設施的成功。他們不需要對Kubernetes進行分支。值得關註的,他們的確對Docker進行了分支,甚至在OCI分支之前,這有充分的理由,因為Docker做出的決策顯然是為了自身求得生存(比如說,由於“一致性”的原因,硬編碼的預設註冊中心是Docker自己的)。

Kubernetes則沒有這個問題。讓我(和其他人)擔心的是這個:

雲原生計算基金會“生態圈”

與Linux一樣,“使用者空間”存在一系列令人眼花繚亂的技術,它們在成熟度和社群接受度方面迥然不同,其中大部分技術可能幾年後過時。我幾乎不記得各種日誌工具派什麼用場,更不用說像架構師那樣展開整張圖了。

如果我使用AWS,就會想:這真讓人頭大!你也可以試著聽聽Linux社群底層的聲音,或者在決定使用Linux桌面時考慮所有選項(共有45種之多!)。

結束語

我最初的核心觀點是,AWS之於Kubernetes,如同Windows之於Linux。如果真是這樣,如果將來不想步OpenStack的後塵,業界最好儘快拿出發行版管理方案。

換句話說,資料中心的Debian在哪裡?Ubuntu?

原文連結:https://zwischenzugs.com/2019/03/25/aws-vs-k8s-is-the-new-windows-vs-linux/amp/

已同步到看一看
贊(0)

分享創造快樂