Deis使用面向服务的架构,架构中的组件包括控制层(Control Plane)、数据层(Data Plane)和网状路由(Router Mesh)。

架构图

1.2 架构 - 图1

管理员使用Deisctl API与集群的控制层、数据层和网状路由进行交互。
而平台的用户(开发者)通过Deis API与控制层进行交互。

控制层通过调度器将任务发送到数据层。网状路由用来路由请求到控制层和数据层。因为网状路由与外网连接,所以它的前端一般是负载均衡器。

控制层

1.2 架构 - 图2

控制层负责整个平台的管理功能。控制层的组件(蓝色的部分)全部由Docker容器实现。

存储(Store)组件包含一些更小的组件。这些小的组件运行着容器化Ceph集群,Ceph集群可以为控制层的组件提供用于存储blob的API和POSIX文件系统API。具体组件如下:

  • Registry - 一个Docker Registry,用来保存镜像和配置数据
  • Database - 用来保存平台的状态的Postgres数据库
  • 日志- 一个syslog日志服务器,它会收集数据层的日志

终端用户主要通过控制器组件(Controller)暴露的HTTP API来与控制器组件交互。用户也可以通过git pushBuilder进行交互。

数据层

1.2 架构 - 图3

数据层是用户容器(蓝色的部分)以用户身份运行的地方。

平台调度器负责将容器发布到数据层的主机上。Deis也要求一些轻量级的组件运行在这些主机上:

拓扑结构

对于小规模的部署你可以在三个服务器上运行整个平台,包括控制层、数据层和网状路由。
对于大规模的部署,你可以将控制层和网状路由分割开来,然后将数据层扩展到任意多的服务器。