1. 程式人生 > >Kubernetes總架構圖

Kubernetes總架構圖

vol class 管家 結果 fcm data 客戶端 details 鍵值

本文CSDN博客地址:http://blog.csdn.net/huwh_/article/details/71308171

一、Kubernetes的總架構圖

技術分享

二、Kubernetes各個組件介紹

(一)kube-master[控制節點]

  • master的工作流程圖

技術分享

  1. Kubecfg將特定的請求,比如創建Pod,發送給Kubernetes Client。

  2. Kubernetes Client將請求發送給API server。

  3. API Server根據請求的類型,比如創建Pod時storage類型是pods,然後依此選擇何種REST Storage API對請求作出處理。

  4. REST Storage API對的請求作相應的處理。

  5. 將處理的結果存入高可用鍵值存儲系統Etcd中。

  6. 在API Server響應Kubecfg的請求後,Scheduler會根據Kubernetes Client獲取集群中運行Pod及Minion/Node信息。

  7. 依據從Kubernetes Client獲取的信息,Scheduler將未分發的Pod分發到可用的Minion/Node節點上。

1、API Server[資源操作入口]

  1. 提供了資源對象的唯一操作入口,其他所有組件都必須通過它提供的API來操作資源數據,只有API Server與存儲通信,其他模塊通過API Server訪問集群狀態。

    1. 第一,是為了保證集群狀態訪問的安全。

    2. 第二,是為了隔離集群狀態訪問的方式和後端存儲實現的方式:API Server是狀態訪問的方式,不會因為後端存儲技術etcd的改變而改變。

  2. 作為kubernetes系統的入口,封裝了核心對象的增刪改查操作,以RESTFul接口方式提供給外部客戶和內部組件調用。對相關的資源數據“全量查詢”+“變化監聽”,實時完成相關的業務功能。

更多API Server信息請參考:Kubernetes核心原理(一)之API Server

2、Controller Manager[內部管理控制中心]

  1. 實現集群故障檢測和恢復的自動化工作,負責執行各種控制器,主要有:

    • endpoint-controller:定期關聯service和pod(關聯信息由endpoint對象維護),保證service到pod的映射總是最新的。

    • replication-controller:定期關聯replicationController和pod,保證replicationController定義的復制數量與實際運行pod的數量總是一致的。

更多Controller Manager信息請參考:Kubernetes核心原理(二)之Controller Manager

3、Scheduler[集群分發調度器]

  1. Scheduler收集和分析當前Kubernetes集群中所有Minion節點的資源(內存、CPU)負載情況,然後依此分發新建的Pod到Kubernetes集群中可用的節點。

  2. 實時監測Kubernetes集群中未分發和已分發的所有運行的Pod。

  3. Scheduler也監測Minion節點信息,由於會頻繁查找Minion節點,Scheduler會緩存一份最新的信息在本地。

  4. 最後,Scheduler在分發Pod到指定的Minion節點後,會把Pod相關的信息Binding寫回API Server。

更多Scheduler信息請參考:Kubernetes核心原理(三)之Scheduler

(二)kube-node[服務節點]

  • kubelet結構圖

技術分享

1、Kubelet[節點上的Pod管家]

  1. 負責Node節點上pod的創建、修改、監控、刪除等全生命周期的管理

  2. 定時上報本Node的狀態信息給API Server。

  3. kubelet是Master API Server和Minion之間的橋梁,接收Master API Server分配給它的commands和work,與持久性鍵值存儲etcd、file、server和http進行交互,讀取配置信息。

  4. 具體的工作如下:

    1. 設置容器的環境變量、給容器綁定Volume、給容器綁定Port、根據指定的Pod運行一個單一容器、給指定的Pod創建network 容器。

    2. 同步Pod的狀態、同步Pod的狀態、從cAdvisor獲取Container info、 pod info、 root info、 machine info。

    3. 在容器中運行命令、殺死容器、刪除Pod的所有容器。

2、Proxy[負載均衡、路由轉發]

  1. Proxy是為了解決外部網絡能夠訪問跨機器集群中容器提供的應用服務而設計的,運行在每個Node上。Proxy提供TCP/UDP sockets的proxy,每創建一種Service,Proxy主要從etcd獲取Services和Endpoints的配置信息(也可以從file獲取),然後根據配置信息在Minion上啟動一個Proxy的進程並監聽相應的服務端口,當外部請求發生時,Proxy會根據Load Balancer將請求分發到後端正確的容器處理。

  2. Proxy不但解決了同一主宿機相同服務端口沖突的問題,還提供了Service轉發服務端口對外提供服務的能力,Proxy後端使用了隨機、輪循負載均衡算法。

3、kubectl(kubelet client)[集群管理命令行工具集]

  1. 通過客戶端的kubectl命令集操作,API Server響應對應的命令結果,從而達到對kubernetes集群的管理。

參考文章:

https://yq.aliyun.com/articles/47308?spm=5176.100240.searchblog.19.jF7FFa

Kubernetes總架構圖