天天看點

kubernetes學習記錄(1)——kubernetes初了解

入門時,學習閱讀的為《你閨女也能看懂的插畫版Kubernetes指南》。由Deis的平台架構師Matt Butcher向他女兒介紹什麼是Kubernetes,内容短小精悍、淺顯易懂。

Kubernetes是一個開源的Docker容器編排系統,它可以排程計算叢集的節點,動态管理上面的作業,保證它們按使用者期望的狀态運作。通過使用「labels」和「pods」的概念,Kubernetes将應用按邏輯單元進行分組,友善管理和服務發現。

以隻有一個界面的簡單PHP應用為例。

PHP應用運作在一個托管服務裡,與其他的應用共享環境。

如果想與其他應用分離,則可以通過一個web server提供給該PHP應用一個專屬的環境。

kubernetes學習記錄(1)——kubernetes初了解

每個應用的運作都要依賴一個環境,對于一個PHP應用來說,這個環境包括了一個webserver,一個可讀的檔案系統和PHP的engine。

這個環境也可以封裝進一個容器裡。容器可以為應用提供隔離的環境,在這個環境裡應用就能運作起來。但是這些互相隔離的容器需要管理,也需要跟外面的世界溝通。共享的檔案系統、網絡、排程、負載均衡和資源配置設定等都是挑戰。

Kubernetes就可以管理這些容器。Kubernetes項目由Google發起,旨在為生産環境中成千上萬的容器建構一個健壯的平台。

Kubernetes使用label作為nametag來區分事物,也可以根據label來查詢。label是開發式的,可以根據角色、穩定性或其它重要的特性來指定。

kubernetes學習記錄(1)——kubernetes初了解

Label是用于區分Pod、Service、RC的Key/Value對。每個對象可以有多個Label,但每個Label的Key隻能對應一個Value。

Kubernetes在容器上又做了一層封裝,将容器封裝到pod裡。在Kubernetes中,建立、排程和管理的最小機關是pod而不是容器。

kubernetes學習記錄(1)——kubernetes初了解

在Kubernetes中,pod代表着一個運作着的工作單元。一般情況下,每個pod中隻有一個容器(原因是為了避免容器之間發生端口沖突)。如果幾個容器是緊耦合的,也可以放在同一個pod中,但一定要避免同一個pod下容器之間發生端口沖突。Kubernetes承擔了pod與外界環境的通信工作。

Kubernetes是使用Replication controller,可以管理任意數量的pod。一個replication controller包含了一個pod模闆,這個模闆可以被不限次數地複制。通過replication controller,Kubernetes可以管理pod的生命周期,包括擴/縮容,滾動部署和監控等功能。

kubernetes學習記錄(1)——kubernetes初了解

RC可以確定在任何時候Kubernetes叢集中有指定數量的Pod副本在運作。如果少于指定數量,RC會自動建立新的Pod副本,反之會殺死多餘的副本以保證數量不變。RC是實作彈性伸縮、滾動更新的核心。

Kubernetes通過Service能夠提供pod間的互相通信。service可以和Kubernetes環境中其它部分(包括其它pod和replication controller)進行通信,告訴它們你的應用提供什麼服務。Pod可以四處移動(會改變IP位址),但是service的IP位址和端口号是不變的。而且其它應用可以通過Kubernetes的服務發現找到對應的service。

kubernetes學習記錄(1)——kubernetes初了解

Service是真實應用服務的抽象。将代理的Pod對外表現為一個單一的通路接口,外部不需要了解後端Pod如何運作,提供了一套簡化的服務代理和發現機制。

Volume代表一塊容器可以通路和存儲資訊的空間,對于應用來說,volume是一個本地的檔案系統。實際上,除了本地存儲,Ceph、Gluster、Elastic Block Storage和很多其它後端存儲都可以作為volume。

kubernetes學習記錄(1)——kubernetes初了解

Namespace是Kubernetes内的分組機制。Service,pod,replication controller和volume可以很容易地和namespace配合工作。namespace為叢集中的元件間提供了一定程度的隔離。

kubernetes學習記錄(1)——kubernetes初了解

最後放一張Kubernetes的架構圖。摘自《雲計算架構技術與實踐第2版》第五章。

kubernetes學習記錄(1)——kubernetes初了解

目前打算看的書有兩本,一本為《Kubernetes實戰》,一本為《Kubernetes權威指南-從Docker到Kubernetes實踐全接觸》。