Kubernetes核心原理簡單總結(一)
1、kubernetes APIserver
1)提供了叢集管理的API介面
2)是叢集內各個功能模組之間資料互動和通訊的中心樞紐
3)擁有完備的叢集安全機制
API通過 apiserver程序提供服務,該程序在master節點上。該程序包括兩個埠:本地埠,預設是8080埠和安全埠,預設6443埠;叢集內的功能模組通過API server將資訊存入Etcd,其他模組通過API server讀取這些資訊,從而實現模組間的通訊。
2、Controller Manager(控制器)
Controller Manager是叢集內部的控制管理中心,負責叢集內Node、pod副本、服務端點、名稱空間、服務賬號、資源定額等的管理並執行自動化修復流程。
內部包含:
1)Replication Controller:作用是確保任何時候叢集中一個資源物件(RC)所關聯的Pod都保持一定數量的Pod副本處於正常執行狀態。
2)Node controller:負責發現、管理和監控叢集中的各個 Node節點。
3)ResourceQuota Controller:提供資源配額管理;
4)Namespace Controller:定時讀取Namespace資訊,進行修改刪除;
5)ServiceAccount Controller和Tocken Controller:與安全相關的控制器;
6)Service Controller:監控Service的變化。
7)Endpoints Controller:通過Store來快取Service和pod資訊,監控Service和Pod的變化。
3、Kubernetes Scheduler(排程模組)
Kubernetes scheduler 負責Pod排程的重要功能模組,負責接收Controller Mannager排程的pod (建立的新Pod)按照特定的排程演算法策略繫結的叢集中合適的Node上,並將繫結資訊寫入Etcd中。
預設的排程流程:
1)預選排程過程,遍歷所有的Node節點,篩選出符合要求的候選節點(內建了多種篩選策略);
2)確定最優節點,在第一步的基礎上採用優先策略計算每個候選節點的積分,積分高的勝出。
4、Kubelet
該程序處理Master節點上下發到本節點的任務,管理Pod及pod中的容器。每個Kubelet都會在API server上註冊節點自身的資訊,定期向MAster節點彙報節點資源的使用情況。Node節點上的Kubelet通過API-server監聽到Kubernetes Scheduler產生的Pod繫結事件,然後獲取pod清單,下載映象,並啟動容器。
5、Kube-proxy(代理)
Kube-proxy充當kubernetes中Service的負載均衡器和服務代理的角色。service是一組pod的服務抽象,相當於一組pod的LB,負責將請求分發給對應的pod。service會為這個LB提供一個IP,一般稱為cluster IP。kube-proxy的作用主要是負責service的實現,具體來說,就是實現了內部從pod到service和外部的從node port向service的訪問。