天天看點

kubernetes叢集架構解讀

1. kubernetes總架構圖

kubernetes叢集架構解讀

2. kubernetes 各元件介紹

2.1 Master 節點

Master是kubernetes的大腦,運作的Deamon 服務包括kube-apiserver、kube-scheduler、kube-contronller-

manager、etcd和pod網絡

kubernetes叢集架構解讀
2.1.1 各元件介紹
  • API Server(kube-apiserver)

API Server提供HTTP/HTTPS RESTful API,即Kubernetes API。API Server是Kubernetes Cluster的前端接

口,各種用戶端工具(CLI或UI)以及Kubernetes其他元件可以通過它管理Cluster的各種資源。

  • Scheduler(kube-scheduler)

Scheduler負責決定将Pod放在哪個Node上運作。Scheduler在排程時會充分考慮Cluster的拓撲結構,目前各個

節點的負載,以及應用對高可用、性能、資料親和性的需求。

  • Controller Manager(kube-controller-manager)

Controller Manager負責管理Cluster各種資源,保證資源處于預期的狀态。Controller Manager由多種Controller

組成,包括replication controller、endpoint controller、namespace controller、serviceaccounts controller等。

不同的controller管理不同的資源。例如,replication controller管理Deployment、StatefulSet、DaemonSet的生

命周期,namespace controller管理Namespace資源。

  • etcd

etcd負責儲存Kubernetes Cluster的配置資訊和各種資源的狀态資訊。當資料發生變化時,etcd會快速通知

Kubernetes相關元件。

  • Pod網絡

Pod要能夠相同通信,Kubernetes Cluster必須部署Pod網絡,flannel是其中一個可選方案。

2.1.2 master工作流程圖
kubernetes叢集架構解讀
  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節點上。

2.2 Node節點

Node節點屬于工作節點,是pod運作的地方。

kubernetes叢集架構解讀
2.2.1 各元件介紹
  1. kubelet 

node的agent,當scheduler去确定在某個node上運作pod後,會将pod的具體配置資訊發送給該節點的

kubelet, kubelet會根據遮羞資訊建立和運作容器,并向master報告運作狀态。

  1. kube-proxy

    每個node都會運作kube-proxy服務,外界通過service通路pod,kube-proxy負責将降通路service的TCP/UDP數

    據流轉發到後端的容器。如果有多個副本,kube-proxy會實作負載均衡。

    1. pod網絡
    pod能能夠互相通信,k8s叢集必須部署pod網絡,flannel是其中一個可以選擇的方案
2.2.2 kubectl 架構解讀
kubernetes叢集架構解讀

Kubelet[節點上的Pod管家]

負責Node節點上pod的建立、修改、監控、删除等全生命周期的管理

定時上報本Node的狀态資訊給API Server。

kubelet是Master API Server和Minion/Node之間的橋梁,接收Master API Server配置設定給它的commands和work,

通過kube-apiserver間接與Etcd叢集互動,讀取配置資訊。

具體的工作如下:

  1. 設定容器的環境變量、給容器綁定Volume、給容器綁定Port、根據指定的Pod運作一個單一容器、給指定的Pod建立network 容器。
  2. 同步Pod的狀态、同步Pod的狀态、從cAdvisor擷取container info、 pod info、 root info、 machine info。
  3. 在容器中運作指令、殺死容器、删除Pod的所有容器。

檢視叢集節點資訊

kubectl get nodes -o wide           
kubernetes叢集架構解讀

參考連結:

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

繼續閱讀