k8s组件分为master节点组件和node节点组件:
master节点组件:
apiserver提供集群管理的REST API接口,包括认证授权、数据校验以及集群状态变更等
- 鉴权、准入控制,请求的合法性验证
- 只有API Server才直接操作etcd
- 其他模块通过API Server查询或修改数据 ,集群访问的统一网关
- 提供其他模块之间的数据交互和通信的枢纽
- 对外所有用户暴露统一的restful API接口
scheduler负责分配调度Pod到集群内的node节点
- 监听kube-apiserver,查询还未分配Node的Pod
- 根据调度策略为这些Pod分配节点,把pod调度到一个合适的节点运行
controller-manager由一系列的控制器组成,它通过apiserver监控整个集群的状态,并确保集群处于预期的工作状态
- kube-controller-manager:Controller Manager还包括一些子控制器(副本控制器、节点控制器、命名空间控制器和服务账号控制器等),控制器作为集群内部的管理控制中心,负责集群内的Node、Pod副本、服务端点(Endpoint)、命名空间(Namespace)、服务账号(ServiceAccount)、资源定额(ResourceQuota)的管理,当某个Node意外宕机时,Controller Manager会及时发现并执行自动化修复流程,确保集群中的pod副本始终处于预期的工作状态。
- controller-manager控制器每间隔5秒检查一次节点的状态。
- 如果controller-manager控制器没有收到自节点的心跳,则将该node节点被标记为不可达。
- controller-manager将在标记为无法访问之前等待40秒。
- 如果该node节点被标记为无法访问后5分钟还没有恢复,controller-manager会删除当前node节点的所有pod并在其它可用节点重建这些pod。
etcd组件:
k8s集群后端数据存储的键值数据库,集群个数必须是奇数,节点一般三个即可满足高可用,过多反而不好,影响数据同步效率,对k8s来说,非常重要,需做好备份恢复
node节点组件介绍:
kubelet组件:
- 监听节点node运行状态,汇报给master
- 调用docker守护监控,完成pod的创建、更新、删除 等操作(k8s版本<= 1.23);1.24版本默认容器运行时为containerd
kube-proxy组件:
- k8s中service概念的具体实现
- 通过管理iptables或者IPVS规则来实现网络的转发
容器运行时
k8s版本 < 1.24版本之前是docker, >=1.24版本以后是containerd,负责调起runc进程,提供容器具体的运行环境