Nomad

来自 ArchWiki

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 开箱即用地支持以下任务驱动程序

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

参见