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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/750019.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python自动化之(django)(2)

1、创建应用 python manage.py startapp apitest 这里还是从上节开始也就是命令行在所谓的autotest目录下来输入 然后可以清楚的看到 多了一个文件夹 2、创建视图 在views中加入test函数(所建应用下) from django.http import HttpResponse def tes…

基于CNN多阶段图像超分+去噪(超级简单版)

这是之前的一项工作,非常简单,简单的复现了两个算法,然后把它们串起来了。 可执行的程序链接:CSDN; Github 我们分成两部分进行讲解: 1. 图像去噪 1.1 基本思路 图像的去噪工作基于很普通的CNN去噪,效…

Swift 面试题及答案整理,最新面试题

Swift 中如何实现单例模式? 在Swift中,单例模式的实现通常采用静态属性和私有初始化方法来确保一个类仅有一个实例。具体做法是:定义一个静态属性来存储这个单例实例,然后将类的初始化方法设为私有,以阻止外部通过构造…

Ubuntu Desktop - gnome-calculator (计算器)

Ubuntu Desktop - gnome-calculator [计算器] 1. Ubuntu Software -> gnome-calculator -> Install -> Continue2. Search your computer -> Calculator -> Lock to LauncherReferences 1. Ubuntu Software -> gnome-calculator -> Install -> Continu…

STM32中MicroLIB的关闭为什么会导致卡死----解析

STM32MicroLIB 大家好我是 MHZ 。最近又开始往回捡单片机的知识了~ 之前大学的时候都没用过 STM 的 CubeMX,这会拿来用着感觉很方便啊~ 果然科技在进步! 在开发使用 Keil 对 STM32 进行开发的时候在会有一个叫做 MicroLIB 的选项。 这个的具体原因我搜…

C语言 内存函数

目录 前言 一、memcpy()函数 二、memmove()函数 三、memset函数 四、memcmp()函数 总结 前言 在C语言中内存是我们用来存储数据的地址,今天我们来讲一下C语言中常用的内存函数。 一、memcpy()函数 memcpy()函数与我们之前讲的strcpy()函数类似,只…

Android FrameWork 学习路线

目录 前言 学习路线: 1.基础知识 2、AOSP 源码学习 3. AOSP 源码编译系统 4. Hal与硬件服务 5.基础组件 6. Binder 7. 系统启动过程分析 8. 应用层框架​编辑 9. 显示系统 10. Android 输入系统 11. 系统应用 前言 Android Framework 涉及的行业相当广…

Django 解决新建表删除后无法重新创建等问题

Django 解决新建表删除后无法重新创建等问题 问题发生描述处理办法首先删除了app对应目录migrations下除 __init__.py以外的所有文件:然后,删除migrations中关于你的app的同步数据数据库记录最后,重新执行迁移插入 问题发生描述 Django创建的表&#xf…

HCIP—OSPF课后练习一

本实验模拟了一个企业网络场景,R1、R2、R3为公司总部网络的路由器,R4、R5分别为企业分支机构1和分支机构2的路由器,并且都采用双上行方式与企业总部相连。整个网络都运行OSPF协议,R1、R2、R3之间的链路位于区域0,R4与R…

uniapp 利用uni-list 和 uni-load-more 组件上拉加载列表

列表的加载动作,在移动端开发中随处可见,笔者也是经常用到。今天正好有空,做一个总结,方便以后使用。uniapp 利用uni-list 和 uni-load-more 组件上拉加载列表操作步骤如下:1、资料准备 1)、uni-load-more…

JavaWeb--HTML

一:HTML简介 *HTML是一门语言,所有的网页都是用HTML这门语言编写出来的; *HTML:超文本标记语言; 超文本:超越了文本的限制,比普通文本更强大。除了文字信息,还能定义图片&#xff…

C#对ListBox控件中的数据进行的操作

目录 1.添加数据: 2.删除数据: 3.清空数据: 4.选择项: 5.排序: 6.获取选中的项: 7.获取ListBox中的所有项: 8.综合示例 C#中对ListBox控件中的数据进行的操作主要包括添加、删除、清空、…

zookeeper快速入门二:zookeeper基本概念

本文是zookeeper系列之快速入门中的第二篇,欢迎大家观看与指出不足。 目录 一、zookeeper的存储结构 二、什么是znode 三、znode节点的四种类型 四、权限控制ACL(Access Control List) 五、事件监听watcher 一、zookeeper的存储结构 z…

Tomcat Session 集群 ---------会话保持

一、 负载均衡、反向代理 环境搭建: nginx服务器192.168.246.7 tomcat 1服务器192.168.246.8 tomcat 2服务器192.168.246.9 7-1 nginx服务器搭建 [rootzzcentos1 ~]#systemctl stop firewalld [rootzzcentos1 ~]#setenforce 0 [rootzzcentos1 ~]#yum install …

springboot“财来财往”微信小程序

摘 要 相比于以前的传统手工管理方式,智能化的管理方式可以大幅降低理财公司的运营人员成本,实现了“财来财往”的标准化、制度化、程序化的管理,有效地防止了“财来财往”的随意管理,提高了信息的处理速度和精确度,能…

NeRF学习——NeRF-Pytorch的源码解读

学习 github 上 NeRF 的 pytorch 实现项目(https://github.com/yenchenlin/nerf-pytorch)的一些笔记 1 参数 部分参数配置: 训练参数: 这段代码是在设置一些命令行参数,这些参数用于控制NeRF(Neural Radi…

OpenCV 图像重映射函数remap()实例详解

OpenCV 图像重映射函数remap()对图像应用通用几何变换。其原型如下: void remap(InputArray src, OutputArray dst, InputArray map1, InputArray map2, int interpolation, int borderMode BORDER_CONSTANT, const Scalar & borde…

回答自己一年前的一个问题,python如何动态拼接sql

首先谈谈应用场景吧,前提是针对查询接口做接口自动化,接口校验的脚本中,一般以响应报文作为预期值,通过sql查出的数据库值作为实际值,二者对比通过则认为接口输出正确。而sql从何而来呢,对于查询接口一般是…

perl 用 XML::DOM 解析 Freeplane.mm文件,生成测试用例.csv文件

Perl 官网 www.cpan.org 从 https://strawberryperl.com/ 下载网速太慢了 建议从 https://download.csdn.net/download/qq_36286161/87892419 下载 strawberry-perl-5.32.1.1-64bit.zip 约105MB 解压后安装.msi,装完后有520MB,建议安装在D:盘。 运行 …

HarmonyOS NEXT应用开发—组件堆叠

介绍 本示例介绍运用Stack组件以构建多层次堆叠的视觉效果。通过绑定Scroll组件的onScroll滚动事件回调函数,精准捕获滚动动作的发生。当滚动时,实时地调节组件的透明度、高度等属性,从而成功实现了嵌套滚动效果、透明度动态变化以及平滑的组…