
我已經關注了這個官方教程允許裸機 k8s 叢集具有 GPU 存取權限。但是我在這樣做時收到了錯誤。
Kubernetes 1.21 containerd 1.4.11 和 Ubuntu 20.04.3 LTS (GNU/Linux 5.4.0-91-generic x86_64)。
Nvidia 驅動程式預先安裝在版本 495 Headless 的系統作業系統上
將以下設定貼到裡面/etc/containerd/config.toml
並執行服務重新啟動後,containerd 將無法啟動exit 1
。
貨櫃設定檔
系統日誌這裡。
# 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"
我可以透過執行確認 Nvidia 驅動程式確實偵測到 GPU (Nvidia GTX 750Ti)nvidia-smi
並獲得以下輸出
+-----------------------------------------------------------------------------+
| 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 |
+-----------------------------------------------------------------------------+
修改的設定檔這讓它發揮作用。
答案1
據我所知,是這樣的:
12 月 2 日 03:15:36 k8s-node0 containerd[2179737]:containerd:無效的禁用插件 URI「重新啟動」期望 io.containerd.x.vx
12 月 2 日 03:15:36 k8s-node0 systemd[1]:containerd.service:主程序已退出,代碼=已退出,狀態=1/FAILURE
所以如果你知道-ish外掛程式restart
實際上已啟用,您需要追蹤其新的 URI 語法,但我實際上建議僅註解掉該節,或使用disabled_plugins = []
,因為Containerd ansible 角色我們使用的沒有提及任何有關“重新啟動”的內容,並且確實具有= []
風味
切線,你可能希望限制你journalctl
將來的呼叫只查看containerd.service
,因為它會拋出很多分散注意力的文字:journalctl -u containerd.service
您甚至可以將其限制為僅最後幾行,這有時可以提供進一步幫助:journalctl -u containerd.service --lines=250