《蹲坑學kubernetes》之9-5:kube-controller-manager原理詳解

Controller Manager由kube-controller-manager和cloud-controller-manager組成,是Kubernetes的大腦,它通過apiserver監控整個集群的狀態,並確保集群處於預期的工作狀態。

一、kube-controller-manager的功能

1、高可用

在啟動時設置--leader-elect=true 後,controller manager會使用多節點選主的方式選擇主節點。只有主節點才會調用 StartControllers() 啟動所有控制器,而其他從節點則僅執行選主算法。

多節點選主的實現方法見leaderelection.go。它實現了兩種資源鎖(Endpoint 或 ConfigMap,kube-controller-manager和cloud-controller-manager都使用 Endpoint鎖),通過更新資源的Annotation(control-plane.alpha.kubernetes.io/leader)來確定主從關係。

2、高性能

從Kubernetes 1.7開始,所有需要監控資源變化情況的調用均推薦使用Informer。Informer提供了基於事件通知的只讀緩存機制,可以註冊資源變化的回調函數,並可以極大減少 API 的調用。

3、Node驅逐

Node控制器在節點異常後,會按照默認的速率(--node-eviction-rate=0.1,即每10秒一個節點的速率)進行 Node 的驅逐。Node 控制器按照 Zone 將節點劃分為不同的組,再跟進Zone的狀態進行速率調整:

Normal:所有節點都 Ready,默認速率驅逐。

PartialDisruption:即超過33% 的節點NotReady的狀態。當異常節點比例大於--unhealthy-zone-threshold=0.55 時開始減慢速率:

小集群(即節點數量小於--large-cluster-size-threshold=50):停止驅逐

大集群,減慢速率為--secondary-node-eviction-rate=0.01

FullDisruption:所有節點都NotReady,返回使用默認速率驅逐。但當所有 Zone都處在FullDisruption時,停止驅逐。

二、kube-controller-manage的組成

《蹲坑學kubernetes》之9-5:kube-controller-manager原理詳解

圖1:kube-controller-manage的組成

kube-controller-manager由一系列的控制器組成:

如下是必須啟動的控制器:

EndpointController

ReplicationController

PodGCController

ResourceQuotaController

NamespaceController

ServiceAccountController

GarbageCollectorController

DaemonSetController

JobController

DeploymentController

ReplicaSetController

HPAController

DisruptionController

StatefulSetController

CronJobController

CSRSigningController

CSRApprovingController

TTLController

如下是默認啟動的可選控制器,可通過選項設置是否開啟:

TokenController

NodeController

ServiceController

RouteController

PVBinderController

AttachDetachController

如下是默認禁止的可選控制器,可通過選項設置是否開啟:

BootstrapSignerController

TokenCleanerController


三、cloud-controller-manager的組成

cloud-controller-manager在Kubernetes啟用Cloud Provider的時候才需要,用來配合雲服務提供商的控制,也包括一系列的控制器,如

Node Controller

Route Controller

Service Controller

從v1.6開始,cloud provider已經經歷了幾次重大重構,以便在不修改Kubernetes核心代碼的同時構建自定義的雲服務商支持


分享到:


相關文章: