1)kubernetes api server : 提供kubernetes各类资源对象(如pod, rc, service等)的增删改查以及watch丶list等http rest接口,
2)kubernetes controller manager: 通过api server提供的rest接口实时监控集群中特定资源的状态变化, 确保集群始终处于预期的工作状态
1.Replication controller: 确保在任何时候集群中某个RC关联的pod副本数量都保持预设值, 注意前提条件是RestartPolicy=Always; pod的扩容缩容,滚动更新
2.Node controller: 通过api server实时获取node的相关信息, 实现管理和监控集群中各个NODE的相关控制功能
3.ResourceQuota controller: 确保指定对象在任何时候都不会超量占用系统物理资源,对容器丶pod丶namespace级别, 分别可以限制资源配额,
kubernetes的配额管理是通过admission control准入控制来控制的, 提供两种方式实现配额约束, 分别是limitranger和resourcequota, limitranger作用域pod和container, ResourceQuota作用于namespace里的各类资源
4.Namespace controller: 定时通过api server读取namespace信息, 实现对namespace里的资源管理和控制
5.Service controller 和Endpoints controller
Endpoints 表示一个service对应所有pod副本的访问地址; 负责监控维护service和对应的pod副本的变化,
kube-proxy 需要获取每个service的endpoints, 实现services的负载均衡
3)kubernetes scheduler: 将待调度的pod按照特定的算法和调度策略绑定到集群中某个合适的node上,并将绑定信息写入到etcd中,
4)kubernetes kubelet
每个node节点都会安装一个kubelet进程, 用于处理master下发到本节点的任务(通过api 监听etcd资源), 管理pod(容器健康检查, 通过livenessprobe探针和readinessProbe探针),会向api server注册节点信息, 定时向master汇报节点资源的使用情况, 通过cadvisor(后面采用metric server)监控容器和节点资源
1.metrics server 提供核心指标, 包括node和pod的cpu和内存使用数据
2.custom metrics 自定义指标由prometheus采集和存储
5)kubernetes kube-proxy: 实现service功能, 通过iptables的nat转换规则实现
1. kubernetes1.2版本开始,将iptables作为kube-proxy的默认模式, 通过api server的watch接口实时跟踪service和endpoint的变更信息, 并更新对应的iptables规则, client的请求流量则通过iptables的NAT机制直接路由到目标pod
2. iptables缺陷: service和pod数量过多, 对导致iptables规则过多, 导致性能下降
3. kubernetes1.8版本引入ipvs, ipvs无法完全取代iptables, 在service工作在nodeport模式下