nomad的部署,粒度级别为:jobgrouptaskalloc。每个HCL描述文件中描述单一一个job,每个job中可以有多个group,每个group下可以有多个task,每个task执行多个alloc。job对应于swarm中的stack,task对应于service,alloc对应于容器实例。

Swarm中并没有group这个玩意,nomad的group表示task在client上的分组,一个group内的task,运行于同一个client上。

HCL的语法类似于json,可以认为是json的超集,实际上HCL也确实会被解析成json并发送给nomad的HTTP API。

常用

每个符合条件的机器只跑一个实例(Group)

设置 job 的 type 为 system。然后在 group 范围内设置:

    constraint {
      distinct_hosts = true
    }

参考:Github

一些文章