kubernetes 整個架構分爲master節點和node節點,其中master節點負責pod的調度,pod的replication的數量node,endpoint以及服務帳戶以及令牌的管理等等;而node節點主要負責container建立,服務的代理以及其餘相關應用。前端
Master 組件提供的集羣控制。Master 組件對集羣作出全局性決策(例如:調度),以及檢測和響應集羣事件(副本控制器的replicas字段不知足時,啓動新的副本)。node
Master 組件能夠在集羣中的任何節點上運行。然而,爲了簡單起見,設置腳本一般會啓動同一個虛擬機上全部 Master 組件,而且不會在此虛擬機上運行用戶容器(高可用)docker
Master節點包括:kube-apiserver,kube-control-manager,kube-schduler,etcd,相關插件應用以及底層雲控制器,其中:shell
kube-apiserver對外暴露了Kubernetes API。它是的 Kubernetes 前端控制層。它被設計爲水平擴展,即經過部署更多實例來縮放數據庫
etcd主要爲kubernetes的後端數據庫,就與k/v方式存儲,全部的k8s集羣數據都存放在此處。後端
kube-controller-manager運行控制器,它們是處理集羣中常規任務的後臺線程。邏輯上,每一個控制器是一個單獨的進程,但爲了下降複雜性,它們都被編譯成獨立的可執行文件,並在單個進程中運行。這些控制器包括:api
節點控制器: 當節點移除時,負責注意和響應。 副本控制器: 負責維護系統中每一個副本控制器對象正確數量的 Pod。 端點控制器: 填充 端點(Endpoints) 對象(即鏈接 Services & Pods)。 服務賬戶和令牌控制器: 爲新的命名空間建立默認賬戶和 API 訪問令牌
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 的雲控制器管理器相關聯。具備雲提供商依賴關係:架構
節點控制器: 用於檢查雲提供商以肯定節點是否在雲中中止響應後被刪除 路由控制器: 用於在底層雲基礎架構中設置路由 服務控制器: 用於建立,更新和刪除雲提供商負載平衡器 數據卷控制器: 用於建立,附加和裝載卷,並與雲提供商進行交互以協調卷
kube-scheduler監視沒有分配節點的新建立的 Pod,選擇一個節點供他們運行,即pod的調度
插件是實現集羣功能的 Pod 和 Service。 Pods 能夠經過 Deployments,ReplicationControllers 管理。插件對象自己是受命名空間限制的,被建立於 kube-system 命名空間。Addon 管理器用於建立和維護附加資源。
主要包括如下插件:
爲 Kubernetes 服務提供DNS記錄,Kubernetes 啓動的容器自動將 DNS 服務器包含在 DNS 搜索中。
爲kubernetes集羣提供一個狀態概覽的UI界面。
3.容器監控
容器資源監控將關於容器的一些常見的時間序列度量值保存到一個集中的數據庫中,並提供用於瀏覽這些數據的界面
4.日誌採集
負責將容器的日誌數據保存到一個集中的日誌存儲中,該存儲可以提供搜索和瀏覽接口。
node節點組件在每一個節點上運行,維護運行的 Pod 並提供 Kubernetes 運行時環境。其中包括如下組件:
kubelet是主要的節點代理,它監測已分配給其節點的 Pod(經過 apiserver 或經過本地配置文件),提供以下功能:掛載 Pod 所須要的數據卷(Volume)。
1.下載 Pod 的 secrets。 2.經過 Docker 運行(或經過 rkt)運行 Pod 的容器。 3.週期性的對容器生命週期進行探測。 4.經過建立鏡像Pod(Mirror Pod) 將 Pod 的狀態報告回系統的其他部分。 5.將節點的狀態報告回系統的其他部分
kube-proxy經過維護主機上的網絡規則並執行鏈接轉發,實現了Kubernetes服務代理
運行容器的cri,好比:container 或者rkt
supervisord 是一個輕量級的進程監控系統,能夠用來保證 kubelet 和 docker 運行。
fluentd 是一個守護進程,它有助於提供集羣層面日誌 集羣層面的日誌
全局組件主要指的是CNI,即容器網絡,它貫穿整個kubernetes集羣,無論master節點應用仍是node節點應用都必須同處於一個網絡,從而保證整個服務正常訪問!
以上就是整個k8s節點相關的功能介紹,具體介紹請參考kubernetes官方文檔!