天天看點

k8s重要概念

kubernetes架構圖

下圖為kubernetes的master架構圖

1. Cluster

cluster是計算、存儲和網絡資源的集合,kubernetes利用這些資源運作各種基于容器的應用。

2. Master

Master 是Cluster的大腦,它的主要職能就是負責排程,決定應用放在哪裡運作。master運作linux作業系統,可以是實體機或者虛拟機。為了實作高可用,可以運作多個Master。

3. Node

Node 的職責是運作容器應用。Node由Master管理,Node負責監控并彙報容器的狀态,同時根據Master的要求管理容器的生命周期。Node運作在linux系統上,可以是實體機或者虛拟機。

4. Pod

Pod是kubernetes的最小工作單元。每個pod可以包含一個或者多個容器。Pod中的容器會作為一個整體被Master排程到一個Node上運作。kubernetes 以Pod為最小機關進行排程、擴充、共享資源、管理生命周期;pod中的所有容器都共享一個網絡namespace,所有的容器可以共享存儲。

  • pod有兩種使用方式:
  1. 運作單一容器:

    one-container-per-Pod 是kubernetes最常見的模型,這種情況下,隻是将單個容器簡單封裝成pod。即使隻有一個容器,kubernetes管理的也是pod而不是直接管理容器。

  2. 運作多個容器:

    運作在同一個pod的的多個容器必須聯系緊密,而且直接共享資源。

5. Controller

kubernetes通常不會直接去建立pod,而是通過Controller去管理pod的,Controller中定義了Pod的部署特性,比如有幾個副本、什麼樣的Node上運作等。為了滿足不同的業務場景,kubernetes提供了多種Controller,包括Deployment、ReplicaSet、DeamonSet、StatefuleSet、Job等,我們逐一讨論。

  • Deployment :是最常用的的Controller,deployment可以管理pod的多個副本,并確定pod按照預期的狀态來運作。
  • ReplicaSet : 實作了pod的多副本管理。使用Deployment時會自動建立Replicaset。
  • DeamonSet: 用于每個Node最多隻能運作一個Pod副本的場景。
  • StatefuleSet:能夠保證Pod的每個副本在整個生命周期中名稱是不變的,而其它Controller是提供這個功能。當某個Pod發生故障需要删除并且重新啟動時,Pod的名稱會發生變化,同時StatefuleSet會保證副本按照固定的順序啟動、更新或者删除。
  • Job 用于運作就删除的應用,而其他Controller 中的pod通常是持續運作的。

6. Service

Deployment 可以部署多個副本,每個Pod都有自己的Ip,那麼外界如何通路這些副本呢?Kubernetes Service 定義了外界通路一組特定Pod的方式。Service 有自己的IP和端口,Service為pod提供了負載均衡。K8s運作容器Pod與通路容器Pod這兩項任務分别由Controller和Service執行。

7. Namespace

如果有多個使用者或者項目組共同使用k8s 叢集,如果将他們建立的Pod等資源分開呢,就是通過Namespace進行隔離。

繼續閱讀