【干货】全自主研发Docker容器调度引擎——Newben

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

组成:
Newben包含几个核心部分:

  • Api-Server : 为UI和第三方集成提供调用接口。
  • Scheduler : 负责解释定义,收集数据和执行调度。
  • DNS/ETCD : 负责服务注册,服务发现,订阅和容器主机访问。
  • Executer :负责执行Server端下发命令。
  • Monitor : 负责监控主机和容器的各种状态。
  • Heapster : 负责健康检查。
  • Calico+ : 经过二次开发的基于Calico的网络插件。
  • Nginx : 七层负载均衡器。
  • HAProxy : 四层/七层负载均衡器。 Keepalive : 高可用组件。

典型逻辑结构:
下面是典型的逻辑结构图:
【干货】全自主研发Docker容器调度引擎——Newben_第1张图片
最上层是高可用集群,中间接负载均衡器,底层接多个应用服务,从这幅图就能看出,Newben从设计之初就支持高可用,负载均衡和弹性伸缩,以及多服务挂载。

接下来我们重点介绍下Newben中负责解释定义,收集数据和执行调度的核心组件Scheduler。
Scheduler功能包括:

  • 解释服务定义
  • 选择合适的节点创建容器
  • 监控节点和容器运行状态
  • 服务注册和注销
  • 自动扩容和缩容
  • 灰度升级(Rolling Upgrade)

解释服务定义:
结合解释服务定义,下面是一个服务示例:
【干货】全自主研发Docker容器调度引擎——Newben_第2张图片

应用支持的扩展配置:
【干货】全自主研发Docker容器调度引擎——Newben_第3张图片

健康检查配置支持(TCP):
【干货】全自主研发Docker容器调度引擎——Newben_第4张图片

健康检查配置支持(Http):
【干货】全自主研发Docker容器调度引擎——Newben_第5张图片

服务配置:
【干货】全自主研发Docker容器调度引擎——Newben_第6张图片

调度配置:
【干货】全自主研发Docker容器调度引擎——Newben_第7张图片

高可用集群:
【干货】全自主研发Docker容器调度引擎——Newben_第8张图片

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

  • 创建服务后自动创建DNS记录用于访问相关容器:
  • A记录,通过域名访问单个容器和一组容器。
  • SRV记录,记录容器提供的服务协议、端口、优先级和提供服务的IP列表。
  • 容器状态健康后注册SRV信息:
  • 当容器停止或处于不健康状态时,会注销DNS A记录和SRV信息。

下面就是一个DNS纪录示例:
【干货】全自主研发Docker容器调度引擎——Newben_第9张图片

自动扩容和缩容:
这一部分主要通过以下方式实现:

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

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

  • 扩容:

    当容器平均性能指标超过阈值一段时间(1分钟)后启动自动扩容,创建更多容器以达到阈值要求的90%。
    当没有主机资源运行新容器时,自动申请新主机(限公有云环境)。

  • 缩容:

    当一段时间(3分钟)负载持续低于阈值80%启动缩容。
    优先删除新创建容器和主机,以释放资源和降低运营成本。

下面是一个扩容的示意图:
【干货】全自主研发Docker容器调度引擎——Newben_第10张图片

功能展示:
接下来我们将通过视频的方式给大家展示Newben所支持的一系列功能,本期重点展示Newben的自动扩展功能:
https://v.qq.com/x/page/i03670gm0fh.html

Q&A:

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

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

Q: Newben稳定吗?有多少用户在使用?
A: Newben虽然是最近才对外公布,但实际是精灵云核心研发团队多年的积累。团队在内核和分布式领域有丰富的经验,主要来自于Veritas, EMC,微软和IBM,平均拥有10年以上分布式系统研发经验,曾负责华为存储软件的OEM工作。Veritas可以说是分布式领域的兵工厂,它的Veritas Cluster Server是最早的分布式中间件,K8S容器负责人Dawn Chen也曾就职于Veritas。因此,Newben是集众家之所长,并且在精灵云的公有云上得到了充分的验证,支撑数万用户和数十万的容器调度。Newben从EcOS 2.0开始内置,目前已经在多家中大型企业得到运用。

你可能感兴趣的:(【干货】全自主研发Docker容器调度引擎——Newben)