一款比 K8S 更好用的编排工具——Nomod

今天给笔友们推荐一款最近发现的服务编排工具Nomad。综合感觉就是功能很强大姿势很优雅,相比 K8S 更加轻量级,相比 Docker-Compose 能轻松支持分布式

Nomad 能做什么?

Nomad 采用统一的工作流程,既可以轻松部署和管理任何容器化应用传统应用程序。Nomad 也具备运行多种任务的能力,包括Docker 容器非容器化服务微服务以及批处理应用程序

Nomad 赋予开发者以基础设施即代码(Infrastructure-as-Code)的理念,通过编写脚本及配置文件的方式来部署应用。利用装箱(Bin Packing)算法,高效调度工作负载,优化资源利用率。当然,Nomad 也同时支持 MacOS、Windows 和 Linux 系统。

据笔者了解,诸如 PagerDuty、Target、Citadel、Trivago、SAP、Pandora、Roblox、eBay、Deluxe Entertainment等很多知名公司,均有广泛采用 Nomad 进行服务编排和资源管理。

Nomad 有什么特性?

  • 部署容器和传统应用程序 :Nomad 作为灵活的服务编排工具,使我们能够在相同的基础设施上运行容器传统应用程序批处理应用程序。对于编排传统应用程序,Nomad 无需增加额外的容器化插件。

  • 简单可靠 :Nomad 作为一个二进制文件运行,完全自包含------将资源管理和调度结合到一个单独的系统中。它不需要任何外部服务进行存储或协调。Nomad 自动处理应用程序、节点和驱动程序故障。作为分布式系统,Nomad 具有弹性,通过选举和状态复制策略来提供高可用

  • 设备插件和GPU支持 :Nomad 内置支持 GPU 工作负载,如:机器学习(ML)和人工智能(AI)。它使用设备插件自动检测并使用硬件设备资源,如:GPU、FPGA 和 TPU。

  • 多区域联合部署 :Nomad 原生支持多区域联合部署。这种内置功能允许将多个集群链接在一起,使开发人员能够将 job 部署到任何区域的任何集群。联合部署还支持跨所有集群自动复制 ACL 策略、名称空间、资源配额和哨兵策略。

  • 经验证的伸缩性 :Nomad 采用乐观并发,增加了吞吐量并降低了服务延迟。已经验证 Nomad 可在现实生产环境中扩展到10K+节点的集群(K8S v1.29 是 5k+ )。

  • 生态系统:Nomad 还可与 Terraform、Consul、Vault 无缝集成,用于提供资源调配、服务发现和秘密管理。

Nomad 能做什么事?

Docker 容器编排

越来越多的公司选择以 Docker 方式进行应用程序的部署和管理。但 Docker 方式则会涉及到编排工具来实现:任务调度、CI/CD、动态伸缩、异常恢复等功能。

Nomad 是笔者心中最优的 Docker 编排工具,比 K8S、K3S 都更好用。如果与 Consul 和 Vault 无缝集成,还能实现更加完整的解决方案,同时最大限度地提高操作灵活性。

传统应用程序部署

相信很多人都有过上云的经验,需要把传统应用程序按 Docker 的方式重新构建、打包、部署,整个流程下来既耗时,又很容易触发 Bug。而且基于 Docker 的部署策略对有的历史服务还不能生效。

针对以上问题,想要体验更好的自动化、弹性更强和成本更低部署编排。Nomad 是一个比较好的选择,因为 Nomad 本身支持直接运行传统应用程序、静态二进制文件、Java jars、QEMU 虚拟机和简单的 OS 命令。而且应用在运行时是隔离的,并以装箱的方式最大限度地提高效率和利用率(降低成本)。

微服务

Nomad 很适合于管理微服务,通过与 Consul 通过优雅地集成,很方便的实现了自动服务注册动态生成配置文件。Nomad 和 Consul 为管理微服务及遵循微服务范式提供了一个理想的解决方案。

批处理任务

Nomad 还可以本机运行批作业参数化作业,Nomad 的体系结构可以更容易的实现扩展并发调度,每秒钟可以部署数千个容器。相比之下,其他替代方案在调度吞吐量、可伸缩性和多云能力方面过于复杂并有局限性。

多区域和多云联合部署

Nomad 被设计用于处理多数据中心多区域部署,并且与云平台类型无关。这使得迁移服务和利用共有云进行服务扩展变得更加容易。

运行任何工作负载

Nomad 可以运行所有类型的工作负载,包括 Docker、非 Docker、Windows、QEMU、Java 和更多。无论您使用的是传统的虚拟机映像、Docker 容器映像、静态二进制文件还是 Java 应用程序,Nomad 都可以轻松运行。

做个小结

Nomad 真的算是一款功能强大的集群管理器,简化分布式应用程序的部署、管理和监控。以轻量级设计和高度可扩展性,可以轻松管理从单机到大规模集群的各种环境,真的太牛逼了。

以上就是本期的全部内容,笔者荒生,一名资深的技术开发,谢谢大家的观看,点赞、评论、加关注你的支持就是笔者的动力,有问题也可以私信笔者留言询问

相关推荐
哎呦没24 分钟前
大学生就业招聘:Spring Boot系统的架构分析
java·spring boot·后端
_.Switch43 分钟前
Python Web 应用中的 API 网关集成与优化
开发语言·前端·后端·python·架构·log4j
雪域迷影43 分钟前
PostgreSQL Docker Error – 5432: 地址已被占用
数据库·docker·postgresql
福大大架构师每日一题2 小时前
22.1 k8s不同role级别的服务发现
容器·kubernetes·服务发现
莹雨潇潇2 小时前
Docker 快速入门(Ubuntu版)
java·前端·docker·容器
杨哥带你写代码2 小时前
足球青训俱乐部管理:Spring Boot技术驱动
java·spring boot·后端
AskHarries3 小时前
读《show your work》的一点感悟
后端
tangdou3690986553 小时前
1分钟搞懂K8S中的NodeSelector
云原生·容器·kubernetes
A尘埃3 小时前
SpringBoot的数据访问
java·spring boot·后端
yang-23073 小时前
端口冲突的解决方案以及SpringBoot自动检测可用端口demo
java·spring boot·后端