UP | HOME

概念

Table of Contents

Kubernetes 最初源于谷歌内部的 Borg,提供了面向应用的容器集群部署和管理系统

Borg 简介

Borg 是谷歌内部的大规模集群管理系统,负责对谷歌内部很多核心服务的调度和管理

Borg 的目的是让用户能够不必操心资源管理的问题,让他们专注于自己的核心业务,并且做到跨多个数据中心的资源利用率最大化

Borg 主要由 BorgMaster、Borglet、borgcfg 和 Scheduler 组成,如下图所示:

borg.png

  • BorgMaster: 整个集群的大脑,负责维护整个集群的状态,并将数据持久化到 Paxos 存储中
  • Scheduer: 负责任务的调度,根据应用的特点将其调度到具体的机器上去
  • Borglet: 负责真正运行任务(在容器中)
  • borgcfg: 是 Borg 的命令行工具,用于跟 Borg 系统交互,一般通过一个配置文件来提交任务

Kubernetes 架构

Kubernetes 借鉴了 Borg 的设计理念,比如 Pod、Service、Label 和单 Pod 单 IP 等。Kubernetes 的整体架构跟 Borg 非常像,如下图所示:

architecture.png

Kubernetes 主要由以下几个核心组件组成:

  • etcd: 保存 了整个 集群的状态
  • apiserver: 提供了 资源操作的唯一入口 ,并提供 认证授权访问控制API 注册发现 等机制
  • controller manager: 负责 维护 集群的状态 ,比如 故障检测自动扩展滚动更新
  • scheduler: 负责 资源的调度 ,按照预定的调度策略将 Pod 调度到相应的机器上
  • kubelet: 负责维护 容器的生命周期 ,同时也负责 Volume CSI网络 CNI 的管理
  • Container runtime: 负责 镜像 管理以及 Pod 和容器 的真正运行 CRI
  • kube-proxy: 负责为 Service 提供 cluster 内部服务发现负载均衡
除了核心组件,还有一些推荐的插件,其中有的已经成为 CNCF 中的托管项目

CoreDNS: 负责为整个集群提供 DNS 服务
Ingress Controller: 为服务提供外网入口
Prometheus: 提供资源监控
Dashboard: 提供 GUI
Federation: 提供跨可用区的集群

架构示意图

整体架构

下图清晰表明了 Kubernetes 的架构设计以及组件之间的通信协议:

kubernetes-high-level-component-archtecture.jpg

下面是更抽象的一个视图:

kubernetes-whole-arch.png

Master 架构

kubernetes-master-arch.png

Node 架构

kubernetes-node-arch.png

分层架构

Kubernetes 设计理念和功能其实就是一个类似 Linux 的分层架构,如下图所示:

kubernetes-layers-arch.png

  • 核心层: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、集群自身的配置和管理等

Next:设计

Home:架构