01.Kubernetes 架构
Kubernetes 架构
Borg 简介
BorgMaster 是整个集群的大脑,负责维护整个集群的状态,并将数据持久化到Paxos 存储中;Scheduer 负责任务的调度,根据应用的特点将其调度到具体的机器上去;Borglet 负责真正运行任务(在容器中) ;borgcfg 是Borg 的命令行工具,用于跟Borg 系统交互,一般通过一个配置文件来提交任务。
Kubernetes 架构
etcd 保存了整个集群的状态;apiserver 提供了资源操作的唯一入口,并提供认证、授权、访问控制、API 注册和发现等机制;controller manager 负责维护集群的状态,比如故障检测、自动扩展、滚动更新等;scheduler 负责资源的调度,按照预定的调度策略将Pod 调度到相应的机器上;kubelet 负责维护容器的生命周期,同时也负责Volume (CSI)和网络(CNI)的管理;Container runtime 负责镜像管理以及Pod 和容器的真正运行(CRI) ;kube-proxy 负责为Service 提供cluster 内部的服务发现和负载均衡;
除了核心组件,还有一些推荐的插件,其中有的已经成为
CoreDNS 负责为整个集群提供DNS 服务Ingress Controller 为服务提供外网入口Prometheus 提供资源监控Dashboard 提供GUI Federation 提供跨可用区的集群
Kubernetes 架构示意图
整体架构
下图清晰表明了
下面是更抽象的一个视图:
Master 架构
Node 架构
分层架构
- 核心层:
Kubernetes 最核心的功能,对外提供API 构建高层的应用,对内提供插件式应用执行环境 - 应用层:部署(无状态应用、有状态应用、批处理任务、集群应用等)和路由(服务发现、
DNS 解析等) 、Service Mesh(部分位于应用层) - 管理层:系统度量(如基础设施、容器和网络的度量
) ,自动化(如自动扩展、动态Provision 等)以及策略管理(RBAC、Quota、PSP、NetworkPolicy 等) 、Service Mesh(部分位于管理层) - 接口层:
kubectl 命令行工具、客户端SDK 以及集群联邦 - 生态系统:在接口层之上的庞大容器集群管理调度的生态系统,可以划分为两个范畴
Kubernetes 外部:日志、监控、配置管理、CI/CD、Workflow、FaaS、OTS 应用、ChatOps、GitOps、SecOps 等Kubernetes 内部:CRI、CNI、CSI、镜像仓库、Cloud Provider、集群自身的配置和管理等
备注