Kubernetes的本质
Kubernetes的架构
首先 Kubernetes 着重解决的问题,来自于 Google 研究人员一个非常重要的观点:
运行在大规模集群中的各种任务之间,实际上存在着各种各样的关系。这些关系的处理,才是作业编排和管理系统最困难的地方。
如下所示为 Kubernetes 的架构设计以及各组件之间的通信协议:
可以看到,整个 Kubernetes 项目由 Master 和 Node 两种节点组成,Master 对应控制节点,Node 对应计算节点。
Master节点
Master 节点的架构如下图所示:
Master 节点(控制节点),由三个紧密协作的独立组件和一个 Etcd 数据库组合而成:
- kube-apiserver:负责 API 服务;Kubernetes 里所有资源的增、删、改、查等操作的唯一入口,也是集群的控制入口。
- kube-scheduler:负责调度;负责资源调度(Pod 调度)的进程,相当于公交公司的调度室。
- kube-controller-manager:负责容器编排;Kubernetes 中所有资源对象的自动化控制中心。
- etcd:保存整个集群的持久化数据。
Node 节点
Node 节点的架构如下图所示:
Node 节点上最核心的就是 kubelet 组件,主要有以下作用:
- 负责同容器运行时(比如Docker)打交道。
- 使用 gRPC 协议 同 Device Plugin 插件进行交互;Device Plugin 主要用于管理宿主机物理设备。
- 调用网络插件(CNI)和存储插件(CSI)配置网络和持久化存储。
Kubernetes 项目的本质,就是提供一个具有普遍意义的容器编排工具。