Swarm的进化和大规模应用 以阿里云为例

阿里云 云计算架构4044

图3 阿里云容器服务整体架构

另外是阿里云的专有云输出,因为专有云这个东西一旦部署到用户的机房之后,你升级就变得非常麻烦,有了容器之后,它的镜像的管理和升级就非常方便了。还有一个优点,它可以实现管控部署的资源优化,因为原来可能所有的管控都是独占机器的,这样的话比如说你布很多服务就会占很多机器,有了容器之后管控就可以共享机器了,减少了管控所占的资源,提高了用户能使用的资源的数量。

第二是阿里云的容器服务,这是我们在阿里云公有云上推出的一款产品,作用是帮用户管理集群和部署应用,当然还提供更多高级别的服务。

第三是阿里云高性能计算 HPC也会用到容器,在高计算领域,它的安装很复杂、很麻烦,经常比如说你拿到一个带显卡的机器,你在上面部署基础的应用,可能得花掉你一周的时间,如果你的应用是容器化的,这个事情就可以放到容器里面去,你只要关心自己的应用就可以了,可以大大地提高应用部署的效率。

下面重点介绍一下阿里云容器服务的一些特性,我们先看一下整体的架构,整体来说,阿里云容器服务是一个集群托管的模式,机器是用户的,但是管控是我们提供的。现在相当于我们帮用户管理他的机器,我们通过某一些界面化、某一些API的信息让用户去管理集群以及管理他的应用。

用户的机器下面会装Engine、下面会跑容器,我们这边的管控提供一个控制台,提供集群的创建和扩容这样的功能,然后提供服务、注册和发现的功能,提供应用生命周期管理和使用调度的功能。同时我们还会把很多阿里云上的服务都集成进来,比如说我们集成了SLB、ECS等功能,达到的目标让用户只关心我的应用,而不需要关心底下的机器。

我们可以看一下我们提供的功能,从四个角度讲。

第一个是集群的管理,这是最基本的功能,我们可以帮用户一键创建出一个容器集群,同时支持公有云、专有云、混合云以及敏捷版,公有云包括GPU的机器,专有云是部署在用户机房的,混合云就是你可以一部分集群管控在我们的机房,但是真正的用户机器在你自己的机房。你可以实现应用跨云的统一部署。另外还支持bare metal敏捷版。

第二是镜像服务,这是对容器化很重要的服务,我们支持公有和私有的仓库,你可以有自己的私有仓库,同时支持DockerHub的加速,我们提供这个加速的功能可以让你像访问国内的机器一样,另外可以连接第三方代码库,这样,其实你可以当成CICD系统的最重要的环节,你可以从代码到最终生成镜像,甚至到最后部署把它全自动打通。

第三是应用生命周期的管理,支持Swarm和Swarm Mode两种模式。

同时支持Rolling Update、蓝绿发布、离线与定时任务。

最后是微服务的支持,微服务它不是为容器而生,但是有了容器之后它的实现会变得更简单一些,为了微服务的支持,我们提供了一些很重要的基础的功能。包括服务发现、负载均衡、弹性伸缩、集成监控与日志、集成共享存储。

这是在阿里云上部署一个nginx应用的一个例子,这是用的3.0的模板,用Engine来部署,它可以通过8080端口来访问到。

阿里云 云计算架构5301

图4 负载均衡案例

云计算 阿里云云计算架构

自动扩容的事例,简单来说,你只要声明一下,当CPU超过70%了就扩展出两个容器来,我们的做法是通过监控平台把数据收集上去,之后,如果当它超过了70%的时候会调用集群管理的API,给它扩出容器来,同时会把负载均衡的后端再挂到新的容器上,这样就实现了自动扩容。

阿里云 云计算架构5917

图5 自动扩容案例

声明式自动扩容

1.aliyun.auto_scaling.max_cpu: 70