概念部分幫助你瞭解k8s系統各個元件,叢集資源的抽象;讓你深入瞭解k8s是如何工作的.
你需要通過k8s api物件來描述(定義)叢集狀態: 比如執行哪些app,執行哪些容器,使用哪個映象,副本數量,網路磁碟資源等等. 都需要通過k8s api(通常是kubectl命令列工具)建立物件來設定所需的狀態. 你也可以直接使用k8s api與叢集互動設定修改期望的狀態.
一旦設定了所需的狀態, k8s控制皮膚(master的統稱)會通過pod生命週期事件生成器(Pod Lifecycle Event Generator (PLEG))使叢集當前狀態與所需狀態匹配靠攏. 為此,k8s會自動執行各種任務,例如啟動或者重啟動容器,縮放app副本集等待. k8s控制皮膚在叢集上由幾個主要程式組成:
k8smaster
節點是在叢集中的單個節點上執行的三個程式的集合,該節點被指定為主節點。這些程式是:kube-apiserver
、kube-controller-manager
和kube-scheduler
.
非主節點必須執行兩個程式:
- kubelet, 與k8s
master
進行通訊 - kube-proxy, 每個節點上的網路代理
k8s包含許多表示系統資源狀態的抽象: 已部署的容器app及工作負責情況,網路磁碟資源,叢集當前狀態資訊等等. 這些抽象由k8s中的Objects表示.有關更多詳細資訊,請參閱Kubernetes Objects overview.
基本的kubernetes物件包括:
此外,k8s還包含更高階的抽象稱之為控制器
, 而控制器建立在基本物件的基礎上,以此來提供額外功能主要包塊:
k8s控制皮膚管理叢集各個部分, 比如k8s api程式和kubelet程式規定如何通訊, 控制皮膚維護叢集系統中所有k8s物件的記錄;且一直監控叢集資源物件狀態;在任何時間,只要對資源物件進行修改,控制皮膚會做出相對應動作,使叢集系統中資源物件與給定提供的狀態匹配靠攏.
例如: 通過k8s api來部署一個nginx靜態伺服器(我們定義了資源物件狀態). k8s控制平面記錄物件的建立,且通過生命週期排程到叢集上執行相關的指令, 從而使叢集的實際狀態與所需狀態進行匹配靠攏.
k8s Master
k8s Master負責維護叢集的所需狀態。當您與kubernetes互動時,例如通過使用kubectl
命令列介面,您就在與叢集的kubernetes主伺服器通訊。
“master”是指管理叢集狀態的程式集合。通常,所有這些程式都在叢集中的單個節點上執行,該節點也稱為主節點。master也可以做多個達到冗餘高可用
kubernetes Node
叢集中的Node可以是虛擬機器,物理主機,雲主機等,我們很少直接跟k8s node直接互動,而是由master來管理
本作品採用《CC 協議》,轉載必須註明作者和本文連結