部署壹個三實例 kube-controller-manager 的集群,啟動後將通過競爭選舉機制產生壹個 leader 節點,其它節點為阻塞狀態。當 leader 節點不可用時,阻塞的節點將再次進行選舉產生新的 leader 節點,從而保證服務的可用性。
部署策略:
部署軟件規劃
創建證書簽名請求:
創建 kube-controller-manager憑證與私鑰:
結果將產生以下幾個文件:
kube-controller-manager 使用 kubeconfig 文件訪問 apiserver,該文件提供了 apiserver 地址、 CA 證書和 kube-controller-manager 證書
先確定apiserver對外提供服務的地址
請使用 kube-apiserver 文檔中生成的service-account證書, 其中kube-apiserver使用公鑰, kube-controller-manager使用私鑰
kube-controller-manager can be started and stopped as follows:
查看進程是否正常
查看權限:
ClusteRole system:kube-controller-manager 的權限很小,只能創建 secret、serviceaccount 等資源對象,各 controller 的權限分散到 ClusterRole system:controller:XXX 中。
當在 kube-controller-manager 的啟動參數中添加 --use-service-account-credentials=true 參數,這樣 main controller 會為各 controller 創建對應的 ServiceAccount XXX-controller。內置的 ClusterRoleBinding system:controller:XXX 將賦予各 XXX-controller ServiceAccount 對應的 ClusterRole system:controller:XXX 權限。
查看其中deployment controller
kube-controller-manager,k8s的大腦,大部分控制器所在,大管家,配置包括:
開啟選舉。
利用etcd的強壹致性,可以用來組件的選主,kube-controller-manager就是利用這個特性實現的高可用。
高可用條件: kube-controller-manager數量大於等於2即可。
驅逐超時,默認5分鐘,配置為3分鐘,從controller感知到節點掛了開始計時。
壹級驅逐速率,這裏兩個0.1相當於每個節點每10秒鐘驅逐壹個Pod。
當開啟多可用區時,壹級驅逐速率只有在zone健康的時候生效;當非多可用區的時候,zone代表整個集群。
二級驅逐速率,這裏兩個0.1相當於每個節點每10秒鐘驅逐壹個Pod。
設置壹個"大"集群的閾值,多大為大集群,默認為50,當集群節點數小於該值的時候,二級驅逐速率就是0,不驅逐!
Zone被認為不健康的條件,大於55%的節點故障(NodeReady的節點數大於等於3).
舉例:
比如現在ZoneB有20個節點,那麽當20 * 0.55 = 11個以上節點掛了後,那麽這個Zone就被認為不健康了,此時壹級驅逐速率也就不生效了;由於總結點數大於1,那麽二級速率有效,所以整個集群會以10s/pod/node進行驅逐。
Q:
A:
Q:
A:
需要在啟動命令中添加如下配置