Master组件
Master组件是集群的控制平台:
- Master组件负责集群中得全局决策(例如调度)
- Master组件探测并响应集群事件(例如,当Deployment的实际Pod副本数未达到replicas字段的规定时,启动一个新的Pod)
Master组件可以运行于集群中的任何机器上,但是为了简洁性,通常在同一台机器上运行所有的Master组件,且不在此机器上运行用户容器。
kube-apiserver
etcd
kube-scheduler
此Master组件监听所有新创建尚未分配到节点上的Pod,并且自动为Pod选择一个合适的节点去运行。影响调度的因素有:
- 单个或多个Pod的资源需求
- 硬件、软件、策略的限制
- 亲和与反亲和的约定
- 数据本地化要求(不是很熟悉)
- 工作负载键的相互作用
kube-controller-manager
此Master组件运行了所有的控制器。逻辑上来说,每一个控制器都是一个独立的进程,但是为了降低复杂度,这些控制器被合并运行在一个进程里。kube-controller-manager中包含的控制器有:
- 节点控制器:负责监听节点停机的事件并作出对应响应
- 副本控制器:负责为集群中每一个副本控制器对象维护期望的Pod副本数
- 端点控制器:负责为端点对象赋值(不是很熟悉)
- Service Account & Token控制器:负责为新的名称空间创建Default Service Account以及API Access Token。
cloud-controller-manager
此Master组件运行了与具体云基础设施供应商互动的控制器,默认是不安装该组件的。(暂时不研究该组件)
Node组件
kubelet
此组件是运行在每一个集群节点上的代理程序,它确保Pod中得容器处于运行状态。Kubelet通过多种途径获得PodSpec定义,并确保PodSpec定义中所描述的容器处于运行和健康的状态。Kubectl只管理通过Kubernetes创建的容器。
kube-proxy
此组件是一个网络代理程序,运行在集群中的每一个节点上,是实现Kubernetes Service概念的重要部分。kube-proxy在节点上维护网络规则,这些规则确保能正确的与各个Pod进行通信,目前最新版的Kubernetes是通过LVS实现的。
容器引擎
容器引擎负责运行容器。Kubernetes支持多种容器引擎:Docker、containerd、cri-o、rktlet以及任何实现了Kubernetes容器引擎接口的容器引擎(这方面不是很熟悉)。
Addons(非常不熟悉)
Addons使用Kubernetes资源(DaemonSet、Deployment等)实现集群的功能特性。由于它们提供集群级别的功能特性,Addons使用到的Kubernetes资源都放置在kube-system命名空间下。
DNS
除了DNS Addon以外,其他的Addon都不是必须的,所有Kubernetes集群都应该有Cluster DNS。Cluster DNS是一个DNS服务器,是对您已有环境中其他DNS服务器的一个补充,存放了Kubernetes Service的DNS记录。Kubernetes启动容器时,自动将该DNS服务器假如到容器的DNS搜索列表中。
WebUI
Kuboard
ContainerResource Monitoring
此组件将容器的度量指标记录在时间序列数据库中,并提供了UI界面查看这些数据。
Cluster-Level Logging
此组件负责将容器的日志存储到一个统一存储中,并提供搜索浏览的界面。