K8S - Master 和 Node 组件介绍

文章目录

  • 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 的生命周期
  • 盗了张大佬的图
    K8S - Master 和 Node 组件介绍_第1张图片

kube-proxy(请求转发)

  • 负责请求转发
  • 实现 service 的通信与负载均衡机制的重要组件, 将 service 的请求转发到后端 pod 上

container runtime(docker/)

  • 容器运行环境
  • 目前 k8s 支持 docker 和 rkt 两种

你可能感兴趣的:(#,K8S)