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"
}
}
注意: 更多配置参数可以在 上游文档 中找到。