k8s基礎知識-1、基礎組件


 

 

 

控制平面組件(Control Plane Components)

控制平面的組件對集群做出全局決策(比如調度),以及檢測和響應集群事件(例如,當不滿足部署的 replicas 字段時,啟動新的 pod)。

控制平面組件可以在集群中的任何節點上運行。然而,為了簡單起見,設置腳本通常會在同一個計算機上啟動所有控制平面組件,並且不會在此計算機上運行用戶容器。請參閱構建高可用性集群中對於多主機 VM 的設置示例。

kube-apiserver

主節點上負責提供 Kubernetes API 服務的組件;它是 Kubernetes 控制面的前端。

kube-apiserver 在設計上考慮了水平擴縮的需要。 換言之,通過部署多個實例可以實現擴縮。 參見構造高可用集群

etcd

etcd 是兼具一致性和高可用性的鍵值數據庫,可以作為保存 Kubernetes 所有集群數據的后台數據庫。

您的 Kubernetes 集群的 etcd 數據庫通常需要有個備份計划。要了解 etcd 更深層次的信息,請參考 etcd 文檔

kube-scheduler

主節點上的組件,該組件監視那些新創建的未指定運行節點的 Pod,並選擇節點讓 Pod 在上面運行。

調度決策考慮的因素包括單個 Pod 和 Pod 集合的資源需求、硬件/軟件/策略約束、親和性和反親和性規范、數據位置、工作負載間的干擾和最后時限。

kube-controller-manager

在主節點上運行控制器的組件。

從邏輯上講,每個控制器都是一個單獨的進程,但是為了降低復雜性,它們都被編譯到同一個可執行文件,並在一個進程中運行。

這些控制器包括:

  • 節點控制器(Node Controller): 負責在節點出現故障時進行通知和響應。
  • 副本控制器(Replication Controller): 負責為系統中的每個副本控制器對象維護正確數量的 Pod。
  • 端點控制器(Endpoints Controller): 填充端點(Endpoints)對象(即加入 Service 與 Pod)。
  • 服務帳戶和令牌控制器(Service Account & Token Controllers): 為新的命名空間創建默認帳戶和 API 訪問令牌.

雲控制器管理器-(cloud-controller-manager)

cloud-controller-manager 運行與基礎雲提供商交互的控制器。cloud-controller-manager 二進制文件是 Kubernetes 1.6 版本中引入的 alpha 功能。

cloud-controller-manager 僅運行雲提供商特定的控制器循環。您必須在 kube-controller-manager 中禁用這些控制器循環,您可以通過在啟動 kube-controller-manager 時將 --cloud-provider 參數設置為 external 來禁用控制器循環。

cloud-controller-manager 允許雲供應商的代碼和 Kubernetes 代碼彼此獨立地發展。在以前的版本中,核心的 Kubernetes 代碼依賴於特定雲提供商的代碼來實現功能。在將來的版本中,雲供應商專有的代碼應由雲供應商自己維護,並與運行 Kubernetes 的雲控制器管理器相關聯。

以下控制器具有雲提供商依賴性:

  • 節點控制器(Node Controller): 用於檢查雲提供商以確定節點是否在雲中停止響應后被刪除
  • 路由控制器(Route Controller): 用於在底層雲基礎架構中設置路由
  • 服務控制器(Service Controller): 用於創建、更新和刪除雲提供商負載均衡器
  • 數據卷控制器(Volume Controller): 用於創建、附加和裝載卷、並與雲提供商進行交互以編排卷

Node 組件

節點組件在每個節點上運行,維護運行的 Pod 並提供 Kubernetes 運行環境。

kubelet

一個在集群中每個節點上運行的代理。它保證容器都運行在 Pod 中。

kubelet 接收一組通過各類機制提供給它的 PodSpecs,確保這些 PodSpecs 中描述的容器處於運行狀態且健康。kubelet 不會管理不是由 Kubernetes 創建的容器。

kube-proxy

kube-proxy 是集群中每個節點上運行的網絡代理,實現 Kubernetes Service 概念的一部分。

kube-proxy 維護節點上的網絡規則。這些網絡規則允許從集群內部或外部的網絡會話與 Pod 進行網絡通信。

如果操作系統提供了數據包過濾層並可用的話,kube-proxy會通過它來實現網絡規則。否則,kube-proxy 僅轉發流量本身。

容器運行環境(Container Runtime)

容器運行環境是負責運行容器的軟件。

Kubernetes 支持多個容器運行環境: Docker、 containerdcri-o、 rktlet 以及任何實現 Kubernetes CRI (容器運行環境接口)

 

插件(Addons)

插件使用 Kubernetes 資源 (DaemonSetDeployment等) 實現集群功能。因為這些提供集群級別的功能,所以插件的命名空間資源屬於 kube-system 命名空間。

所選的插件如下所述:有關可用插件的擴展列表,請參見插件 (Addons)

DNS

盡管並非嚴格要求其他附加組件,但所有示例都依賴集群 DNS,因此所有 Kubernetes 集群都應具有 DNS。

除了您環境中的其他 DNS 服務器之外,集群 DNS 還是一個 DNS 服務器,它為 Kubernetes 服務提供 DNS 記錄。

Cluster DNS 是一個 DNS 服務器,和您部署環境中的其他 DNS 服務器一起工作,為 Kubernetes 服務提供DNS記錄。

Kubernetes 啟動的容器自動將 DNS 服務器包含在 DNS 搜索中。

用戶界面(Dashboard)

Dashboard 是 Kubernetes 集群的通用基於 Web 的 UI。它使用戶可以管理集群中運行的應用程序以及集群本身並進行故障排除。

容器資源監控

容器資源監控將關於容器的一些常見的時間序列度量值保存到一個集中的數據庫中,並提供用於瀏覽這些數據的界面。

集群層面日志

集群層面日志 機制負責將容器的日志數據保存到一個集中的日志存儲中,該存儲能夠提供搜索和瀏覽接口。

 

A Kubernetes cluster consists of 集群由一組被稱作節點的機器組成。這些節點上運行 Kubernetes 所管理的容器化應用。集群具有至少一個工作節點和至少一個主節點。

 

工作節點托管作為應用程序組件的 Pod 。主節點管理集群中的工作節點和 Pod 。多個主節點用於為集群提供故障轉移和高可用性。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM