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

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介:

背景:

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

组成:

      Newbon包含几个核心部分:

l   Api-Server : 为UI和第三方集成提供调用接口。

l   Scheduler : 负责解释定义,收集数据和执行调度。

l   DNS/ETCD : 负责服务注册,服务发现,订阅和容器主机访问。

l   Executer :负责执行Server端下发命令。

l   Monitor : 负责监控主机和容器的各种状态。

l   Heapster : 负责健康检查。

l   Calico+ : 经过二次开发的基于Calico的网络插件。

l   Nginx : 七层负载均衡器。

l   HAProxy : 四层/七层负载均衡器。

l   Keepalive : 高可用组件。

典型逻辑结构:

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

c15fc7498b5b4d059075f2a81a122fd0da383110

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

 

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

Scheduler功能包括:

l   解释服务定义

l   选择合适的节点创建容器

l   监控节点和容器运行状态

l   服务注册和注销

l   自动扩容和缩容

l   灰度升级(Rolling Upgrade)

 

解释服务定义:

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

a115affdb8c39187b63a3f0f62bd6aac35895a3a

应用支持的扩展配置:

9258e13c71cdaa5d7fdec4bddf506ac40ebcd82d

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

b315db5a2b5d5ac93c7b2419334792e4ebcc575c

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

86c3964311507fe825330d41ad883bf01741f901

服务配置:

cfee0fc1ef8f161a541e39b1122f8daecfbad459

调度配置:

cf384f150fcf4260c7753f6fed21e001a5a99fe9

高可用集群:

11d40df5a83b38c89aa7d3acf7d17b558770f689

服务发现,服务注册和注销:

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

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

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

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

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

·         当容器停止或处于不健康状态时,会注销DNS A记录和SRV信息。

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

c361a05f2a0fa073cae3597ec370a134e77e6ccc

自动扩容和缩容:

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

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

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

  扩容:

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

阀值要求的90%。

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

缩容:

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

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

 

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

21dd9e953d60062df963115f2234e080b16ac759

功能展示:

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

https://v.qq.com/x/page/i03670gm0fh.html

 

Q&A:

Q: 既然已经有K8S, Swarm, Mesos, Rancher等调度引擎,为什么精灵云还要自主研发调度引擎Newbon呢?

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

 

Q: Newbon 跟其他容器调度相比有何优势?

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

 

Q: Newbon稳定吗?有多少用户在使用?

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

目录
打赏
0
0
0
0
105
分享
相关文章
docker容器为啥会开机自启动
通过配置适当的重启策略,Docker容器可以在主机系统重启后自动启动。这对于保持关键服务的高可用性和自动恢复能力非常有用。选择适合的重启策略(如 `always`或 `unless-stopped`),可以确保应用程序在各种情况下保持运行。理解并配置这些策略是确保Docker容器化应用可靠性的关键。
275 93
课时5:阿里云容器服务:最原生的集成Docker和云服务
阿里云容器服务以服务化形式构建容器基础设施,大幅提升开发效率,简化应用部署流程。通过Docker容器和DevOps工具(如Jenkins),实现自动化部署与迭代,优化企业内部复杂部署问题。该服务支持GPU调度、混合云架构无缝迁移,并与阿里云产品体系无缝集成,提供安全防护、网络负载均衡等多重功能支持。凭借微服务架构,帮助企业突破业务瓶颈,提高资源利用率,轻松应对海量流量。
课时5:阿里云容器服务:最原生的集成Docker和云服务
Docker+consul容器服务的更新与发现
通过本文的介绍,我们详细探讨了如何结合Docker和Consul来实现容器服务的更新与发现。通过Consul的服务注册和发现功能,可以高效地管理和监控容器化服务,确保系统的高可用性和可扩展性。希望本文能帮助您在实际项目中更好地应用Docker和Consul,提高系统的可靠性和管理效率。
62 23
ubuntu22 编译安装docker,和docker容器方式安装 deepseek
本脚本适用于Ubuntu 22.04,主要功能包括编译安装Docker和安装DeepSeek模型。首先通过Apt源配置安装Docker,确保网络稳定(建议使用VPN)。接着下载并配置Docker二进制文件,创建Docker用户组并设置守护进程。随后拉取Debian 12镜像,安装系统必备工具,配置Ollama模型管理器,并最终部署和运行DeepSeek模型,提供API接口进行交互测试。
310 15
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
203 6
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
docker 是什么?docker初认识之如何部署docker-优雅草后续将会把产品发布部署至docker容器中-因此会出相关系列文章-优雅草央千澈
Docker 是一个开源的容器化平台,允许开发者将应用程序及其依赖项打包成标准化单元(容器),确保在任何支持 Docker 的操作系统上一致运行。容器共享主机内核,提供轻量级、高效的执行环境。本文介绍如何在 Ubuntu 上安装 Docker,并通过简单步骤验证安装成功。后续文章将探讨使用 Docker 部署开源项目。优雅草央千澈 源、安装 Docker 包、验证安装 - 适用场景:开发、测试、生产环境 通过以上步骤,您可以在 Ubuntu 系统上成功安装并运行 Docker,为后续的应用部署打下基础。
102 8
docker 是什么?docker初认识之如何部署docker-优雅草后续将会把产品发布部署至docker容器中-因此会出相关系列文章-优雅草央千澈
docker容器为啥会开机自启动
通过配置适当的重启策略,Docker容器可以在主机系统重启后自动启动。这对于保持关键服务的高可用性和自动恢复能力非常有用。选择适合的重启策略(如 `always`或 `unless-stopped`),可以确保应用程序在各种情况下保持运行。理解并配置这些策略是确保Docker容器化应用可靠性的关键。
73 17
《docker基础篇:1.Docker简介》,包括Docker是什么、容器与虚拟机比较、能干嘛、去哪下
《docker基础篇:1.Docker简介》,包括Docker是什么、容器与虚拟机比较、能干嘛、去哪下
133 12
入门级容器技术解析:Docker和K8s的区别与关系
本文介绍了容器技术的发展历程及其重要组成部分Docker和Kubernetes。从传统物理机到虚拟机,再到容器化,每一步都旨在更高效地利用服务器资源并简化应用部署。容器技术通过隔离环境、减少依赖冲突和提高可移植性,解决了传统部署方式中的诸多问题。Docker作为容器化平台,专注于创建和管理容器;而Kubernetes则是一个强大的容器编排系统,用于自动化部署、扩展和管理容器化应用。两者相辅相成,共同推动了现代云原生应用的快速发展。
281 11
Docker操作 :容器命令
Docker操作 (四)
230 56

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等