用打比方的方法,10分鐘給你講清楚Kubernetes
Kubernetes容器編排系統(tǒng)背后的概念可能很難理解。這里做了一個簡單的類比:把房子里的房間出租,幫助你了解Kubernetes是如何工作的。
如何在房子里出租房間
想象一下你擁有一座有10個房間的房子。你想通過在線住宿服務(wù)出租其中的三個房間。你有兩個選擇:發(fā)布廣告,自己管理一切;雇人幫你做。
想省事兒,你決定雇傭一個租賃代理來處理這些事情。你與代理的合同規(guī)定:
- ——在任何時候,都應(yīng)該有三個房間出租給客人。
- ——每個房間有兩張床。
- ——每次客人預(yù)訂時,鑰匙都需要在適當(dāng)?shù)臅r間交給客人。
- ——每次客人離開時,房間都要打掃干凈。
- ——如果有太多的預(yù)訂請求(例如在假日期間),那么可預(yù)訂的房間可以從3個增加到10個。
就這樣!你不用操什么心了,愿意的話可以不時地用電話聯(lián)系代理了解情況。
如何管理租賃
代理雇傭員工來滿足你的需求。假設(shè)有三個員工管理三個房間:一號房間預(yù)訂后,員工一確保房間狀況良好,提供鑰匙,清潔服務(wù)等。
床是最基本的實體,因為它是客人過夜的最低要求。
代理將員工、房間、床位、預(yù)訂等所有信息保存在筆記本上。代理還記錄員工的休假時間,以便在某個員工生病或休假時將另一名員工分配到房間。代理根據(jù)需要使用電話聯(lián)系員工。
當(dāng)客人在線預(yù)訂房間時,預(yù)訂會被重定向到一個確保該房間準(zhǔn)備就緒的員工??腿藖砹?,拿到鑰匙,晚上睡在床上,走的時候打掃房間,然后重復(fù)這個循環(huán)。
這聽起來很簡單,但這和Kubernetes有什么關(guān)系?
Kubernetes的類似之處
你通過雇用其他員工的代理實現(xiàn)自動化,這與Kubernetes對應(yīng)用程序的操作類似。下面是它的工作原理。
假設(shè)你是一個應(yīng)用程序開發(fā)者。類比出租房中最基本的實體是床,應(yīng)用程序(滿足用戶需求的最基本實體)運行在容器中。應(yīng)用程序的“房間”稱為pod,它是應(yīng)用程序運行的地方。
節(jié)點或工作節(jié)點本質(zhì)上是一臺運行pod的機器。
代理的員工確??头抗δ荦R全。在Kubernetes里,你沒有員工,但有kubelet。kubelet是節(jié)點內(nèi)的一個代理,它確保在該節(jié)點內(nèi)運行的pod是健康的。
租賃代理對應(yīng)于Kubernetes中的兩件事:kube-scheduler和kube-controller manager。就像代理決定應(yīng)該將哪個房間分配給哪個員工一樣,kube-scheduler根據(jù)可用的資源及其需求來決定哪個pod在哪個節(jié)點上運行。記住,節(jié)點是一臺機器,而pod在節(jié)點內(nèi)運行。就像代理決定員工下班時要做什么一樣,kube-controller manager決定當(dāng)節(jié)點宕機或機器因任何原因停止工作時該做什么。
代理的筆記本上記錄了關(guān)于出租多少房間、有多少張床空著、哪個員工在做什么等所有細節(jié),它與etcd數(shù)據(jù)存儲相對應(yīng)。這就是配置數(shù)據(jù)存儲的地方,例如,如果你需要三個pod一直在運行。
Kubernetes中的主節(jié)點和worker節(jié)點類似于代理和員工用來通信的電話。主API-server類似于代理的電話,而每個worker節(jié)點的kube-proxy則類似于員工的電話。
API-server、etcd、kube-controller manager和kube-scheduler組成了這個Kubernetes實例的控制中心。
部署
你(房主)和代理之間的合同相當(dāng)于在Kubernetes中的部署。部署包括一組需求,比如需要運行多少個pod,需要什么資源(例如CPU)等。Kubernetes確保無需人工干預(yù)即可滿足這些要求。
還記得協(xié)議中的額外條款嗎?如果有太多客人預(yù)訂,該怎么辦?這相當(dāng)于Kubernetes中的自autoscaling。這意味著Kubernetes可以擴展你的服務(wù),隨著應(yīng)用程序用戶的增加,為你提供更多的pod,就像你可以在更多的客人試圖預(yù)訂時提供更多的房間一樣。正如你不能將預(yù)訂擴展到超過10個房間一樣,你可能需要為自動縮放設(shè)置一個上限,因為你不能隨意地繼續(xù)增加pod。