Kubernetes 核心組件

本文介紹了Kubernetes集群所需的各種二進制組件。

Master 組件

Master組件提供集群的管理控制中心。Master 組件提供全局決策(比如調度),以及檢測(比如健康檢查)和響應集群時間(比如副本不夠時,的調用replication controller啟動新的pod
Master組件可以在集群中任何節(jié)點上運行。但是為了簡單起見,通常在一臺VM/機器上啟動所有Master組件,并且不會在此VM/機器上運行用戶容器。請參考 構建高可用群集以來構建multi-master-VM。

kube-apiserver

kube-apiserver用于暴露Kubernetes API。任何的資源請求/調用操作都是通過kube-apiserver提供的接口進行。請參閱構建高可用群集。
kube-apiserver 是 Kubernetes 最重要的核心組件之一,主要提供以下的功能

  • 提供集群管理的 REST API 接口,包括認證授權、數據校驗以及集群狀態(tài)變更等
  • 提供其他模塊之間的數據交互和通信的樞紐(其他模塊通過 API Server 查詢或修改數據,只有 API Server 才直接操作 etcd)


    kube-apiserver.png

kube-scheduler

kube-scheduler 監(jiān)視新創(chuàng)建沒有分配到Node的Pod,為Pod選擇一個Node。
調度器需要充分考慮諸多的因素:

  • 公平調度
  • 資源高效利用
  • QoS
  • affinity 和 anti-affinity
  • 數據本地化(data locality)
  • 內部負載干擾(inter-workload interference)
  • deadlines

kube-controller-manager

kube-controller-manager運行管理控制器,它們是集群中處理常規(guī)任務的后臺線程。邏輯上,每個控制器是一個單獨的進程,但為了降低復雜性,它們都被編譯成單個二進制文件,并在單個進程中運行。
kube-controller-manager 由一系列的控制器組成:

  • Replication Controller
  • Node Controller
  • CronJob Controller
  • Daemon Controller
  • Deployment Controller
  • Endpoint Controller
  • Garbage Collector
  • Namespace Controller
  • Job Controller
  • Pod AutoScaler
  • RelicaSet
  • Service Controller
  • ServiceAccount Controller
  • StatefulSet Controller
  • Volume Controller
  • Resource quota Controller

cloud-controller-manager

云控制器管理器負責與底層云提供商的平臺交互。云控制器管理器是Kubernetes版本1.6中引入的.我們大部分情況都是在自己公司的內網部署kubernetes集群.所以不做過多的描述.
云控制器管理器僅運行云提供商特定的(controller loops)控制器循環(huán)??梢酝ㄟ^將--cloud-provider flag設置為external啟動kube-controller-manager ,來禁用控制器循環(huán)。
cloud-controller-manager 具體功能:

  • 節(jié)點(Node)控制器
  • 路由(Route)控制器
  • Service控制器
  • 卷(Volume)控制器

etcd

etcd是Kubernetes提供默認的存儲系統(tǒng),保存所有集群數據,使用時需要為etcd數據提供備份計劃。需要進一步深入了解, 參考 etcd documentation.

Node組件

節(jié)點組件運行在Node,提供Kubernetes運行時環(huán)境,以及維護Pod。

kubelet

在集群中的每個Node上運行的代理。 它確保容器在pod中運行。
kubelet提供的一系列PodSpecs集合規(guī)范,并確保這些PodSpecs中描述的容器運行正常。 kubelet不管理非由Kubernetes創(chuàng)建的容器.
kubelet是主要的節(jié)點代理,它會監(jiān)視已分配給節(jié)點的pod,具體功能:

  • 安裝Pod所需的volume。
  • 下載Pod的Secrets。
  • Pod中運行的 docker(或experimentally,rkt)容器。
  • 定期執(zhí)行容器健康檢查。
  • Reports the status of the pod back to the rest of the system, by creating a mirror pod if necessary.
  • Reports the status of the node back to the rest of the system.


    kubelet.png

kube-proxy

kube-proxy通過在主機上維護網絡規(guī)則并執(zhí)行連接轉發(fā)來實現Kubernetes服務抽象。

kube-proxy.png

容器運行時

容器運行時是負責運行容器的軟件。Kubernetes 支持多種容器運行時: Docker, containerd, cri-o, rktlet 以及任何實現了Kubernetes CRI (Container Runtime Interface)的容器運行時.

插件 Addons

插件(Addon)是實現集群pod和Services功能的 。Pod由Deployments,ReplicationController等進行管理。Namespace 插件對象是在kube-system Namespace中創(chuàng)建。
下面有一些常用的插件描述, 有關可用插件的擴展列表,請參閱Addons.

DNS

雖然不嚴格要求使用插件,但Kubernetes集群都應該具有 cluster DNS
群集 DNS是一個DNS服務器,能夠為 Kubernetes services提供 DNS記錄。
由Kubernetes啟動的容器自動將這個DNS服務器包含在他們的DNS searches中。

Web UI (Dashboard)

Dashboard 是Kubernetes集群的基于Web的通用UI。 它允許用戶管理和解決群集中運行的應用程序以及群集本身。

容器資源監(jiān)測

Container Resource Monitoring記錄基于時間序列的有關資源監(jiān)控,數據會存儲于一個時間序列數據庫,并提供瀏覽該數據的UI。

cadvisor.png

Cluster-level Logging

Cluster-level logging 負責保存容器日志,搜索/查看日志。

logging-with-node-agent.png
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容