kuberneetes集群是由控制平面的组件和一组称为节点的机器组成
控制平面组件会为集群做出全局决策,比如资源的调度。以及检测和响应集群事件,控制平面组件可以在集群中的任何节点上运行。然而为了简单,设置脚本通常会在用一个计算机上启动所有控制平面组件,并且不会在此计算机上运行用户容器。
API服务器是控制平面的组件,该组件负责公开了kubernetes API,负责处理接受请求的工作。API服务器是kubernetes控制平面的前端。(实例主要是kube-apiserver)
一致且高可用的键值存储,用作kubernetes所有集群数据的后台数据库
负责监视新创建、未指定运行节点的Pods,并选择节点让Pod在上面运行
调度决策考虑的因素包括单个Pod及Pods集合的资源需求、软硬件及策略约束、 亲和性及反亲和性规范、数据位置、工作负载间的干扰及最后时限。
负责运行控制器进程
控制器包括
- 节点控制器(Node Controller):负责在节点出现故障时进行通知和响应
- 任务控制器(Job Controller):监测代表一次性任务的 Job 对象,然后创建 Pods 来运行这些任务直至完成
- 端点分片控制器(EndpointSlice controller):填充端点分片(EndpointSlice)对象(以提供 Service 和 Pod 之间的链接)。
- 服务账号控制器(ServiceAccount controller):为新的命名空间创建默认的服务账号(ServiceAccount)。
嵌入了特定于云平台的控制逻辑。 云控制器管理器(Cloud Controller Manager)允许你将你的集群连接到云提供商的 API 之上, 并将与该云平台交互的组件同与你的集群交互的组件分离开来。
节点组件会在每个节点上运行,负责维护运行的Pod并提供kubernetes运行环境
会在集群中每个节点上运行 kubelet 接收一组通过各类机制提供给它的 PodSpecs, 确保这些 PodSpecs 中描述的容器处于运行状态且健康。 kubelet 不会管理不是由 Kubernetes 创建的容器。
集群中每个节点上所运行的网络代理,实现服务的一部分
containerd、 CRI-O 等