一、Master组件
1、APIService
API Server是kubernetes的核心组件,是各个组件通信的通道,任何的资源请求/调用操作都是通过其进行
集群的管理是由kubectl、kubernetes dashboard等管理工具就是通过apiserver来实现
2、Etcd
数据存储,存储集群所有的配置信息和状态信息
监听(watch)机制,当数据发生变化时,etcd会快速地通知k8s相关组件。
etcd是一个独立的服务组件,并不隶属于K8S集群
3、Scheduler
资源调度,对集群的结构进行分析当前各个节点的负载,决定Pod在哪个Node上运行。
4、Controller Manager
负责管理集群各种资源,保证资源处于预期的状态:
1、node controller:节点控制器,负责监听节点停机的事件并作出对应响应
2、replication controller:副本控制器,维护容器组的副本数为指定的数值
3、endpoints controller:Endpoints对象的控制器,负责生成、删除及维护所有的Endpoints对象的控制器。
Endpoints表示了一个Service对应的所有Pod副本的访问地址。主要在service创建和删除时操作对应的Endpoints创建和删除
4、namespace controller:命名空间控制器,读取这些命名空间信息并做对应的对于命名空间的一些操作
5、resourceQuota controller:将期望的资源配合信息通过API Server写入etcd并定时地统计、读取这些信息
二、Node组件
1、Kubelet
1、管理该节点上的Pod和容器
2、创建时向APIServer注册自身的信息,定时汇报节点的信息
2、kube-proxy
接收并转发请求的中间商,将到Service的访问请求转发到后台的某个具体的Pod,会实现负载均衡。
3、Container runtime
容器运行时(Container Runtime)环境,它负责下载镜像并运行容器
三、其它非核心组件
kube-dns:提供DNS服务
Ingress Controller:提供外网入口
Heapster:提供资源监控
Dashboard:提供GUI
Federation:提供跨可用区的集群
Fluentd-elasticsearch:提供集群日志采集、存储不查询,组合使用E(elastic存储)F(fluent收集)K(Kibana查看)