...

【插畫】一(yī / yì /yí)文看懂容器k8s

2021-09-01

作者:石義峰

來(lái)源:恒生Light雲社區

本篇翻譯官方英文的(de)插畫版内容,插畫版指南生動形象,更好的(de)幫助理解k8s。

英文原文--The Illustrated Children’s Guide to Kubernetes

————————————————中文正文開始————————————————

圖片1.png

有一(yī / yì /yí)天,女兒走進書房問我:『親愛的(de)爸爸,什麽是(shì)Kubernetes呢?』

圖片2.png

我回答她:『Kubernetes是(shì)一(yī / yì /yí)個(gè)開源的(de)Docker容器編排系統,它可以(yǐ)調度計算集群的(de)節點,動态管理上(shàng)面的(de)作業,保證它們按用戶期望的(de)狀态運行。通過使用「labels」和(hé / huò)「pods」的(de)概念,Kubernetes将應用按邏輯單元進行分組,方便管理和(hé / huò)服務發現。』

女兒更疑惑了(le/liǎo)……于(yú)是(shì)就(jiù)有了(le/liǎo)這(zhè)個(gè)故事

圖片3.png

很久很久以(yǐ)前,有一(yī / yì /yí)個(gè)叫 Phippy 的(de)應用程序。她是(shì)一(yī / yì /yí)個(gè)簡單的(de)應用程序,由 PHP 編寫且隻有一(yī / yì /yí)個(gè)頁面。

圖片4.png

住在(zài)一(yī / yì /yí)個(gè)需要(yào / yāo)和(hé / huò)其他(tā)可怕的(de)應用程序分享環境的(de)主機中 ,她不(bù)認識這(zhè)些應用程序并且不(bù)願意和(hé / huò)他(tā)們來(lái)往。

圖片5.png

希望她能擁有 一(yī / yì /yí)個(gè)屬于(yú)自己的(de)環境:隻有她自己和(hé / huò)她可以(yǐ)稱之(zhī)爲(wéi / wèi)家的(de) Web 服務器。

每個(gè)應用程序都有個(gè)運行所依賴的(de)環境。對于(yú) PHP 應用程序來(lái)說(shuō),這(zhè)個(gè)環境可能包括 Web 服務器,一(yī / yì /yí)個(gè)可讀文件系統和(hé / huò) PHP 引擎本身。

圖片6.png

有一(yī / yì /yí)天,一(yī / yì /yí)隻善良的(de)鲸魚出(chū)現了(le/liǎo)。他(tā)建議小 Phippy 住在(zài)容器裏,這(zhè)樣可能會更快樂。所以(yǐ)應用程序 Phippy 遷移到(dào)了(le/liǎo)容器中。這(zhè)個(gè)容器很棒,但是(shì)……它有點像一(yī / yì /yí)個(gè)漂浮在(zài)大(dà)海中央的(de)豪華起居室。

圖片7.png

容器提供了(le/liǎo)一(yī / yì /yí)個(gè)獨立的(de)環境,應用程序可以(yǐ)在(zài)這(zhè)個(gè)環境中運行。但是(shì)這(zhè)些孤立的(de)容器常常需要(yào / yāo)被管理并與外面的(de)世界連接。

對于(yú)孤立的(de)容器而(ér)言,共享文件系統、網絡通信、調度、負載均衡和(hé / huò)分發都是(shì)要(yào / yāo)面對的(de)挑戰。

圖片8.png

就(jiù)在(zài) Phippy 甚至開始絕望時(shí),一(yī / yì /yí)位駕駛着巨輪的(de)船長出(chū)現在(zài)海平線上(shàng)。這(zhè)艘船由幾十個(gè)綁在(zài)一(yī / yì /yí)起的(de)木筏組成,但從外面來(lái)看,它就(jiù)像一(yī / yì /yí)艘巨輪。

“你好呀,這(zhè)位 PHP 應用程序朋友。我是(shì) Kube 船長。”睿智的(de)老船長說(shuō)。

圖片9.png

“Kubernetes” 在(zài)希臘語中是(shì)船長的(de)意思。 我們可以(yǐ)從這(zhè)個(gè)單詞中得到(dào) Cybernetic 和(hé / huò) Gubernatorial 這(zhè)兩個(gè)詞組。Kubernetes 項目專注于(yú)構建一(yī / yì /yí)個(gè)健壯的(de)平台,用于(yú)在(zài)生産環境中運行數千個(gè)容器。

圖片10.png

“我是(shì) Phippy。”小應用程序說(shuō)。

“很高興認識你。”船長一(yī / yì /yí)邊說(shuō),一(yī / yì /yí)邊在(zài)她身上(shàng)貼上(shàng)了(le/liǎo)一(yī / yì /yí)張标有姓名的(de)标簽。

圖片11.png

Kubernetes 使用标簽作爲(wéi / wèi)“名牌”來(lái)标識事物。它可以(yǐ)根據這(zhè)些标簽進行查詢。标簽是(shì)開放性的(de):你可以(yǐ)用他(tā)們來(lái)表示角色、穩定性或其他(tā)重要(yào / yāo)的(de)屬性。

圖片12.png

船長建議應用程序把她的(de)容器搬到(dào)船上(shàng)的(de)一(yī / yì /yí)個(gè)船艙中。Phippy 很高興地(dì / de)把她的(de)容器搬到(dào) Kube 船長巨輪的(de)船艙内。Phippy 覺得這(zhè)裏像家一(yī / yì /yí)樣。

圖片13.png

在(zài) Kubernetes 中,Pod 代表一(yī / yì /yí)個(gè)可運行的(de)工作單元。通常,你會在(zài) Pod 中運行一(yī / yì /yí)個(gè)容器。

但是(shì)對于(yú)一(yī / yì /yí)些容器緊密耦合的(de)情況,你可以(yǐ)選擇在(zài)同一(yī / yì /yí)個(gè) Pod 中運行多個(gè)容器。

Kubernetes 負責将你的(de) Pod 和(hé / huò)網絡以(yǐ)及 Kubernetes 的(de)其餘環境相連。

圖片14.png

Phippy 有一(yī / yì /yí)些不(bù)同尋常的(de)興趣,她很喜歡遺傳學和(hé / huò)綿羊。所以(yǐ)她問船長:“如果我想克隆我自己,是(shì)否可以(yǐ)根據需求克隆任意次數呢?”

“這(zhè)很容易。”船長說(shuō)。船長把 Phippy 介紹給了(le/liǎo) Replication Controller。

圖片15.png

Replication Controller 提供一(yī / yì /yí)種管理任意數量 Pod 的(de)方法。一(yī / yì /yí)個(gè) Replication Controller 包含一(yī / yì /yí)個(gè) Pod 模闆,該模闆可以(yǐ)被複制任意次數。

通過 Replication Controller,Kubernetes 将管理 Pod 的(de)生命周期,包括伸縮、滾動更新和(hé / huò)監控。

圖片16.png

無數個(gè)日夜,小應用程序在(zài)她的(de)船艙中與她的(de)複制品相處十分愉快。但與自己爲(wéi / wèi)伍并沒有所說(shuō)的(de)那麽好……即使你擁有 N 個(gè)自己的(de)克隆體。

Kube 船長慈祥地(dì / de)笑了(le/liǎo)笑:“我正好有一(yī / yì /yí)樣東西。”

他(tā)剛開口,在(zài) Phippy 的(de) Replication Controller 和(hé / huò)船的(de)其他(tā)部分之(zhī)間打開了(le/liǎo)一(yī / yì /yí)條隧道(dào)。Kube 船長笑着說(shuō):“即使你的(de)複制品來(lái)了(le/liǎo)又去,這(zhè)條隧道(dào)始終會留在(zài)這(zhè)裏,你可以(yǐ)通過它發現其他(tā) Pod,其他(tā) Pod 也(yě)可以(yǐ)發現你!”

圖片17.png

服務告知 Kubernetes 環境的(de)其餘部分(包括其他(tā) Pod 和(hé / huò) Replication Controller)你的(de)應用程序包含了(le/liǎo)哪些服務,當 Pod 來(lái)來(lái)往往,服務的(de) IP 地(dì / de)址和(hé / huò)端口始終保持不(bù)變。

其他(tā)應用程序可以(yǐ)通過 Kurbenetes 服務發現找到(dào)你的(de)服務。

圖片18.png

多虧了(le/liǎo)這(zhè)些服務,Phippy 開始探索船的(de)其他(tā)部分。不(bù)久之(zhī)後,Phippy 遇到(dào)了(le/liǎo) Goldie。他(tā)們成了(le/liǎo)最好的(de)朋友。

有一(yī / yì /yí)天,Goldie 做了(le/liǎo)一(yī / yì /yí)件不(bù)同尋常的(de)事。她送給 Phippy 一(yī / yì /yí)件禮物。Phippy 看了(le/liǎo)禮物一(yī / yì /yí)眼,悲傷的(de)淚水奪眶而(ér)出(chū)。

“你爲(wéi / wèi)什麽這(zhè)麽傷心呢?”Goldie 問道(dào)。

“我喜歡這(zhè)個(gè)禮物,但我沒有地(dì / de)方可以(yǐ)放它!”Phippy 抽噎道(dào)。

但 Goldie 知道(dào)該怎麽做。“爲(wéi / wèi)什麽不(bù)把它放入卷中呢?”

圖片19.png

卷表示容器可以(yǐ)訪問和(hé / huò)存儲信息的(de)位置。對于(yú)應用程序,卷顯示爲(wéi / wèi)本地(dì / de)文件系統的(de)一(yī / yì /yí)部分。但卷可以(yǐ)由本地(dì / de)存儲、Ceph、Gluster、持久性塊存儲,以(yǐ)及其他(tā)存儲後端支持。

Phippy 喜歡在(zài) Kube 船長的(de)船上(shàng)生活,她很享受來(lái)自新朋友的(de)陪伴(Goldie 和(hé / huò)每個(gè)克隆人(rén)都同樣令人(rén)愉悅)。但是(shì),當她回想起在(zài)可怕的(de)主機度過的(de)日子(zǐ),她想知道(dào)她是(shì)否也(yě)可以(yǐ)擁有一(yī / yì /yí)點自己的(de)隐私。

“這(zhè)聽起來(lái)像是(shì)你所需要(yào / yāo)的(de),”Kube 船長說(shuō),“這(zhè)是(shì)一(yī / yì /yí)個(gè)命名空間。”

圖片20.png

命名空間是(shì) Kubernetes 内部的(de)分組機制。服務、Pod、Replication Controller 和(hé / huò)卷可以(yǐ)在(zài)命名空間内部輕松協作,但命名空間提供了(le/liǎo)與集群其他(tā)部分一(yī / yì /yí)定程度的(de)隔離。

Phippy 與她的(de)新朋友一(yī / yì /yí)起乘坐 Kube 船長的(de)巨輪航行于(yú)大(dà)海之(zhī)上(shàng)。她經曆了(le/liǎo)許多偉大(dà)的(de)冒險,但最重要(yào / yāo)的(de)是(shì),Phippy 找到(dào)了(le/liǎo)自己的(de)家。

圖片21.png

所以(yǐ) Phippy 從此過上(shàng)了(le/liǎo)幸福的(de)生活。


來(lái)源:恒生Light雲社區