基于云主机+docker engine的容器服务




在基于kubernetes实现容器编排产品之前,我们基于现有的VisionStack云平台,利用云主机+docker engine+自研编排服务+私有镜像仓库的方式,实现了一套自己的容器服务,方便用户基于docker镜像来发布和管理业务。

后续我们也会考虑基于kubernetes研发一套真正意义上的容器编排产品,这个产品应该是独立于现有的VisionStack产品之外的一套新系统。

名词说明

服务:对应业务产品,通常一个产品可以创建一个服务(如果有需要的话,一个产品的不同版本也可对应多个服务)

节点:服务的基础,业务容器化首先需要创建云主机(容器跑在云主机上),一个服务可以创建多个云主机便于高可用及业务升级

副本:第一期的版本,每个节点只启一个容器,后续考虑完善,每个节点启多个容器来部署服务,一个容器即为一个副本

容器镜像:用户根据自己的业务环境制作的容器镜像,可以满足业务产品的运行,用户需要自己上传到镜像仓库

负载均衡权重:每个服务对应一个负载均衡,来实现对于各个节点服务的访问,权重可以控制访问频率。权重是相对来说的,权重越高的节点被访问的频率越高

本次功能添加如图所示:

导航栏添加容器服务,并为其添加两个子项——服务列表、镜像仓库

镜像仓库

镜像仓库是容器服务功能的基础,我们搭建了自己的私有仓库并提供筛选和删除功能。用户使用该功能之前,首先需要自作自己的业务docker镜像,并将其push到私有仓库,以便后续的使用。上传的镜像主要支持名称及版本,满足升级和管理。

服务列表

服务列表是该项功能的主要操作页面,大部分的功能点集中在这个页面。

一、服务列表

服务列表包括信息如图:名称、对外提供的ip及端口、节点数(每个节点为一台云主机,目前采用的实现方式是,一个节点启一个容器;后续会进一步完善为一个节点多个容器)、规格(为所有节点的规格,现在所有节点规格相同,后续会考虑支持不同的节点对应不同的规格)、状态(展示该项服务的健康状况,便于监控)

二、创建服务

我们可以把某项业务部署创建为一项服务,以便于管理和部署。创建之前,需要用户将自己的业务制作为容器镜像,并上传到私有镜像仓库,创建页面如下:

如图所示,创建过程中我们首先需要填写自己的服务名称,并设置服务端口号和节点数(目前支持1-10个节点);可用域和物理机需要多选,单选的话无法支持高可用(高可用需要多节点多物理机);节点(云主机)创建需要用户名密码、主机规格、网络、安全组等参数(参考创建云主机);创建服务最重要的就是选择自己的容器镜像,目前提供镜像及镜像版本的选择(如果愿意的话,你可以将某项业务部署多个版本);负载均衡用于对外提供可以访问的ip及端口。

三、修改服务

当前修改功能比较简单,当前仅支持修改服务名称和节点数。修改弹框如图:

四、删除服务

提供删除服务的功能,当前删除时彻底删除,后续考虑提供回收站及 删除防误

五、服务升级

服务升级是我们的重点,当前提供3种升级方式:滚动发布、停服发布、手动发布。

1、滚动发布

滚动发布可向后滚动(产品升级),也可以向前滚动(产品回滚),该项发布为自动发布,只需选择镜像及版本,就可以完成升级工作。页面如下:

2、停服发布

停服服务可以理解为滚动发布的简化,也支持向后滚动(产品升级)、向前滚动(产品回滚)。其与滚动发布的唯一区别就是滚动发布不需停服(会出现极短时间的新老版本共存的情况),停服发布需要停服。页面如下:

3、手动发布

手动发布适用于测试不充分或者需要在生产环境补充测试的业务发布(可在升级过程中进行测试),页面如图:

该升级功能可选镜像和节点,每个节点后标注镜像、版本和负载均衡权重,手动升级可以分N次,每次可选M(M<=8, M=8时为手动停服发布)个节点进行升级。勾选服务,打开弹框,选择手动发布,弹框中显示节点列表(节点包括镜像版本和负载均衡权重,权重为0时表示该节点在负载均衡服务中处于禁用状态)。下拉选择镜像及版本,勾选想要升级或回滚的镜像,若不需要测试,可配置负载均衡权重为非0,直接将选中的节点升级。若需要测试则勾选选镜像、节点并将勾选节点的权重置为0,点击确定,此时服务列表中该服务及该服务的节点列表状态显示升级中。发布人员可以在此时进行测试,若测试成功,可以再次勾选该服务,选择手动发布,将新升级的节点负载均衡权重置为非0(因为当前每个节点的规格相同,所以建议完成升级之后把每个节点的权重设为相同的值)。当全部节点中只升级了一部分,此时该服务包括新老两个发布版本的产品,若为了谨慎发布可以将新升级的节点负载权重配小,待产品稳定后可以再将权重全部保持一致。当然用户也可以自己随意设置自己的各个节点的权重。

六、导出excel及自定义列表功能

这两个功能和产品的其他页面一致

七、详情

详情用于展示某项服务的详细信息,目前展示信息如下图所示,后面可以考虑继续完善。

八、节点列表

勾选某项服务,点击节点列表按钮可进入节点列表子页面:

列表中展示的内容如图所示,功能包括添加/删除节点、控制台、导出excel、自定义列表。

控制台提供登录Docker所在节点(云主机)的入口。

九、副本列表(当前未做)

当前每个节点只包含一个容器,后面考虑完善功能,在一个节点启多个容器(副本),这时就需要副本列表页面。