1. 程式人生 > >Kubernetes 基本概念和術語

Kubernetes 基本概念和術語

Kubernetes 基本概念和術語

    Kubernetes 中大部分概念如 Node、Pod、Replication Controller、 Service 等都可以看做一種 "資源物件",幾乎所有的資源物件都可以通過 Kubernetes提供的 kubectl 工具(或者API遠端呼叫)執行增、刪、查、改等操作並將其儲存在etcd中持久化儲存。從這個角度來看,Kubernetes其實是一個高度自動化的資源控制系統,它通過追蹤對比etcd庫裡儲存的"資源期望狀態"與當前環境中"實際資源狀態"的差異來實現自動控制和自動糾錯的高階功能。

    在介紹資源物件之前,我們先了解一下Kubernetes叢集的兩種管理角色: Master 和 Node。

1、Master

    Kubernetes裡的 Master指的是叢集控制節點,每個 Kubernetes叢集裡需要有一個 Master節點來負責整個叢集的管理和控制,基本上 Kubernetes的所有控制命令都發給它,它來負責具體的執行過程,我們後面執行的所有命令基本都是在 Master節點上執行的。 Master節點通常會佔據一個獨立的伺服器(高可用部署建議用3臺伺服器),其主要原因是它太重要了,是整個叢集的“首腦”,如果宕機或者不可用,那麼對叢集內容器應用的管理都將失效。

Master節點上執行著以下一組關鍵程序。

  • Kubernetes API Server(kube-apiserver)
    提供了 Http Rest介面的關鍵服務程序,是Kubernetes裡所有資源的增、刪、改、查等操作的唯一入口,也是叢集控制的入口程序。
  • Kubernetes Controller Manager( kube-controller-manager)Kubernetes裡所有資源物件的自動化控制中心,可以理解為資源物件的“大總管”。
  • Kubernetes Scheduler( kube-scheduler)負責資源排程(Pod排程)的程序,相當於公交公司的“排程室”。

    另外,在 Master節點上還需要啟動一個etcd服務,因為 Kubernetes裡的所有資源物件的資料全部是儲存在etcd中的。

2、Node

     除了 Master, Kubernetes叢集中的其他機器被稱為Node節點,在較早的版本中也被稱為Minion。與 Master一樣,Node 節點可以是一臺物理主機,也可以是一臺虛擬機器。Node節點才是 Kubernetes叢集中的工作負載節點,每個Node都會被 Master分配一些工作負載( Docker容器),當某個Node宕機時,其上的工作負載會被 Master自動轉移到其他節點上去。

每個Node節點上都執行著以下一組關鍵程序。

  • kubelet負責Pod對應的容器的建立、啟停等任務,同時與 Master節點密切協作,實現叢集管理的基本功能。
  • kube-proxy實現 Kubernetes Service 的通訊與負載均衡機制的重要元件。
  • Docker Engine( docker)Docker引擎,負責本機的容器建立和管理工作。

    Node節點可以在執行期間動態增加到 Kubernetes叢集中,前提是這個節點上已經正確安裝、配置和啟動了上述關鍵程序,在預設情況下 kubelet會向 Master註冊自己,這也是 Kubernete推薦的Node管理方式。一旦Node被納入叢集管理範圍, kubelet程序就會定時向 Master節彙報自身的情報,例如作業系統、 Docker版本、機器的CPU和記憶體情況,以及當前有哪些Pod在執行等,這樣 Master可以獲知每個Node的資源使用情況,並實現高效均衡的資源排程策略。而某個Node超過指定時間不上報資訊時,會被 Master判定為“失聯”,Node的狀態被標記不可用( Not Ready),隨後Master會觸發“工作負載大轉移”的自動流程。

    我們可以執行下述命令檢視叢集中有多少個Node:

[[email protected] ~]# kubectl get nodes 
NAME        STATUS    AGE
127.0.0.1   Ready     6h
[[email protected] ~]# 

    然後,通過kubectl describe node < node_name > 來檢視某個Node的詳細資訊。