你閨女也能看懂的插畫版Kubernetes指南

編者按:Matt Butcher是Deis的平臺架構師,熱愛哲學,咖啡和精雕細琢的代碼。有一天女兒走進書房問他什麼是Kubernetes,因而就有了這本插畫版的Kubernetes指南,講述了勇敢的Phippy(一個PHP應用),在Kubernetes的冒險故事,滿滿的父愛有木有!web

 

(視頻版建議在wifi環境下打開,土豪請隨意)後端

 

Hope You Enjoy The Story~網絡

 

 

有一天,女兒走進書房問我:『親愛的爸爸,什麼是Kubernetes呢?』架構

 

 

我回答她:『Kubernetes是一個開源的Docker容器編排系統,它能夠調度計算集羣的節點,動態管理上面的做業,保證它們按用戶指望的狀態運行。經過使用「labels」和「pods」的概念,Kubernetes將應用按邏輯單元進行分組,方便管理和服務發現。』負載均衡

 

女兒更疑惑了……因而就有了這個故事ide

 

好久好久之前,有一個叫Phippy的PHP應用,她很單純,只有一個頁面。她住在一個託管服務裏,周圍還有不少可怕的應用,她都不認識,也不想去認識,可是他們卻要共享這裏的環境。因此,她一直都希能有一個屬於本身的環境:一個能夠稱做home的webserver。ui

 

 

每一個應用的運行都要依賴一個環境,對於一個PHP應用來講,這個環境包括了一個webserver,一個可讀的文件系統和PHP的engine。spa

 

 

有一天,一隻可愛的鯨魚拜訪了Phippy,他建議Phippy住在容器裏。Phippy遵從了鯨魚的建議搬家了,雖然這個容器看起來很好,可是……怎麼說呢,就像是漂浮在海上的一個小房間同樣,仍是沒有家的感受。視頻

 

 

不過容器卻是爲應用提供了隔離的環境,在這個環境裏應用就能運行起來。可是這些相互隔離的容器須要管理,也須要跟外面的世界溝通。共享的文件系統,網絡,調度,負載均衡和資源分配都是挑戰。server

 

『抱歉……孩子……』鯨魚聳聳肩,一搖尾消失在了海平面下……Phippy尚未來得及失望,就看到遠方駛來一艘巨輪,掌舵的老船長很是威風。這艘船乍一看就是大了點,等到船走近了,Phippy才發現船體兩邊掛滿了皮筏。

 

老船長用充滿智慧的語氣對Phippy說:『你好,我是Kube船長』。

 

 

『Kubernetes』是希臘語中的船長,後來的『Cybernetic』和『Gubernatorial』這兩個詞就是從Kubernetes衍生來的。Kubernetes項目由Google發起,旨在爲生產環境中成千上萬的容器,構建一個健壯的平臺。

 

 

『您好,我是Phippy。』

 

『很高興認識你。』船長邊說,邊在Phippy身上放了一個name tag。

 

 

Kubernetes使用label做爲『nametag』來區分事物,還能夠根據label來查詢。label是開放式的:能夠根據角色,穩定性或其它重要的特性來指定。

 

 

Kube船長建議Phippy能夠把她的容器搬到船上的pod裏,Phippy很高興地接受了這個提議,把容器搬到了Kube的大船上。Phippy感受本身終於有家了。

 

 

在Kubernetes中,pod表明着一個運行着的工做單元。一般,每一個pod中只有一個容器,但有些狀況下,若是幾個容器是緊耦合的,這幾個容器就會運行在同一個pod中。Kubernetes承擔了pod與外界環境通訊的工做。

 

 

Phippy對這一切都感到很新奇,同時她也有不少不同凡響的關注點:『若是我想要複製本身該怎麼作呢?按需的……任意次數的能夠嗎?』

 

『很簡單。』船長說道,接着就給Phippy介紹起了replication controller。

 

 

Replication controller提供了一種管理任意數量pod的方式。一個replication controller包含了一個pod模板,這個模板能夠被不限次數地複製。經過replication controller,Kubernetes能夠管理pod的生命週期,包括擴/縮容,滾動部署和監控等功能。

 

 

Phippy就這樣在船上和本身的副本愉快地生活了好多天。可是天天只能面對本身的副本,這樣的生活也太孤單了。

 

Kube船長慷慨地笑道:『我有好東西給你。』

 

說着,Kube船長就在Phippy的replication controller和船上其它地方之間建了一個隧道:『就算大家四處移動,這個隧道也會一直待在這裏,它能夠幫你找到其它pod,其它pod也能夠找到你。』

 

 

service能夠和Kubernetes環境中其它部分(包括其它pod和replication controller)進行通訊,告訴它們你的應用提供什麼服務。Pod能夠四處移動,可是service的IP地址和端口號是不便、變的。並且其它應用能夠經過Kubernetes的服務發現找到你的service。

 

 

有了service,Phippy終於敢去船上其它地方去玩了,她很快就有了新朋友Goldie。有一天,Goldie送了Phippy一件禮物,沒想到Phippy只看了一眼就哭了。

 

『你怎麼哭了?』Goldie問道。

 

『我太喜歡這個禮物了,惋惜沒地兒放……』Phippy都開始抽泣了。Goldie一聽原來是這麼回事,立刻就告訴Phippy:『爲何不放在一個volume裏呢?』

 

 

Volume表明了一塊容器能夠訪問和存儲信息的空間,對於應用來講,volume是一個本地的文件系統。實際上,除了本地存儲,Ceph、Gluster、Elastic Block Storage和不少其它後端存儲均可以做爲volume。

 

 

Phippy漸漸地愛上了船上的生活,她很享受和新朋友的相處(Goldie的每一個pod副本也都很nice)。可是回想起之前的生活,她又在想是否是能夠有一點點私人空間呢?

 

Kube船長很理解:『看起來你須要namespace。』

 

 

Namespace是Kubernetes內的分組機制。Service,pod,replication controller和volume能夠很容易地和namespace配合工做,可是namespace爲集羣中的組件間提供了必定程度的隔離。

 

 

因而,在Kube船長的船上,Phippy和她的朋友們開始了海上的歷險,最重要的是,Phippy找到了本身的家。

 

今後,Phippy過上了幸福的生活。

 

原文連接:https://deis.com/blog/2016/kubernetes-illustrated-guide/

相關文章
相關標籤/搜索