Kubernetes是谷歌开源的容器编排引擎,架构和设计思想来源于谷歌内部使用调度工具——Borg。Borg是谷歌一个久负盛名的的内部使用的大规模集群管理系统,它基于Linux Container(LXC)技术,提供了面向应用的容器集群部署和管理系统。Kubernetes的目标旨在消除编排物理/虚拟计算,网络和存储基础设施的负担,并使应用程序运营商和开发人员完全将重点放在以容器为中心的原语上进行自助运营。实现资源管理的自动化,以及跨多个数据中心的资源利用率最大化。

Kubernetes架构设计与核心组件工作流_第1张图片

Kubernetes是一套完备的容器集群管理引擎,它提供了各种机制和接口来保证应用的快速发布和健康运行,提供了丰富的命令行工具(CLI)和API接口,便于与集群交互,同时Kubernetes提供了多层次的安全防护和隔离机制,多租户应用的支撑能力,应用的全生命周期管理,可扩展的自动资源调度机制,多粒度的资源配额管理能力,多租户支持的统一配置管理组件,多可用区域支撑,Kubernetes提供了一整套完善的容器管理工具,为容器集群管理提供了一站式服务。

Kubernetes架构

Kubernetes的整体架构,如下图所示:

Kubernetes架构设计与核心组件工作流_第2张图片

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

  • etcd保存了整个集群的状态;
  • kube-apiserver提供了资源操作的唯一入口,并提供认证、授权、访问控制、API 注册和发现等机制;
  • kube-controller-manager负责维护集群的状态,比如故障检测、自动扩展、滚动更新等;
  • kube-scheduler负责资源的调度,按照预定的调度策略将Pod调度到相应的机器上;
  • kubelet负责维持容器的生命周期,同时也负责Volume(CVI)和网络(CNI)的管理;
  • Container runtime负责镜像管理以及Pod和容器的真正运行(CRI),默认的容器运行时为Docker;
  • kube-proxy负责为Service提供cluster内部的服务发现和负载均衡。

Kubernetes架构设计与核心组件工作流_第3张图片

除了核心组件,还有一些推荐的Add-ons:

  • kube-dns负责为整个集群提供DNS服务
  • Ingress Controller为服务提供外网入口
  • Heapster提供资源监控
  • Dashboard提供 GUI
  • Federation提供跨可用区的集群
  • Fluentd-elasticsearch提供集群日志采集、存储与查询

下图描述了创建pod的对象出发,其Kubernetes各个组件之间的交互及其工作流的时序图:

Kubernetes架构设计与核心组件工作流_第4张图片

【编辑推荐】

  1. 如何在Kubernetes中创建命名空间?
  2. 用树莓派构建Kubernetes集群
  3. Kubernetes实战指南:零宕机无缝迁移Spring Cloud至k8s
  4. 如何在Kubernetes中创建HostPath持久卷?
  5. Kubernetes中的资源限制!

【责任编辑:武晓燕 TEL:(010)68476606】