天天看点

【干货】全自主研发Docker容器调度引擎——Newbon 背景:

      大家所熟知的docker容器调度引擎包括,k8s, swarm, mesos和rancher,这些调度引擎都是开源的国外引擎,各有各的特点。在同客户和圈内人士沟通中,很多人直言国内容器创业公司大多只是将各种开源组件集成在一起,同质化严重,没有核心竞争力。作为国内第一批的容器创业公司——ghostcloud精灵云,深知国内需要在容器的诸多领域拥有真正完全可控,同时具有核心竞争力的产品。因此,容器云平台最核心的调度引擎迫切需要一个完全可控,自主的产品,在这种背景下newbon应运而生。newbon取自“牛犇”的谐音,意在构建一个稳定的,牢固的容器调度引擎。接下来就简单介绍一下newbon的实现细节,并通过一系列视频进行功能展示。

      newbon包含几个核心部分:

l  

<b>api-server : </b>为ui和第三方集成提供调用接口。

<b>scheduler :</b> 负责解释定义,收集数据和执行调度。

<b>dns/etcd :</b> 负责服务注册,服务发现,订阅和容器主机访问。

<b>executer :</b>负责执行server端下发命令。

<b>monitor : </b>负责监控主机和容器的各种状态。

<b>heapster :</b> 负责健康检查。

<b>calico+ :</b> 经过二次开发的基于calico的网络插件。

<b>nginx : </b>七层负载均衡器。

<b>haproxy :</b> 四层/七层负载均衡器。

<b>keepalive :</b> 高可用组件。

      下面是典型的逻辑结构图:

【干货】全自主研发Docker容器调度引擎——Newbon 背景:

最上层是高可用集群,中间接负载均衡器,底层接多个应用服务,从这幅图就能看出,newbon从设计之初就支持高可用,负载均衡和弹性伸缩,以及多服务挂载。

接下来我们重点介绍下newbon中负责解释定义,收集数据和执行调度的核心组件scheduler。

解释服务定义

选择合适的节点创建容器

监控节点和容器运行状态

服务注册和注销

自动扩容和缩容

灰度升级(rolling upgrade)

结合解释服务定义,下面是一个服务示例:

【干货】全自主研发Docker容器调度引擎——Newbon 背景:

应用支持的扩展配置:

【干货】全自主研发Docker容器调度引擎——Newbon 背景:

健康检查配置支持(tcp):

【干货】全自主研发Docker容器调度引擎——Newbon 背景:

健康检查配置支持(http):

【干货】全自主研发Docker容器调度引擎——Newbon 背景:

服务配置:

【干货】全自主研发Docker容器调度引擎——Newbon 背景:

调度配置:

【干货】全自主研发Docker容器调度引擎——Newbon 背景:

高可用集群:

【干货】全自主研发Docker容器调度引擎——Newbon 背景:

      在容器调度引擎中,这三个过程可以说是最核心的地方。newbon借鉴了多个调度引擎的优点,使用了etcd和dns并结合控制服务器来实现以下功能:

·            

创建服务后自动创建dns记录用于访问相关容器:

§  

a记录,通过域名访问单个容器和一组容器。

srv记录,记录容器提供的服务协议、端口、优先级和提供服务的ip列表。

容器状态健康后注册srv信息:

·        

当容器停止或处于不健康状态时,会注销dns a记录和srv信息。

下面就是一个dns纪录示例:

【干货】全自主研发Docker容器调度引擎——Newbon 背景:

      这一部分主要通过以下方式实现:

agent

monitor 模块实时监测容器cpu和内存使用情况:

定义性能指标阈值和容器运行上限和下限。

 扩容:

当容器平均性能指标超过阈值一段时间(1分钟)后启动自动扩容,创建更多容器以达到

阀值要求的90%。

当没有主机资源运行新容器时,自动申请新主机(限公有云环境)。

缩容:

 当一段时间(3分钟)负载持续低于阈值80%启动缩容。

优先删除新创建容器和主机,以释放资源和降低运营成本。

下面是一个扩容的示意图:

【干货】全自主研发Docker容器调度引擎——Newbon 背景:

      接下来我们将通过视频的方式给大家展示newbon所支持的一系列功能,本期重点展示newbon的自动扩展功能:

<a href="https://v.qq.com/x/page/i03670gm0fh.html">https://v.qq.com/x/page/i03670gm0fh.html</a>

q: 既然已经有k8s, swarm,

mesos, rancher等调度引擎,为什么精灵云还要自主研发调度引擎newbon呢?

a: 调度引擎是容器云平台最核心的部分,开源固然可以快速上手,快速搭建系统,但是任何一个开源系统实际是由一个或多个公司主导的,因此在使用中经常会受制于国外。开源系统由于需求和贡献者多,因此会导致系统异常庞大,企业往往只需要使用20%功能,但是却要去维护80%的其他系统。因此,精灵云从一开始就选择自主研发调度框架,做到完全自主可控,为企业级用户提供更好的服务。

q:

newbon 跟其他容器调度相比有何优势?

a:

newbon吸取各调度引擎的长处,可以说是目前国内定制能力最强,支持功能丰富的调度框架,包括在网络、应用迁移、应用快照、模板、负载均衡、弹性伸缩、高可用、ci/cd集成、灰度发布和回滚、镜像集成、日志监控等方面都有着非常大的优势。

newbon稳定吗?有多少用户在使用?

newbon虽然是最近才对外公布,但实际是精灵云核心研发团队多年的积累。团队在内核和分布式领域有丰富的经验,主要来自于veritas, emc,微软和ibm,平均拥有10年以上分布式系统研发经验,曾负责华为存储软件的oem工作。veritas可以说是分布式领域的兵工厂,它的veritas cluster

server是最早的分布式中间件,k8s容器负责人dawn chen也曾就职于veritas。因此,newbon是集众家之所长,并且在精灵云的公有云上得到了充分的验证,支撑数万用户和数十万的容器调度。newbon从ecos 2.0开始内置,目前已经在多家中大型企业得到运用。