Containerd no pudo iniciarse después de la configuración de Nvidia

Containerd no pudo iniciarse después de la configuración de Nvidia

He seguido estotutorial oficialpara permitir que un clúster k8s básico tenga acceso a GPU. Sin embargo, recibí errores al hacerlo.

Kubernetes 1.21 en contenedor 1.4.11 y Ubuntu 20.04.3 LTS (GNU/Linux 5.4.0-91-generic x86_64).

El controlador Nvidia está preinstalado en el sistema operativo con la versión 495 sin cabeza

Después de pegar la siguiente configuración /etc/containerd/config.tomly reiniciar el servicio, Containerd no pudo comenzar con exit 1.

En contenedorConfig.toml

registro del sistemaaquí.

# persistent data location
root = "/var/lib/containerd"
# runtime state information
state = "/run/containerd"

# Kubernetes doesn't use containerd restart manager.
disabled_plugins = ["restart"]

# NVIDIA CONFIG START HERE

version = 2
[plugins]
  [plugins."io.containerd.grpc.v1.cri"]
    [plugins."io.containerd.grpc.v1.cri".containerd]
      default_runtime_name = "nvidia"

      [plugins."io.containerd.grpc.v1.cri".containerd.runtimes]
        [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.nvidia]
          privileged_without_host_devices = false
          runtime_engine = ""
          runtime_root = ""
          runtime_type = "io.containerd.runc.v2"
          [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.nvidia.options]
            BinaryName = "/usr/bin/nvidia-container-runtime"

# NVIDIA CONFIG ENDS HERE

[debug]
  level = ""

[grpc]
  max_recv_message_size = 16777216
  max_send_message_size = 16777216

[plugins.linux]
  shim = "/usr/bin/containerd-shim"
  runtime = "/usr/bin/runc"

Puedo confirmar que el controlador Nvidia detecta la GPU (Nvidia GTX 750Ti) al ejecutarlo nvidia-smiy obtuve el siguiente resultado

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 495.44       Driver Version: 495.44       CUDA Version: 11.5     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  NVIDIA GeForce ...  Off  | 00000000:02:00.0 Off |                  N/A |
| 34%   34C    P8     1W /  38W |      0MiB /  2000MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+

modificadoconfig.tomleso lo hizo funcionar.

Respuesta1

Lo mejor que puedo decir es esto:

02 de diciembre 03:15:36 k8s-node0 containerd[2179737]: containerd: URI de complemento deshabilitado no válido "reiniciar" se espera io.containerd.x.vx

02 de diciembre 03:15:36 k8s-node0 systemd[1]: containerd.service: proceso principal salido, código = salido, estado = 1/FALLO

Así que si ustedsaberPara comprobar que el restartcomplemento -ish está habilitado, necesitarás localizar su nueva sintaxis de URI, pero en realidad recomendaría simplemente comentar esa estrofa o usar disabled_plugins = [], ya queel rol ansible contenedorque usamos no menciona nada sobre "reiniciar" y tiene el = []sabor


Tangencialmente, es posible que desee restringir su journalctlinvocación en el futuro para simplemente mirar el archivo containerd.service, ya que descartarámuchode texto que es una distracción: journalctl -u containerd.servicee incluso puedes restringirlo solo a las últimas líneas, lo que a veces puede ayudar aún más:journalctl -u containerd.service --lines=250

información relacionada