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