Kubernetes排程器簡介
阿新 • • 發佈:2018-12-26
1.Replication Controller
用來控制kubernetes叢集中pods副本數。
常用模式
Rescheduling
保證副本數達到規定個數。
Scaling
彈性伸縮。
kubectl scale --replicas=3 replicationcontrollers frontend
Rolling Updates
滾動更新。
kubectl rolling-update fronted-v1 -f frontend-v2.yaml
首先建立一個副本數只有1個的RC,舊的RC副本數減少1,逐步增加新RC的副本數,減少舊RC的副本數,直至舊RC的副本數變成0,刪除舊RC。
2.Node Controller
負責發現、監控、管理叢集中的各個nodes。
3.ResouceQuota Controller
支援三個層次資源配額管理
容器級別:CPU和記憶體
Pod級別:一個pod內的所有資源
Namespace級別:Pod數量、RC數量、Service數量、ResourceQuota數量、Secret數量、可持久化PV(Persistent Volume)數量。
配額控制通過Admission Control實現,兩種控制器LimitRanger和ResourceQuota。LimitRanger作用於pod和container上,ResourceQuota作用於namespace。
4.Namespace Controller
定時通過API Server讀取etcd中儲存的namespace資訊,刪除namespaces下的資源物件。
5.ServiceAccount Controller和Token Controller
兩個與安全有關的控制器。SAC監聽Service Account的刪除事件和namespace的建立、修改事件。TC監聽Service Account和Secret的建立、修改、刪除事件。
6.Service Controller和Endpoint Controller
Service Controller監控service變化,主要是LoadBalancer變化。Endpoints controller通過store來快取service和pod資訊,監控它們的變化。監控etcd的/registry/services目錄變化。
7.Kubernetes Scheduler
建立排程pod到合適的node上。
Pod排程的預選策略有:
NoDiskConfilct、PodFitResouces、PodSelectorMatches、PodFitsHost、CheckNodeLabelPresence、CheckServiceAffinity、PodFitsPorts
Pod排程的優選策略有:
LeastRequestPriority、CalculateNodeLabelPriority、BalancedResourceAllocation