Containerd falhou ao iniciar após Nvidia Config

Containerd falhou ao iniciar após Nvidia Config

Eu segui issotutorial oficialpara permitir que um cluster k8s bare-metal tenha acesso à GPU. No entanto, recebi erros ao fazer isso.

Kubernetes 1.21 containerd 1.4.11 e Ubuntu 20.04.3 LTS (GNU/Linux 5.4.0-91-genérico x86_64).

O driver Nvidia está pré-instalado no sistema operacional com versão 495 Headless

Depois de colar a seguinte configuração dentro /etc/containerd/config.tomle executar a reinicialização do serviço, o containerd falharia ao iniciar com exit 1.

ContêinerConfiguração.toml

registro do sistemaaqui.

# 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"

Posso confirmar que o driver da Nvidia detecta a GPU (Nvidia GTX 750Ti) em execução nvidia-smie obteve a seguinte saída

+-----------------------------------------------------------------------------+
| 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                                                 |
+-----------------------------------------------------------------------------+

modificadoconfiguração.tomlisso fez com que funcionasse.

Responder1

Pelo que posso dizer, é o seguinte:

02 de dezembro 03:15:36 k8s-node0 containerd [2179737]: containerd: URI do plugin desativado inválido "reiniciar" espera io.containerd.x.vx

02 de dezembro 03:15:36 k8s-node0 systemd [1]: containerd.service: processo principal encerrado, código = encerrado, status = 1/FAILURE

Então, se vocêsaberque o restartplug-in -ish está de fato ativado, você precisará rastrear sua nova sintaxe de URI, mas na verdade eu recomendo apenas comentar essa estrofe ou usar disabled_plugins = [], já quea função containerd ansibleque usamos não menciona nada sobre "reiniciar" e tem o = []sabor


Tangencialmente, você pode querer restringir sua journalctlinvocação no futuro apenas para olhar para containerd.service, já que isso irá descartarbastantede texto que é uma distração: journalctl -u containerd.servicee você pode até restringi-lo apenas às últimas linhas, o que às vezes pode ajudar ainda mais:journalctl -u containerd.service --lines=250

informação relacionada