2.2 Kubernetes 架构

Kubernetes 的架构从宏观层面的来讲分为两个平面,即控制平面和计算平面,控制平面又称为 Master 节点,Master 节点是整个集群的大脑,负责控制、调度集群资源;计算平面又称为 Node 节点,Node 节点负责运行工作负载,是 Master 节点调度的对象。kubectl 作为 Kubernetes 客户端通过和 Master 节点直接进行通信来控制 Kubernetes 集群。

Kubernetes 架构

控制节点

Kubernetes Master

  • kube-apiserver 对外暴露 Kubernetes API,所有对集群的操作都是通过这组API完成,包括客户端下达应用编排命令给 Kubernetes 集群;kubelet 上报集群资源使用情况;以及各个组件之间的交互都是通过这套 API 完成的。
  • kube-controller-manager 负责整个 Kubernetes 的管理工作,保证集群中各种资源处于期望状态,当监控到集群中某个资源状态与期望状态不符时,controller-manager 会触发调度操作。
  • kube-scheduler 调度器负责 Kubernetes 集群的具体调度工作,接收来自于controller-manager 触发的调度操作请求,然后根据请求规格、调度约束、整体资源情况进行调度计算,最后将任务发送到目标节点由的kubelet组件执行。
  • etcd 是一个高效KV存储系统。在Kubernetes环境中主要用于存储所有需要持久化的数据。

计算节点

Kubernetes Node

  • kubelet 是 Node 节点上核心组件,负责与 docker daemon 进行交互运行 docker 容器;配置网络和数据卷;监控并上报节点资源使用情况。
  • kube-proxy 主要负责 Service Endpoint 到 POD 实例的请求转发及负载均衡的规则管理。

以上这些组件的运行原理在进阶篇中会详细讲述。