一款比 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…

C/C++蓝桥杯之卡片问题

问题描述:小兰有很多数字卡片,每张卡片上都是数字0~9。 小兰,准备用这些卡片拼一些数。她想从1开始拼出正整数,每拼一个就保存起来,卡片就不能再用来拼其他数了。 小兰想知道自己能从1拼到多少。 例如&a…

在Swift中集成Socket.IO进行实时通信

在Swift中集成Socket.IO进行实时通信 实时通信是许多现代应用程序的重要组成部分,从聊天应用程序到协作平台。Socket.IO 是一个流行的库,用于在 Web 和移动应用程序中实现实时的双向通信。在本文中,我们将讨论如何使用 Socket.IO-Client-Swi…

Rust的所有权和生命周期机制的本质

目录 所有权机制生命周期机制Rust的堆和栈堆和栈内存分配方式内存管理方式内存分配速度内存大小限制 Rust的所有权和生命周期机制的本质是关于数据在堆和栈中的存储方式。这两个概念是为了解决内存管理和资源分配的问题。 所有权机制 所有权机制确保每个值都有唯一的所有者&a…

基于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…

ubuntu开机启动时,如何随着ubuntu的启动指定qt程序使用普通用户运行?

要在Ubuntu开机启动时指定QT程序使用普通用户运行,您可以通过编辑/etc/xdg/autostart目录下的.desktop文件来实现。以下是详细步骤: 创建启动项:在/etc/xdg/autostart目录下创建一个新的.desktop文件。这个文件将包含启动您的QT程序的命令。…

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

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

JavaWeb--HTML

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

Android 设计模式单例

懒加载模式 (使用双重检查锁定)1、双重检查锁定(double checked locking)通常用于延迟初始化单例对象,以提高性能,避免不必要的同步。2、我们首先检查instance是否为null,如果是,我们同步并再次检查instance是否为null,如果仍为null,我们才创建新的实例。 3、这样既能确…

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…

Linux之shell条件判断

华子目录 if语句单分支案例 双分支案例 多分支 case多条件判断格式执行过程示例 if语句 单分支 # 语法1&#xff1a; if <条件表达式> then指令 fi#语法2&#xff1a; if <条件表达式>;then指令 fi案例 编写脚本choice1.sh,利用单分支结构实现输入2个整数&#…

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

一、 负载均衡、反向代理 环境搭建&#xff1a; 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 …