1. 程式人生 > >淺談kubernetes:master節點和node節點

淺談kubernetes:master節點和node節點

探測 pre 記錄 是否 extern 啟動 運行時 刪除 參考

kubernetes 整個架構分為master節點和node節點,其中master節點負責pod的調度,pod的replication的數量node,endpoint以及服務賬戶以及令牌的管理等等;而node節點主要負責container創建,服務的代理以及其他相關應用。

Master節點


Master 組件提供的集群控制。Master 組件對集群做出全局性決策(例如:調度),以及檢測和響應集群事件(副本控制器的replicas字段不滿足時,啟動新的副本)。

Master 組件可以在集群中的任何節點上運行。然而,為了簡單起見,設置腳本通常會啟動同一個虛擬機上所有 Master 組件,並且不會在此虛擬機上運行用戶容器(高可用)

Master節點包括:kube-apiserver,kube-control-manager,kube-schduler,etcd,相關插件應用以及底層雲控制器,其中:

1. kube-apiserver

kube-apiserver對外暴露了Kubernetes API。它是的 Kubernetes 前端控制層。它被設計為水平擴展,即通過部署更多實例來縮放

2. etcd數據庫

etcd主要為kubernetes的後端數據庫,就與k/v方式存儲,所有的k8s集群數據都存放在此處。

3. kube-controller-manager

kube-controller-manager運行控制器,它們是處理集群中常規任務的後臺線程。邏輯上,每個控制器是一個單獨的進程,但為了降低復雜性,它們都被編譯成獨立的可執行文件,並在單個進程中運行。這些控制器包括:

節點控制器: 當節點移除時,負責註意和響應。

副本控制器: 負責維護系統中每個副本控制器對象正確數量的 Pod。

端點控制器: 填充 端點(Endpoints) 對象(即連接 Services & Pods)。

服務帳戶和令牌控制器: 為新的命名空間創建默認帳戶和 API 訪問令牌
4. 雲控制器管理器-(cloud-controller-manager)

cloud-controller-manager是用於與底層雲提供商交互的控制器。雲控制器管理器可執行組件是 Kubernetes v1.6 版本中引入的 Alpha 功能。

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

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

節點控制器: 用於檢查雲提供商以確定節點是否在雲中停止響應後被刪除

路由控制器: 用於在底層雲基礎架構中設置路由

服務控制器: 用於創建,更新和刪除雲提供商負載平衡器

數據卷控制器: 用於創建,附加和裝載卷,並與雲提供商進行交互以協調卷
5. kube-scheduler

kube-scheduler監視沒有分配節點的新創建的 Pod,選擇一個節點供他們運行,即pod的調度

6. 插件(addons)

插件是實現集群功能的 Pod 和 Service。 Pods 可以通過 Deployments,ReplicationControllers 管理。插件對象本身是受命名空間限制的,被創建於 kube-system 命名空間。Addon 管理器用於創建和維護附加資源。

主要包括以下插件:

  1. DNS域名註冊服務

為 Kubernetes 服務提供DNS記錄,Kubernetes 啟動的容器自動將 DNS 服務器包含在 DNS 搜索中。

  1. dashboard用戶界面

為kubernetes集群提供一個狀態概覽的UI界面。

3.容器監控

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

4.日誌采集

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

node節點


node節點組件在每個節點上運行,維護運行的 Pod 並提供 Kubernetes 運行時環境。其中包括以下組件:

1. kubelet

kubelet是主要的節點代理,它監測已分配給其節點的 Pod(通過 apiserver 或通過本地配置文件),提供如下功能:掛載 Pod 所需要的數據卷(Volume)。

1.下載 Pod 的 secrets。

2.通過 Docker 運行(或通過 rkt)運行 Pod 的容器。

3.周期性的對容器生命周期進行探測。

4.通過創建鏡像Pod(Mirror Pod) 將 Pod 的狀態報告回系統的其余部分。

5.將節點的狀態報告回系統的其余部分
2. kube-proxy

kube-proxy通過維護主機上的網絡規則並執行連接轉發,實現了Kubernetes服務代理

3. container runtime interface

運行容器的cri,比如:container 或者rkt

4. supervisord

supervisord 是一個輕量級的進程監控系統,可以用來保證 kubelet 和 docker 運行。

5. Fluentd

fluentd 是一個守護進程,它有助於提供集群層面日誌 集群層面的日誌

全局組件


全局組件主要指的是CNI,即容器網絡,它貫穿整個kubernetes集群,不管master節點應用還是node節點應用都必須同處於一個網絡,從而保證整個服務正常訪問!

以上就是整個k8s節點相關的功能介紹,具體介紹請參考kubernetes官方文檔!

淺談kubernetes:master節點和node節點