當前位置:
首頁 > 科技 > 如何用女朋友能懂的方式解釋Kubernetes

如何用女朋友能懂的方式解釋Kubernetes

作者 | Daniel Lebrero

譯者 | 張衛濱

Kubernetes 有自己的各種模型和術語,導致很多初學者在剛剛接觸 Kubernetes 時,理解起來有很多的困難和障礙。本文將其類比為主題公園,配合生動形象的圖片,通俗易懂地闡述了 Kubernetes 的基礎理念和各個組成部分。下次就可以這樣給女朋友解釋 Kubernetes 了。但前提是……

如果你是個技術工作者,你肯定使用或者聽說過 Kubernetes。Kubernetes(後文簡稱為 k8s)有自己的一套抽象機制和術語,但是藉助一些想像力,可以將這些抽象與我們更加熟悉的概念聯繫起來。這裡我們將 k8s 類比為主題公園,下次你可以這麼跟女朋友解釋 k8s。

如下的內容都是基於谷歌 Kubernetes 引擎的,在其他的供應商中或者如果你自行運行 k8s 的話,有些概念可能會略有差異。

你是誰?


我們假設你是 Kubenelius Fizzbuzz,一位剛剛畢業的 MBA,擅長打包各種東西,你信心滿滿地要實現自己的想法:KubePark 主題公園。

計劃有趣的遊樂設施

為了啟動 KubePark 這個工程,你需要為其規劃有趣的遊樂設施。於是,你決定每個吸引遊客的景點都只需要填寫一個如下圖所示的模板(k8s deployment)即可。

這張圖片表明 KubePark 有三個 1909 旋轉木馬。

1909 旋轉木馬是由兩部分組成的:一個經典的旋轉木馬再加上一個棉花糖攤位。每個組成部分(k8s container)將會通過一個大箱子由無人機實現交付,一旦開箱就能立即組裝好並運行起來。

每個景點都會使用柵欄包圍起來,將其與其他景點隔離,這樣某個景點的問題就不會傳播到其他景點之中。但是景點各個組成部分則是不可分割的整體(k8s pod),所以不會有障礙物或防火牆阻礙組件之間的交流和移動,避免破壞遊客的體驗(在 k8s 中,如果你想要共享文件的話,還是需要一點配置的)。

具有柵欄就意味著我們需要為遊客規劃入口(k8s containerPort)。在 1909 旋轉木馬中,將會首先經過一個棉花糖的攤位:在體驗旋轉木馬的時候,如果還有一個蓬鬆的棉花糖,那將會帶來更有趣的體驗。

模板還會指定大小(k8s 內存)和電力(k8sCPU)的需求(k8s resources),並將 1909 旋轉木馬標記(k8s labels)為旋轉木馬(carousel)、適宜兒童(kid friendly)和經典(classic)的景點。稍後我們將會看到如何使用這些信息。

在模板背後,有些東西我們在圖片上沒有標註出來,你還需要為每個組成部分編寫維護指令(k8s probes)。你的員工會定期按照這些指令判斷是否有某些組成部分需要替換。如果需要替換的話,維護人員會將有問題的組成部分直接化為灰燼,無人機將會運來另外一個新的大箱子作為替換。所以,不要花費力氣試圖修復它們,我們只需要替換整個棉花糖攤點或旋轉木馬就可以。在替換期間,景點會對遊客關閉,即便景點中某些組成部分對用戶可用也會如此:1909 旋轉木馬的體驗包括必備的棉花糖和旋轉木馬,二者是不可分割的。

尋找地塊將計劃落地


有趣的遊樂設施規劃完成之後,接下來就該開工建設這個公園了。

你需要與土地的擁有者簽訂一個租賃合同(k8s node pool):

這個包含了兩個地塊(k8s nodes),每個地塊有其大小(k8s memory)和發電機(k8s CPU)。需要注意該協議並不是針對兩個特定的地塊的,而是多個具備該特徵的地塊,土地擁有者要負責尋找這些地塊。藉助現代的運輸機制,這些地塊並不一定要相鄰。

土地擁有者還需要保護對地塊的訪問,這是通過在每個地塊周圍安裝帶刺的鐵絲網來實現的。

你還可以勾選「free disaster insurance」(k8s auto repair))複選框:如果某個地塊不可用的話,土地擁有者會將其替換為具有完全相同特質的另外一個地塊。土地擁有者要負責查找並確定地塊是否可用,並進行替換。

最後,協議提供的地塊是帶有標籤的(同樣是 k8s label),這裡的標籤是「plains」和「Mediterranean weather」,即平整的地區並且是地中海氣候。稍後我們將會看到如何使用該信息。

建造 KubePark


你的工作已經非常辛苦了,所以你會將公園建造的具體工作委託給一位控制人員。該員工會確保你在計劃中規劃的景點數量和類型始終都能無誤地運轉。

出乎意料的是,慷慨的土地擁有者還為你提供了控制交通管制塔(k8s cluster master),以便於讓控制人員容身並且還會負責控制塔所需的維護和改善工作。這樣我們要關心的事情就又少了一件!

現在有了控制塔,再加上建造遊樂設施的計劃,你的員工就可以決定在哪個地塊上構建每個景點了,需要確保地塊上有足夠的空間和電力滿足景點的運轉所需(k8s resource quality of service)。

每個景點始終都能得到所需的最少電力(k8s CPU),並且擁有的電力量不會超過規定的最大值(否則的話,將會造成短路並燒壞線路),如果地塊上還有空閑電力的話,它能夠得到額外的電力(超過最小值,但是不會大於最大值)。如果沒有空閑的話,該景點的運行會變得更加緩慢。

康茄舞會(Conga Dancing Party Line)有一個最小和最大的規模(k8s memory)。它始終能保證達到指定的最小值,但是如果大於最大值的話,它就會關閉。我們大家都知道,太長的康茄舞通常都會以騷亂收場。如果地塊有空閑的話,它會得到額外的空間(超過最小值),但是如果沒有空間的話,超過最小空間的某個景點將會關閉。交通管制塔會決定要將哪個景點關閉,它可能是康茄舞會景點,也有可能是其他的。

現在有了足夠的空間和電力,團隊在創建你規劃的景點方面已經沒有任何問題了。主題公園已經準備就緒了。

KubePark 開業


為了幫助遊客到達每個景點,你發現最簡單的方式就是使用帶不同顏色的路標(k8s nodePort 服務),如下所示:

圖片來源:來自 Cmglee 的倫敦維多利亞車站地麵線

在這裡,我們想要使用藍色標線將遊客導引至帶有「classic」標籤的景點,綠色標線將用戶導引至帶有「roller coaster」標籤的景點。按照你的需要,可以進行具體化或泛化,如果必要的話,還可以將多個標籤組合起來。

路標不僅僅是給遊客用的,你的內部員工也可以使用它,你還可以創建僅僅對內部員工可見的路徑(k8s clusterIP 服務),例如到員工食堂的路徑。

由於地塊都被帶刺的鐵絲網圍著,所以你需要想辦法讓遊客進入公園。有種方案是在鐵絲網上打個洞,帶顏色的路徑一直延伸到這個洞上(k8s loadBalancer 服務),但是這意味你要以某種方式保護每個帶顏色的路徑。

所以,作為替代方案,你會選擇帶有準入的大門(k8s ingress)。土地的擁有者提供一些標準的大門,所以你的員工無需維護它們,它們也不會使用地塊上的空間和電力。土地的擁有者還會負責構建從大門到地塊的立交橋。未來,你可能還會需要更加專業化的准入大門(k8s Traefik)。

現在,你可以給准入大門的員工一些指令:



  1. 帶有六歲以下兒童的遊客要使用紅色標線;


  2. 帶有青少年的遊客要使用綠色標線;


  3. ……

啟動並讓它運轉起來


一切就緒之後,你的公園就可以運行起來了:

英文原文

https://dev.to/danlebrero/kubernetes-explained-in-pictures-the-theme-park-analogy-3d99




喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 InfoQ 的精彩文章:

2018年最新人工智慧書單,總有一本你愛的
你跟產品經理因為什麼產生過劇烈衝突?

TAG:InfoQ |