標籤:load nio 擷取 核心 即時 file 應對 部落格 sch
本文CSDN部落格地址:http://blog.csdn.net/huwh_/article/details/71308171
一、Kubernetes的總架構圖二、Kubernetes各個組件介紹 (一)kube-master[控制節點]
Kubecfg將特定的請求,比如建立Pod,發送給Kubernetes Client。
Kubernetes Client將請求發送給API server。
API Server根據請求的類型,比如建立Pod時storage類型是pods,然後依此選擇何種REST Storage API對請求作出處理。
REST Storage API對的請求作相應的處理。
將處理的結果存入高可用KVStore for Redis系統Etcd中。
在API Server響應Kubecfg的請求後,Scheduler會根據Kubernetes Client擷取叢集中運行Pod及Minion/Node資訊。
依據從Kubernetes Client擷取的資訊,Scheduler將未分發的Pod分發到可用的Minion/Node節點上。
1、API Server[資源操作入口]
提供了資來源物件的唯一操作入口,其他所有組件都必須通過它提供的API來操作資源資料,只有API Server與儲存通訊,其他模組通過API Server訪問叢集狀態。
第一,是為了保證叢集狀態訪問的安全。
第二,是為了隔離叢集狀態訪問的方式和後端儲存實現的方式:API Server是狀態訪問的方式,不會因為後端儲存技術etcd的改變而改變。
作為kubernetes系統的入口,封裝了核心對象的增刪改查操作,以RESTFul介面方式提供給外部客戶和內部組件調用。對相關的資源資料“全量查詢”+“變化監聽”,即時完成相關的業務功能。
更多API Server資訊請參考:Kubernetes核心原理(一)之API Server2、Controller Manager[內部管理控制中心]
實現叢集故障檢測和恢複的自動化工作,負責執行各種控制器,主要有:
更多Controller Manager資訊請參考:Kubernetes核心原理(二)之Controller Manager3、Scheduler[叢集分發調度器]
Scheduler收集和分析當前Kubernetes叢集中所有Minion節點的資源(記憶體、CPU)負載情況,然後依此分發建立的Pod到Kubernetes叢集中可用的節點。
即時監測Kubernetes叢集中未分發和已分發的所有啟動並執行Pod。
Scheduler也監測Minion節點資訊,由於會頻繁尋找Minion節點,Scheduler會緩衝一份最新的資訊在本地。
最後,Scheduler在分發Pod到指定的Minion節點後,會把Pod相關的資訊Binding寫回API Server。
更多Scheduler資訊請參考:Kubernetes核心原理(三)之Scheduler(二)kube-node[服務節點]
1、Kubelet[節點上的Pod管家]
負責Node節點上pod的建立、修改、監控、刪除等全生命週期的管理
定時上報本Node的狀態資訊給API Server。
kubelet是Master API Server和Minion之間的橋樑,接收Master API Server分配給它的commands和work,與持久性KVStore for Redisetcd、file、server和http進行互動,讀取配置資訊。
具體的工作如下:
設定容器的環境變數、給容器綁定Volume、給容器綁定Port、根據指定的Pod運行一個單一容器、給指定的Pod建立network 容器。
同步Pod的狀態、同步Pod的狀態、從cAdvisor擷取Container info、 pod info、 root info、 machine info。
在容器中運行命令、殺死容器、刪除Pod的所有容器。
2、Proxy[負載平衡、路由轉寄]
Proxy是為瞭解決外部網路能夠訪問跨機器叢集中容器提供的應用服務而設計的,運行在每個Node上。Proxy提供TCP/UDP sockets的proxy,每建立一種Service,Proxy主要從etcd擷取Services和Endpoints的配置資訊(也可以從file擷取),然後根據配置資訊在Minion上啟動一個Proxy的進程並監聽相應的服務連接埠,當外部請求發生時,Proxy會根據Load Balancer將請求分發到後端正確的容器處理。
Proxy不但解決了同一主宿機相同服務連接埠衝突的問題,還提供了Service轉寄服務連接埠對外提供服務的能力,Proxy後端使用了隨機、輪循負載平衡演算法。
3、kubectl(kubelet client)[叢集管理命令列工具集]
通過用戶端的kubectl命令集操作,API Server響應對應的命令結果,從而達到對kubernetes叢集的管理。
參考文章:
https://yq.aliyun.com/articles/47308?spm=5176.100240.searchblog.19.jF7FFa
Kubernetes總架構圖