Nomad — HashiCorp 的"Kubernetes 杀手"还是最佳替代品?

> 一句话版本:一个轻量级工作负载编排器,单个二进制文件就能部署容器、虚拟机、Java 应用和传统程序。比 Kubernetes 简单 10 倍,能管理 10K+ 节点,但 2023 年改为 BSL 许可证后社区开始分裂。

项目信息
来源https://github.com/hashicorp/nomad
官网https://developer.hashicorp.com/nomad
作者HashiCorp
创建时间2015-06-01
Stars16,414Forks 2,073
语言Go
许可证BSL 1.1(2023-08 起从 MPL 2.0 更改)
最新推送2026-04-14(持续活跃)
生产用户PagerDuty、Target、SAP、Roblox、eBay、Citadel、Trivago、Pandora

核心内容

一、Nomad 是什么?

Nomad 是一个通用工作负载编排器,核心能力是在一组机器上调度和运行应用程序。与 Kubernetes 专注于容器不同,Nomad 可以运行:

工作负载类型任务驱动(Task Driver)
Docker 容器`docker`
Podman 容器`podman`(社区插件)
Java 应用`java`
虚拟机`qemu`
原生二进制`exec` / `raw exec`
隔离进程`isolated exec`(chroot + namespace)
LXC/Singularity社区插件

关键卖点:单个二进制文件。不需要 etcd、不需要一堆组件,下载一个二进制就能跑起来。

二、架构设计


┌─────────────────────────────────────────────┐
│ Nomad Server(3-5 个,Raft 共识)           │
│ ├── Leader 选举                              │
│ ├── Job 调度(bin packing)                  │
│ ├── 状态管理(内置 Raft,无需 etcd)          │
│ └── API + CLI + Web UI                      │
├─────────────────────────────────────────────┤
│ Nomad Client(每个节点一个)                 │
│ ├── 任务驱动(Docker/QEMU/Java/Exec...)     │
│ ├── 资源上报(CPU/Memory/Disk/GPU)          │
│ ├── Device Plugins(GPU/FPGA/TPU)          │
│ └── 健康检查 + 自动恢复                      │
├─────────────────────────────────────────────┤
│ 集成(可选)                                 │
│ ├── Consul → 服务发现 + Service Mesh         │
│ ├── Vault → 密钥管理 + 动态凭证              │
│ ├── Terraform → 基础设施编排                 │
│ └── HCP Waypoint → 应用生命周期管理           │
└─────────────────────────────────────────────┘

三、核心特性

1. Job Specification(HCL 格式)

一个 Nomad Job 文件定义一个完整应用,不像 Kubernetes 需要 Deployment + Service + ConfigMap + Secret 多个文件:


job "web" {
  datacenters = ["dc1"]
  group "web" {
    count = 3
    task "nginx" {
      driver = "docker"
      config {
        image = "nginx:latest"
      }
      resources {
        cpu    = 500
        memory = 256
      }
      service {
        name = "web"
        port = "http"
      }
    }
  }
}

2. 三种 Job 类型

类型用途特点
Service长期运行服务自动重启、滚动更新、健康检查
Batch批处理任务运行完即退出,支持参数化
System每节点一个DaemonSet 等价物

3. Bin Packing 调度

Nomad 使用 bin packing 算法(尽量填满节点),而不是 Kubernetes 的 spread 策略(尽量分散)。优势:资源利用率更高,需要的节点更少。

4. 多区域联邦(Federation)

原生支持跨区域部署:

5. GPU / AI 工作负载

通过 Device Plugins 支持 GPU、FPGA、TPU:

6. 可扩展性数据

指标数据
单集群最大节点10,000+(生产验证)
调度速度数千容器/秒
乐观并发控制高吞吐、低延迟
Server 推荐数量3 或 5(Raft 共识)

四、Nomad vs Kubernetes

维度NomadKubernetes
部署复杂度单二进制,零外部依赖6+ 组件(etcd、api-server、scheduler...)
运维成本低,Operator 友好高,需要专职团队
工作负载类型容器 + 虚拟机 + 原生仅容器
生态系统HashiCorp 全家桶CNCF 庞大生态
学习曲线低(HCL 语法 + 单文件)高(100+ API 对象)
规模上限10K+ 节点5K 节点(官方上限)
服务发现Consul(可选)CoreDNS(内置)
密钥管理Vault(可选)Secrets(内置但简单)
社区规模较小庞大
Windows 支持原生支持(复杂)
多集群联邦原生成熟实验性

五、BSL 许可证变更(2023-08)

这是 Nomad 最大的转折点

2023 年 8 月,HashiCorp 宣布所有核心产品(包括 Nomad、Terraform、Vault、Consul)从 MPL 2.0(真正开源)改为 BSL 1.1(Business Source License):

六、生态与集成

HashiCorp 全家桶


Terraform → 基础设施创建(云资源、网络、安全组)
    ↓
Packer → 镜像构建(AMI、Docker Image)
    ↓
HCP Waypoint → 应用构建 + 部署(PaaS 抽象层)
    ↓
Nomad → 工作负载编排(运行应用)
    ↓
Consul → 服务发现 + Service Mesh
    ↓
Vault → 密钥管理 + 动态凭证
    ↓
Boundary → 零信任访问控制

Sentinel 策略即代码

分析

优势

1. 极简运维:单二进制部署,没有 etcd 爆炸半径,运维成本比 K8s 低一个数量级

2. 真正通用:不只是容器编排,能运行任何类型的工作负载

3. 生产验证:PagerDuty、Roblox、SAP 等大厂在生产环境运行 10K+ 节点

4. 资源效率:bin packing 调度,同等负载需要的节点更少

5. 多区域成熟:联邦方案经过生产验证,比 K8s Federation 靠谱得多

6. GPU 原生:AI/ML 工作负载调度有专门支持

7. HCL 一致性:Terraform 用户零学习成本

劣势与风险

1. BSL 许可证:不再是真正的开源,云厂商和竞争产品受限

2. 社区规模:相比 K8s 生态小得多,第三方集成少

3. 没有 OpenTofu 级 Fork:如果 HashiCorp 出问题,社区无力接管

4. HashiCorp 依赖:最佳实践依赖 Consul + Vault,全部 BSL 许可

5. Windows 支持虽然原生但生态弱:文档和社区经验集中在 Linux

6. K8s 惯性:大多数企业和招聘市场已锁定 Kubernetes

7. Waypoint 发展缓慢:PaaS 抽象层进展不如预期

与 Jay 的关联

评分

维度评分 (1-10)说明
技术质量9Go 实现、Raft 共识、10K 节点生产验证
架构设计9单二进制 + Unix 哲学 + 插件化,优雅
易用性8HCL 单文件定义,比 K8s 简单很多
生态系统6HashiCorp 全家桶强,但外部生态弱于 K8s
社区活力6BSL 后社区有分裂风险,无 OpenTofu 级 Fork
创新性7通用工作负载调度理念领先,但不是新项目
许可证4BSL 1.1 不再是真正开源
与 Jay 的关联5当前单机不需要,多节点扩展时有价值
**总分****6.8**技术上优秀但 BSL 和 K8s 惯性是最大障碍

附录:什么时候选 Nomad 而不是 Kubernetes?

场景推荐
需要跑容器 + 虚拟机 + 传统应用✅ Nomad
小团队(< 5 人运维)✅ Nomad
已用 Terraform + Consul + Vault✅ Nomad
需要多区域联邦✅ Nomad
需要庞大 CNCF 生态❌ Kubernetes
需要 Helm Charts 生态❌ Kubernetes
需要 K8s 认证求职❌ Kubernetes
大企业 + 专职运维团队两者皆可