Skip to content

Commit d0ea56c

Browse files
authored
Merge pull request #459 from sky1122/enable-cdi-k8s-containerd
Support both CDI and Legacy NVIDIA Container Runtime modes
2 parents 6e58d33 + 9a3ba69 commit d0ea56c

File tree

2 files changed

+39
-4
lines changed

2 files changed

+39
-4
lines changed
Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,39 @@
11
[required-extensions]
22
nvidia-container-runtime = "v1"
3-
std = { version = "v1", helpers = ["default"] }
3+
kubelet-device-plugins = "v1"
4+
std = { version = "v1", helpers = ["default", "is_array"] }
45

56
+++
67
### generated from the template file ###
78
accept-nvidia-visible-devices-as-volume-mounts = {{default true settings.nvidia-container-runtime.visible-devices-as-volume-mounts}}
89
accept-nvidia-visible-devices-envvar-when-unprivileged = {{default false settings.nvidia-container-runtime.visible-devices-envvar-when-unprivileged}}
9-
1010
[nvidia-container-cli]
1111
root = "/"
1212
path = "/usr/bin/nvidia-container-cli"
1313
environment = []
1414
ldconfig = "@/sbin/ldconfig"
15+
16+
[nvidia-container-runtime]
17+
{{#if settings.kubelet-device-plugins.nvidia.device-list-strategy}}
18+
{{~#if (is_array settings.kubelet-device-plugins.nvidia.device-list-strategy) ~}}
19+
{{~#if (eq settings.kubelet-device-plugins.nvidia.device-list-strategy.[0] "cdi-cri") ~}}
20+
mode="cdi"
21+
{{~else~}}
22+
mode="legacy"
23+
{{~/if~}}
24+
{{~else~}}
25+
{{~#if (eq settings.kubelet-device-plugins.nvidia.device-list-strategy "cdi-cri") ~}}
26+
mode="cdi"
27+
{{~else~}}
28+
mode="legacy"
29+
{{~/if~}}
30+
{{/if}}
31+
{{else}}
32+
mode="legacy"
33+
{{/if}}
34+
35+
[nvidia-container-runtime-hook]
36+
# For the legacy NVIDIA runtime, skip detecting the mode used in the
37+
# NVIDA Container Runtime. This prevents failures in the legacy NVIDIA runtime
38+
# when the selected mode is 'cdi'.
39+
skip-mode-detection = true

packages/nvidia-k8s-device-plugin/nvidia-k8s-device-plugin-conf

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[required-extensions]
22
kubelet-device-plugins = "v1"
3-
std = { version = "v1", helpers = ["default"] }
3+
std = { version = "v1", helpers = ["default", "join_array", "is_array"] }
44

55
+++
66
version: v1
@@ -15,10 +15,20 @@ flags:
1515
migStrategy: "none"
1616
{{/if}}
1717
failOnInitError: true
18+
nvidiaDriverRoot: "/"
1819
plugin:
1920
passDeviceSpecs: {{default true settings.kubelet-device-plugins.nvidia.pass-device-specs}}
20-
deviceListStrategy: {{default "volume-mounts" settings.kubelet-device-plugins.nvidia.device-list-strategy}}
21+
{{#if settings.kubelet-device-plugins.nvidia.device-list-strategy}}
22+
{{#if (is_array settings.kubelet-device-plugins.nvidia.device-list-strategy)}}
23+
deviceListStrategy: [{{join_array "," settings.kubelet-device-plugins.nvidia.device-list-strategy }}]
24+
{{else}}
25+
deviceListStrategy: {{settings.kubelet-device-plugins.nvidia.device-list-strategy}}
26+
{{/if}}
27+
{{else}}
28+
deviceListStrategy: "volume-mounts"
29+
{{/if}}
2130
deviceIDStrategy: {{default "index" settings.kubelet-device-plugins.nvidia.device-id-strategy}}
31+
containerDriverRoot: "/"
2232
{{#if settings.kubelet-device-plugins.nvidia.device-sharing-strategy}}
2333
{{#if (eq settings.kubelet-device-plugins.nvidia.device-sharing-strategy "time-slicing")}}
2434
sharing:

0 commit comments

Comments
 (0)