【插畫】一文看懂容器k8s
作者:石義峰
來(lái)源:恒生Light云社區(qū)
本篇翻譯官方英文的插畫版內(nèi)容,插畫版指南生動(dòng)形象,更好的幫助理解k8s。
英文原文--The Illustrated Children’s Guide to Kubernetes
————————————————中文正文開(kāi)始————————————————
有一天,女兒走進(jìn)書房問(wèn)我:『親愛(ài)的爸爸,什么是Kubernetes呢?』
我回答她:『Kubernetes是一個(gè)開(kāi)源的Docker容器編排系統(tǒng),它可以調(diào)度計(jì)算集群的節(jié)點(diǎn),動(dòng)態(tài)管理上面的作業(yè),保證它們按用戶期望的狀態(tài)運(yùn)行。通過(guò)使用「labels」和「pods」的概念,Kubernetes將應(yīng)用按邏輯單元進(jìn)行分組,方便管理和服務(wù)發(fā)現(xiàn)?!?/p>
女兒更疑惑了……于是就有了這個(gè)故事
很久很久以前,有一個(gè)叫 Phippy 的應(yīng)用程序。她是一個(gè)簡(jiǎn)單的應(yīng)用程序,由 PHP 編寫且只有一個(gè)頁(yè)面。
她住在一個(gè)需要和其他可怕的應(yīng)用程序分享環(huán)境的主機(jī)中 ,她不認(rèn)識(shí)這些應(yīng)用程序并且不愿意和他們來(lái)往。
她希望她能擁有 一個(gè)屬于自己的環(huán)境:只有她自己和她可以稱之為家的 Web 服務(wù)器。
每個(gè)應(yīng)用程序都有個(gè)運(yùn)行所依賴的環(huán)境。對(duì)于 PHP 應(yīng)用程序來(lái)說(shuō),這個(gè)環(huán)境可能包括 Web 服務(wù)器,一個(gè)可讀文件系統(tǒng)和 PHP 引擎本身。
有一天,一只善良的鯨魚出現(xiàn)了。他建議小 Phippy 住在容器里,這樣可能會(huì)更快樂(lè)。所以應(yīng)用程序 Phippy 遷移到了容器中。這個(gè)容器很棒,但是……它有點(diǎn)像一個(gè)漂浮在大海中央的豪華起居室。
容器提供了一個(gè)獨(dú)立的環(huán)境,應(yīng)用程序可以在這個(gè)環(huán)境中運(yùn)行。但是這些孤立的容器常常需要被管理并與外面的世界連接。
對(duì)于孤立的容器而言,共享文件系統(tǒng)、網(wǎng)絡(luò)通信、調(diào)度、負(fù)載均衡和分發(fā)都是要面對(duì)的挑戰(zhàn)。
就在 Phippy 甚至開(kāi)始絕望時(shí),一位駕駛著巨輪的船長(zhǎng)出現(xiàn)在海平線上。這艘船由幾十個(gè)綁在一起的木筏組成,但從外面來(lái)看,它就像一艘巨輪。
“你好呀,這位 PHP 應(yīng)用程序朋友。我是 Kube 船長(zhǎng)?!鳖V堑睦洗L(zhǎng)說(shuō)。
“Kubernetes” 在希臘語(yǔ)中是船長(zhǎng)的意思。 我們可以從這個(gè)單詞中得到 Cybernetic 和 Gubernatorial 這兩個(gè)詞組。Kubernetes 項(xiàng)目專注于構(gòu)建一個(gè)健壯的平臺(tái),用于在生產(chǎn)環(huán)境中運(yùn)行數(shù)千個(gè)容器。
“我是 Phippy。”小應(yīng)用程序說(shuō)。
“很高興認(rèn)識(shí)你?!贝L(zhǎng)一邊說(shuō),一邊在她身上貼上了一張標(biāo)有姓名的標(biāo)簽。
Kubernetes 使用標(biāo)簽作為“名牌”來(lái)標(biāo)識(shí)事物。它可以根據(jù)這些標(biāo)簽進(jìn)行查詢。標(biāo)簽是開(kāi)放性的:你可以用他們來(lái)表示角色、穩(wěn)定性或其他重要的屬性。
船長(zhǎng)建議應(yīng)用程序把她的容器搬到船上的一個(gè)船艙中。Phippy 很高興地把她的容器搬到 Kube 船長(zhǎng)巨輪的船艙內(nèi)。Phippy 覺(jué)得這里像家一樣。
在 Kubernetes 中,Pod 代表一個(gè)可運(yùn)行的工作單元。通常,你會(huì)在 Pod 中運(yùn)行一個(gè)容器。
但是對(duì)于一些容器緊密耦合的情況,你可以選擇在同一個(gè) Pod 中運(yùn)行多個(gè)容器。
Kubernetes 負(fù)責(zé)將你的 Pod 和網(wǎng)絡(luò)以及 Kubernetes 的其余環(huán)境相連。
Phippy 有一些不同尋常的興趣,她很喜歡遺傳學(xué)和綿羊。所以她問(wèn)船長(zhǎng):“如果我想克隆我自己,是否可以根據(jù)需求克隆任意次數(shù)呢?”
“這很容易?!贝L(zhǎng)說(shuō)。船長(zhǎng)把 Phippy 介紹給了 Replication Controller。
Replication Controller 提供一種管理任意數(shù)量 Pod 的方法。一個(gè) Replication Controller 包含一個(gè) Pod 模板,該模板可以被復(fù)制任意次數(shù)。
通過(guò) Replication Controller,Kubernetes 將管理 Pod 的生命周期,包括伸縮、滾動(dòng)更新和監(jiān)控。
無(wú)數(shù)個(gè)日夜,小應(yīng)用程序在她的船艙中與她的復(fù)制品相處十分愉快。但與自己為伍并沒(méi)有所說(shuō)的那么好……即使你擁有 N 個(gè)自己的克隆體。
Kube 船長(zhǎng)慈祥地笑了笑:“我正好有一樣?xùn)|西?!?/p>
他剛開(kāi)口,在 Phippy 的 Replication Controller 和船的其他部分之間打開(kāi)了一條隧道。Kube 船長(zhǎng)笑著說(shuō):“即使你的復(fù)制品來(lái)了又去,這條隧道始終會(huì)留在這里,你可以通過(guò)它發(fā)現(xiàn)其他 Pod,其他 Pod 也可以發(fā)現(xiàn)你!”
服務(wù)告知 Kubernetes 環(huán)境的其余部分(包括其他 Pod 和 Replication Controller)你的應(yīng)用程序包含了哪些服務(wù),當(dāng) Pod 來(lái)來(lái)往往,服務(wù)的 IP 地址和端口始終保持不變。
其他應(yīng)用程序可以通過(guò) Kurbenetes 服務(wù)發(fā)現(xiàn)找到你的服務(wù)。
多虧了這些服務(wù),Phippy 開(kāi)始探索船的其他部分。不久之后,Phippy 遇到了 Goldie。他們成了最好的朋友。
有一天,Goldie 做了一件不同尋常的事。她送給 Phippy 一件禮物。Phippy 看了禮物一眼,悲傷的淚水奪眶而出。
“你為什么這么傷心呢?”Goldie 問(wèn)道。
“我喜歡這個(gè)禮物,但我沒(méi)有地方可以放它!”Phippy 抽噎道。
但 Goldie 知道該怎么做?!盀槭裁床话阉湃刖碇心??”
卷表示容器可以訪問(wèn)和存儲(chǔ)信息的位置。對(duì)于應(yīng)用程序,卷顯示為本地文件系統(tǒng)的一部分。但卷可以由本地存儲(chǔ)、Ceph、Gluster、持久性塊存儲(chǔ),以及其他存儲(chǔ)后端支持。
Phippy 喜歡在 Kube 船長(zhǎng)的船上生活,她很享受來(lái)自新朋友的陪伴(Goldie 和每個(gè)克隆人都同樣令人愉悅)。但是,當(dāng)她回想起在可怕的主機(jī)度過(guò)的日子,她想知道她是否也可以擁有一點(diǎn)自己的隱私。
“這聽(tīng)起來(lái)像是你所需要的,”Kube 船長(zhǎng)說(shuō),“這是一個(gè)命名空間?!?/p>
命名空間是 Kubernetes 內(nèi)部的分組機(jī)制。服務(wù)、Pod、Replication Controller 和卷可以在命名空間內(nèi)部輕松協(xié)作,但命名空間提供了與集群其他部分一定程度的隔離。
Phippy 與她的新朋友一起乘坐 Kube 船長(zhǎng)的巨輪航行于大海之上。她經(jīng)歷了許多偉大的冒險(xiǎn),但最重要的是,Phippy 找到了自己的家。
所以 Phippy 從此過(guò)上了幸福的生活。