Nomad
Nomad 是一个工作负载编排器,用于部署和管理容器化和非容器化应用程序。
安装
已知问题
不支持 NVIDIA
由于无法禁用不存在的驱动程序加载,NVIDIA 支持已被禁用。当使用 NVIDIA 支持编译时,实例会立即崩溃并显示以下错误
/usr/bin/nomad: undefined symbol: nvmlDeviceGetGraphicsRunningProcesses
NVIDIA 驱动程序插件将被外部化,请参阅 GitHub issue #8330。
默认插件目录
默认插件目录 /var/lib/nomad/plugins
已更改为 /usr/lib/nomad/plugins
以反映 FHS。
配置
Nomad 在启动时加载 /etc/nomad.d
目录中的所有配置文件。
请参阅 https://learn.hashicorp.com/tutorials/nomad/security-enable-tls 以设置 Nomad 的 TLS 加密。
服务器
在 /etc/nomad.d/server.hcl
创建一个配置文件
注意: 将
bootstrap_expect
值替换为您要部署的 Nomad 服务器的数量;建议使用三个或五个。/etc/nomad.d/server.hcl
server { enabled = true bootstrap_expect = 3 }
客户端
在 /etc/nomad.d/client.hcl
创建一个配置文件
/etc/nomad.d/client.hcl
client { enabled = true }
任务驱动程序
任务驱动程序 由 Nomad 客户端用于执行任务并提供资源隔离。
Nomad 开箱即用地支持以下任务驱动程序
- Docker(需要 docker)
- Java(需要 jre-openjdk 或 jre-openjdk-headless)
- QEMU(需要 qemu-desktop)
exec
&raw_exec
containerd
为了使用 containerd 驱动程序,安装 nomad-driver-containerd 软件包。
在客户端配置中启用插件,然后重新加载 nomad.service
。
/etc/nomad.d/containerd.hcl
plugin "containerd-driver" { config { # Arch Linux uses cgroups v2 by default # For cgroups v1, use "io.containerd.runc.v1" containerd_runtime = "io.containerd.runc.v2" } }
注意: 更多配置参数可以在 上游文档 中找到。
podman
为了使用 podman 驱动程序,安装 nomad-driver-podman。
Nomad 需要 启动 podman.service
。
注意:
podman.service
也可以作为用户 systemd 单元启动。在客户端配置中启用驱动程序,然后重新加载 nomad.service
。
/etc/nomad.d/podman.hcl
plugin "nomad-driver-podman" { config { # Archlinux socket path for podman differs from the default value of socket_path (unix://run/podman/io.podman) socket_path = "unix://run/podman/podman.sock" # In case podman.service was started as user socket_path = "unix://run/user/USER_UID/podman/podman.sock" } }
注意: 更多配置参数可以在 上游文档 中找到。