一款比 K8S 更好用的编排工具——Nomod 单机部署

上下文

最近公司需要调研类似 EMCHub 这样支持算力共享的服务。第一直觉是使用 K8S 或 K3S,作为 CNCF 孵化的顶级项目,同时也是当前云原生生态使用最广的编排系统。但是在学习 EMC Hub 源码过程中,偶然发现它是基于 Nomad 做的集群管理。

相比之下,Nomad 更加轻量级,支持的编排能力也更全面。最优秀的是,体积只有 40 多兆,能很方便的集成到各种业务环境中。

Nomad 简介

Nomad 是一款基于开源,功能强大的调度程序和集群编排引擎。可以轻松管理从单机到大规模集群的各种容器和非容器化应用程序,实现快速部署和跨平台运行。

Nomad 主要特点

  • 作为单个二进制文件运行,资源占用少,
  • 支持将资源管理和调度集成到一个单独的系统中,
  • 支持多种驱动程序运行 job,包括 Windows、Java、VM、Docker 等,
  • 支持分布式和高可用,
  • 支持多数据中心,可以跨数据中心调度,
  • 强大的可伸缩性,可在现实生产环境中扩展到10K+节点的集群(K8S v1.29 是 5k+ ),
  • 支持插件功能,可与 Terraform、Consul、Vault 无缝集成,用于提供资源调配、服务发现和秘密管理。

Nomad 部署

我们还是以 Docker 环境进行介绍

安装 Docker

shell 复制代码
# 1. 下载 Docker Desktop 并安装
# 下载地址:https://docs.docker.com/desktop/install/mac-install/

# 2.验证 Docker
sudo docker version

配置 Nomad

选择项目目录 nomad-bootcamp,下载 Nomad 二进制文件,并选择适合你系统的安装包。

我们采用 Mac 环境和二进制文件的方式使用。其他安装方式见:developer.hashicorp.com/nomad/insta...

shell 复制代码
# 项目目录
mkdir example_03 && cd example_03

# 下载安装包
curl -O 'https://releases.hashicorp.com/nomad/1.7.6/nomad_1.7.6_darwin_arm64.zip'

# 解压安装包
unzip nomad_1.7.6_darwin_arm64.zip && rm -rf nomad_1.7.6_darwin_arm64.zip

# 验证安装包
./nomad --version

# 输出版本信息
# 
# Nomad v1.7.6
# BuildDate 2024-03-12T07:27:36Z
# Revision 594fedbfbc4f0e532b65e8a69b28ff9403eb822e

启动 Nomad

Nomad 一般可分为三部分:Server、Client和Job,他们之间的关系是Server 将 Job 调度到 Client 进行执行。

Nomad 根据 .hcl 文件的配置执行,以下是我们生成的一个 Server 和 Client 的启动配置文件。

shell 复制代码
# data_dir 为绝对路径
data_dir  = "/Users/xxx/nomad-bootcamp/example_03/data"

bind_addr = "0.0.0.0"

server {
  enabled          = "true"
  bootstrap_expect = 1
}

client {
  enabled = "true"
  servers = ["0.0.0.0"]
}

其他配置编写见:developer.hashicorp.com/nomad/docs/...

加载配置文件,启动 Server 和 Client 节点。

shell 复制代码
./nomad agent -config nomad.hcl

使用 WebUI

官方支持了一款简洁的 UI 界面,访问http://127.0.0.1:4646/ui,即可进入我们的 WebUI 管理界面

以下我们尝试通过 WebUI 运行一个 Job,具体是:点击 Jobs -> Run Job

Run Job包含上传配置文件和使用模版配置两种方式,我们选择模版方式运行

从 templates 中选择 Hello World 模版并且执行它

等待部署完成

之后 点击 Allocations -> 选中具体任务,就可以找到系统为 Job 分配的 IP 和端口号

点击链接,即可访问得到你部署的服务内容

以上就是本期的全部内容,主要演示通过 Nomad 配置文件启动集群和通过 UI 进行 Job 任务的执行。笔者荒生,一名资深的技术开发,谢谢大家的观看,点赞、评论、加关注你的支持就是笔者的动力,有问题也可以私信笔者留言询问

相关推荐
kfyty7253 小时前
不依赖第三方,不销毁重建,loveqq 框架如何原生实现动态线程池?
java·架构
刘立军4 小时前
本地大模型编程实战(33)用SSE实现大模型的流式输出
架构·langchain·全栈
一直_在路上4 小时前
Go 语言微服务演进路径:从小型项目到企业级架构
架构·go
智能化咨询8 小时前
Kafka架构:构建高吞吐量分布式消息系统的艺术——进阶优化与行业实践
分布式·架构·kafka
七夜zippoe8 小时前
缓存与数据库一致性实战手册:从故障修复到架构演进
数据库·缓存·架构
青鱼入云10 小时前
【面试场景题】支付&金融系统与普通业务系统的一些技术和架构上的区别
面试·金融·架构
gtGsl_10 小时前
深入解析 Apache RocketMQ架构组成与核心组件作用
架构·rocketmq·java-rocketmq
SmartBrain13 小时前
DeerFlow 实践:华为IPD流程的评审智能体设计
人工智能·语言模型·架构
一水鉴天18 小时前
整体设计 之 绪 思维导图引擎 之 引 认知系统 之 序 认知元架构 从 三种机器 和 PropertyType 到认知 金字塔 之2(豆包助手)
架构·认知科学
程思扬1 天前
利用JSONCrack与cpolar提升数据可视化及跨团队协作效率
网络·人工智能·经验分享·docker·信息可视化·容器·架构