文章目录
- MASTER
- API Server(服务接口)
- ETCD(状态存储)
- Scheduler(调度器)
- Controller Manager(创建完成后管理)
- Node
- kubelet(agent)
- kube-proxy(请求转发)
- container runtime(docker/)
MASTER
- MASTER 可以在集群中任意 NODE 上运行
- 通常会在一台 单独 NODE 上启动, 并且不会在该 NODE 上运行服务 POD
- kubectl 命令只能在 MASTER 上运行, 在 NODE 无法执行
API Server(服务接口)
- 对外提供 restful 的 K8S API 服务
- 其他 MASTER 组件通过 API Server 提供的 rest 风格接口实现各自的功能
如: controller 通过 api server 实时监控各个资源的状态
ETCD(状态存储)
- K8S 提供的高可用 kv 数据库, 用于保存所有网络配置和资源对象的状态信息, 也就是保存了整个集群的状态
- K8S 系统中一共两类服务需要 etcd 来协同和存储配置, 分别是
- 网络相关
- K8S 本身各种资源对象的状态和元信息
Scheduler(调度器)
- 监听新的 POD 的信息, 并通过调度算法为该 POD 选择一个最合适的 NODE
- 调度成功后
- 将 POD 的信息绑定到 NODE 上
- 信息写入 ETCD
- 绑定成功后, kubelet 组件接手管理 POD 的生命周期
- 根据 K8S 提供的算法将 POD 和 Node 进行绑定, K8S 保留了接口, 可以自定义算法
Controller Manager(创建完成后管理)
- ControllerManager 负责管理 Controller
包括Node Controller
,NameSpace Controller
,Deployment Controller
,StatefulSet Controller
等 - Controller 负责维护集群状态, 如故障检测, 自动扩展, 回滚更新等
当资源状态因为故障发生改变时, controller 会尝试将系统由"现有状态"恢复到"期待状态", 保证其下每一个 controller 所对应的资源处于"期望状态" - 包括管理控制器(kube-controller-manager) 和 云管理控制器(cloud-controller-manager)
Node
kubelet(agent)
- 作为 daemonSet 存在于每个 NODE 上, 负责监听和管理 POD 的生命周期
- 盗了张大佬的图
kube-proxy(请求转发)
- 负责请求转发
- 实现 service 的通信与负载均衡机制的重要组件, 将 service 的请求转发到后端 pod 上
container runtime(docker/)
- 容器运行环境
- 目前 k8s 支持 docker 和 rkt 两种