K8S - Master 和 Node 组件介绍
程序员文章站
2022-06-27 20:32:44
k8s 组件的功能...
文章目录
Master
- master 可以在集群中任何节点上运行, 通常会在一台单独虚机上启动, 并且不会在此机器上运行用户容器
- kubectl 命令只能在 master 上运行, 在其他 node 节点上无法执行
API server
- 对外提供 restful 的 K8S API 服务
- 其他 master 组件通过 api server 提供的 rest 接口实现各自的功能
如: controller 通过 api server 实时监控各个资源的状态
etcd
- K8S 提供的高可用 kv 数据库, 用于保存所有网络配置和资源对象的状态信息, 也就是保存了整个集群的状态
- K8S 系统中一共两类服务需要 etcd 来协同和存储配置, 分别是
- 网络插件: flannel
- K8S 本身, 存储各种资源对象的状态和元信息
scheduler
- 调度器, 负责为 pod 寻找合适的 node
- 监听新的 pod 的信息, 并通过调度算法为该 pod 选择一个最合适的 node 节点, 调度成功后, 会将 pod 的信息绑定到 node 上, 同时将信息写入 etcd, 绑定成功后, 由 node 上的 kubelet 组件接手管理 pod 的生命周期
- 输入是 pod 和 node 的列表, 输出是 node 和 pod 的绑定
- K8S 提供调度算法, 同样保留了接口, 可以自定义调度算法
controller manager(创建完成后管理)
- 维护集群状态, 如故障检测, 自动扩展, 回滚更新等
- 每个资源一般都对应一个 controller, 而这些 controller 通过 api server 实时监控各个资源的状态, controller manager 负责管理这些 controller
- 当资源状态因为故障发生改变时, controller 会尝试将系统由"现有状态"恢复到"期待状态", 保证其下每一个 controller 所对应的资源处于"期望状态"
- 包括 管理控制器(kube-controller-manager) 和 云管理控制器(cloud-controller-manager)
Node
kubelet
- 监视已经分配完的 pod, 负责 pod 生命周期的管理
- 与 master 协作, 维护和管理 node 上所有容器, 实现集群管理端基本功能
- 可以理解为 kubelet 是 K8S 在每个 node 上的 agent, 它负责使 pod 的运行状态和预期的保持一致
kube-proxy
- 负责请求转发
- 实现 service 的通信与负载均衡机制的重要组件, 将 service 的请求转发到后端 pod 上
container runtime
- 容器运行环境
- 目前 k8s 支持 docker 和 rkt 两种
本文地址:https://blog.csdn.net/yang_kaiyue/article/details/109598213