k8s组件分为master节点组件和node节点组件:

k8s 组件默认不用容器 k8s常用组件_Pod

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进程,提供容器具体的运行环境