圖文:你女朋友也能看懂的 Kubernetes

作者:劉志超

最近,我開始了 Kubernetes 之旅席揽,并且希望更好地了解其內(nèi)部原理顽馋。我在這些方面做了一個(gè)演講!

容器

在我們嘗試了解 Kubernetes 之前幌羞,讓我們花一點(diǎn)時(shí)間來澄清容器是什么寸谜,以及它們?yōu)槭裁慈绱耸軞g迎。

畢竟属桦,在不知道容器是什么的情況下談?wù)撊萜骶幣牌鳎↘ubernetes)是沒有意義的熊痴!

容器

“容器”是一個(gè)用來存放你放入的所有物品的容器。像應(yīng)用程序代碼聂宾,依賴庫以及它的依賴關(guān)系一直到內(nèi)核果善。

這里的關(guān)鍵概念是隔離。將所有內(nèi)容與其余內(nèi)容隔離開系谐,以便你更好地控制它們巾陕。

容器提供三種隔離類型:

工作區(qū)隔離(流程,網(wǎng)絡(luò))

資源隔離(CPU纪他,內(nèi)存)

文件系統(tǒng)隔離(聯(lián)合文件系統(tǒng))

考慮一下像 VM 一樣的容器鄙煤。它們精簡,快速(啟動(dòng))且體積小茶袒。而且馆类,所有這些都沒有構(gòu)建起來。

取而代之的是弹谁,他們使用 Linux 系統(tǒng)中存在的結(jié)構(gòu)(例如 cgroups乾巧,namespaces)在其上構(gòu)建了一個(gè)不錯(cuò)的抽象句喜。

現(xiàn)在我們知道什么是容器了,很容易理解為什么它們很受歡迎沟于。不僅可以分發(fā)應(yīng)用程序的二進(jìn)制/代碼咳胃,還可以以實(shí)用的方式交付運(yùn)行應(yīng)用程序所需的整個(gè)環(huán)境。

因?yàn)榭梢詫⑷萜鳂?gòu)建為非常小的單元,解決“在我的機(jī)器上工作”問題的完美解決方案孙乖。

什么時(shí)候使用 Kubernetes史辙?

容器一切都很好,軟件開發(fā)人員的生活現(xiàn)在要好很多存崖。那么,為什么我們需要另一項(xiàng)技術(shù)睡毒,如 Kubernetes 這樣的容器編排工具呢来惧?

當(dāng)進(jìn)入某個(gè)狀態(tài)時(shí),你需要用到它來管理眾多容器演顾。

問:我的前端容器在哪里供搀,我要運(yùn)行幾個(gè)?

答:很難說钠至,使用容器編排工具葛虐。

問:如何使前端容器與新創(chuàng)建的后端容器對話?

答:對 IP 進(jìn)行硬編碼棉钧,或者屿脐,使用容器編排工具。

問:如何進(jìn)行滾動(dòng)升級(jí)宪卿?

答:在每個(gè)步驟中手動(dòng)握住的诵,或者,使用容器編排工具愧捕。

為什么我更喜歡 Kubernetes

有很多容器編排工具奢驯,例如 Docker Swarm,Mesos 和 Kubernetes次绘。我的選擇是 Kubernetes(因此有了本文)瘪阁,因?yàn)?Kubernetes 是……

就像樂高積木一樣,它不僅具有大規(guī)模運(yùn)行容器編排所需的組件邮偎,而且還具有使用自定義組件交換內(nèi)部和外部不同組件的靈活性管跺。

想要擁有一個(gè)自定義的調(diào)度程序,也很方便禾进。需要具有新的資源類型豁跑,編寫一個(gè) CRD。此外泻云,社區(qū)非惩模活躍狐蜕,并且工具迅速發(fā)展。

Kubernetes 架構(gòu)

每個(gè) Kubernetes 集群都有兩種類型的節(jié)點(diǎn)卸夕,主節(jié)點(diǎn)和工作節(jié)點(diǎn)层释。顧名思義,主節(jié)點(diǎn)是在工作程序運(yùn)行有效負(fù)載(應(yīng)用程序)的地方控制和監(jiān)視群集快集。

集群可以與單個(gè)主節(jié)點(diǎn)一起工作贡羔,但是最好擁有三個(gè)以實(shí)現(xiàn)高可用性(稱為 HA 群集)。

讓我們仔細(xì)看一下主節(jié)點(diǎn)及其組成:

①etcd:數(shù)據(jù)庫个初,用于存儲(chǔ)有關(guān) Kubernetes 對象乖寒,其當(dāng)前狀態(tài),訪問信息和其他集群配置信息的所有數(shù)據(jù)院溺。

②API Server:RESTful API 服務(wù)器楣嘁,公開端點(diǎn)以操作整個(gè)集群。主節(jié)點(diǎn)和工作節(jié)點(diǎn)中的幾乎所有組件都與該服務(wù)器通信以執(zhí)行其職責(zé)覆获。

③調(diào)度程序:負(fù)責(zé)決定哪個(gè)有效負(fù)載需要在哪臺(tái)機(jī)器上運(yùn)行马澈。

④控制管理器:這是一個(gè)控制循環(huán)瓢省,它監(jiān)視集群的狀態(tài)(通過調(diào)用 API 服務(wù)器來獲取此數(shù)據(jù))并采取措施將其置于預(yù)期狀態(tài)弄息。

⑤kubelet:是工作節(jié)點(diǎn)的心臟。它與主節(jié)點(diǎn) API 服務(wù)器通信并運(yùn)行為其節(jié)點(diǎn)安排的容器勤婚。

⑥kube-proxy:使用 IP 表/IPVS 處理 Pod 的網(wǎng)絡(luò)需求摹量。

⑦Pod:運(yùn)行所有容器的 Kubernetes 的功勞。如果沒有 Pod 的抽象馒胆,就無法在 Kubernetes 中運(yùn)行容器缨称。Pod 添加了對容器之間的 Kuberenetes 聯(lián)網(wǎng)方式至關(guān)重要的功能。

快樂的 Pod

一個(gè) Pod 可以有多個(gè)容器祝迂,并且在這些容器中運(yùn)行的所有服務(wù)器都可以將彼此視為本地主機(jī)睦尽。

這使得將應(yīng)用程序的不同方面分離為單獨(dú)的容器,并將它們?nèi)孔鳛橐粋€(gè)容器加載在一起非常方便型雳。

有多種不同的 Pod 模式当凡,例如 Sidecar,Proxy 和大使纠俭,可以滿足不同的需求沿量。查看這篇文章[1]可以了解有關(guān)它們的更多信息。

Pod 網(wǎng)絡(luò)接口提供了一種將其與同一節(jié)點(diǎn)和其他工作節(jié)點(diǎn)中的其他 Pod 通信的機(jī)制冤荆。

而且朴则,每個(gè) Pod 都將分配有自己的 IP 地址,kube-proxy 將使用該 IP 地址來路由流量钓简,而且此 IP 地址僅在群集中可見乌妒。

所有容器也都可以看到安裝在容器內(nèi)的卷汹想,有時(shí)可以使用這些卷在容器之間進(jìn)行異步通信。

例如撤蚊,假設(shè)你的應(yīng)用是照片上傳應(yīng)用(例如 Instagram)欧宜,它可以將這些文件保存在一個(gè)卷中,而同一 Pod 中的另一個(gè)容器可以監(jiān)視該卷中的新文件拴魄,并開始對其進(jìn)行處理以創(chuàng)建多種尺寸冗茸,將它們上傳到云存儲(chǔ)。

控制器

在 Kubernetes 中匹中,有很多控制器夏漱,例如 ReplicaSet,Replication Controllers顶捷,Deployments挂绰,StatefulSets 和 Service。

這些是以一種或另一種方式控制 Pod 的對象服赎。讓我們看一些重要的葵蒂。

ReplicaSet

ReplicaSet 做自己擅長的事情,復(fù)制 Pod

該控制器的主要職責(zé)是創(chuàng)建給定 Pod 的副本重虑,如果 Pod 因某種原因死亡践付,則會(huì)通知該控制器,并立即跳入操作以創(chuàng)建新的 Pod缺厉。

Deployment

試圖控制 ReplicaSet 的部署(頭發(fā)凌亂)

部署是一個(gè)高階對象永高,它使用 ReplicaSet 來管理副本。它通過放大新的 ReplicaSet 和縮刑嵴搿(最終刪除)現(xiàn)有的 ReplicaSet 來提供滾動(dòng)升級(jí)命爬。

Service

表示為無人機(jī)的服務(wù),將數(shù)據(jù)包傳遞到相應(yīng)的 Pod

服務(wù)是一個(gè)控制器對象辐脖,其主要職責(zé)是在將“數(shù)據(jù)包”分發(fā)到相應(yīng)節(jié)點(diǎn)時(shí)充當(dāng)負(fù)載平衡器饲宛。

基本上,它是一種控制器構(gòu)造嗜价,用于在工作節(jié)點(diǎn)之間對相似的 Pod(通常由 Pod 標(biāo)簽標(biāo)識(shí))進(jìn)行分組艇抠。

假設(shè)你的“前端”應(yīng)用程序想與“后端”應(yīng)用程序通信,則每個(gè)應(yīng)用程序可能有許多正在運(yùn)行的實(shí)例炭剪。

你不必?fù)?dān)心對每個(gè)后端 Pod 的 IP 進(jìn)行硬編碼练链,而是將數(shù)據(jù)包發(fā)送到后端服務(wù),然后由后端服務(wù)決定如何進(jìn)行負(fù)載平衡并相應(yīng)地轉(zhuǎn)發(fā)奴拦。

PS:請注意媒鼓,服務(wù)更像是一個(gè)虛擬實(shí)體,因?yàn)樗袛?shù)據(jù)包路由均由 IP 表/IPVS/CNI 插件處理。

它只是使它更容易被視為一個(gè)真正的實(shí)體绿鸣,讓它們脫穎而出以了解其在 Kubernetes 生態(tài)系統(tǒng)中的作用疚沐。

Ingress

進(jìn)入一個(gè)浮動(dòng)平臺(tái),所有數(shù)據(jù)包都通過該平臺(tái)流入集群

入口控制器是與外界聯(lián)系的單點(diǎn)潮模,可以與集群中運(yùn)行的所有服務(wù)進(jìn)行對話亮蛔。這使我們可以輕松地在單個(gè)位置設(shè)置安全策略,監(jiān)視甚至記錄日志擎厢。

PS:Kubernetes 中還有很多其他控制器對象究流,例如 DaemonSets,StatefulSets 和 Jobs动遭。

還有一些諸如 Secrets芬探,ConfigMaps 之類的對象,用于存儲(chǔ)應(yīng)用程序的機(jī)密和配置厘惦,我將在下一篇博客文章介紹它們偷仿。

原文:http://39sd.cn/B9F03

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市宵蕉,隨后出現(xiàn)的幾起案子酝静,更是在濱河造成了極大的恐慌,老刑警劉巖羡玛,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件别智,死亡現(xiàn)場離奇詭異,居然都是意外死亡缝左,警方通過查閱死者的電腦和手機(jī)亿遂,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進(jìn)店門浓若,熙熙樓的掌柜王于貴愁眉苦臉地迎上來渺杉,“玉大人,你說我怎么就攤上這事挪钓∈窃剑” “怎么了?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵碌上,是天一觀的道長倚评。 經(jīng)常有香客問我,道長馏予,這世上最難降的妖魔是什么天梧? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮霞丧,結(jié)果婚禮上呢岗,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好后豫,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布悉尾。 她就那樣靜靜地躺著,像睡著了一般挫酿。 火紅的嫁衣襯著肌膚如雪构眯。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天早龟,我揣著相機(jī)與錄音惫霸,去河邊找鬼。 笑死葱弟,一個(gè)胖子當(dāng)著我的面吹牛它褪,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播翘悉,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼茫打,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了妖混?” 一聲冷哼從身側(cè)響起老赤,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎制市,沒想到半個(gè)月后抬旺,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡祥楣,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年开财,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片误褪。...
    茶點(diǎn)故事閱讀 39,690評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡责鳍,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出兽间,到底是詐尸還是另有隱情历葛,我是刑警寧澤,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布嘀略,位于F島的核電站恤溶,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏帜羊。R本人自食惡果不足惜咒程,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望讼育。 院中可真熱鬧帐姻,春花似錦粮宛、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至扛伍,卻和暖如春筷畦,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背刺洒。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工鳖宾, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人逆航。 一個(gè)月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓鼎文,卻偏偏與公主長得像,于是被迫代替她去往敵國和親因俐。 傳聞我的和親對象是個(gè)殘疾皇子拇惋,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評論 2 353

推薦閱讀更多精彩內(nèi)容