27 微服务容器化运维:容器调度和服务编排
专栏上一期,我给你讲解了容器运维平台的两个关键组成:镜像仓库和资源调度。复习一下,镜像仓库解决的是Docker镜像存储和访问的问题,资源调度决定了Docker镜像可以分发到哪些机器上的问题。这两个问题解决后,你就该考虑如何在集群中创建容器,也就是容器如何调度的问题;容器创建后如何运作才能对外提供服务,也就是服务如何编排的问题。下面我们就一起看看容器调度和服务编排都是如何解决的。
容器调度
容器调度的问题,说的是现在集群里有一批可用的物理机或者虚拟机,当服务需要发布的时候,该选择哪些机器部署容器的问题。
比如集群里只有10台机器,并且已经有5台机器运行着其他容器,剩余5台机器空闲着,如果此时有一个服务要发布,但只需要3台机器就行了,这个时候可以靠运维人为的从5台空闲的机器中选取3台机器,然后把服务的Docker镜像下载下来,再启动Docker容器服务就算完成发布。但如果集群机器的规模扩大到几十台或者上百台时,要发布的服务也有几十个或者上百个的时候,由于每个服务对容器的要求,以及每台机器上正在运行的容器情况变得很复杂,就不太可能靠人肉运维了。
这时就需要有专门的容器调度系统了,为此也诞生了不少基于Docker的容器调度系统,比如Docker原生的调度系统Swarm、Mesosphere出品的Mesos,以及Google开源的大名鼎鼎的