From 11cf3a5cf796da19b9f33af63fcbf8992a4d5615 Mon Sep 17 00:00:00 2001 From: Christopher Desiniotis Date: Tue, 13 Feb 2024 14:58:22 -0800 Subject: [PATCH] Set runtimeClass for operands unless CRI-O is the runtime and CDI is disabled Signed-off-by: Christopher Desiniotis --- controllers/object_controls.go | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/controllers/object_controls.go b/controllers/object_controls.go index 07114c39f..fb87757a4 100644 --- a/controllers/object_controls.go +++ b/controllers/object_controls.go @@ -824,7 +824,7 @@ func TransformGPUDiscoveryPlugin(obj *appsv1.DaemonSet, config *gpuv1.ClusterPol } // set RuntimeClass for supported runtimes - setRuntimeClass(&obj.Spec.Template.Spec, n.runtime, config.Operator.RuntimeClass) + setRuntimeClass(&obj.Spec.Template.Spec, n, config.Operator.RuntimeClass) // update env required for MIG support applyMIGConfiguration(&(obj.Spec.Template.Spec.Containers[0]), config.MIG.Strategy) @@ -1270,7 +1270,7 @@ func TransformDevicePlugin(obj *appsv1.DaemonSet, config *gpuv1.ClusterPolicySpe } // set RuntimeClass for supported runtimes - setRuntimeClass(&obj.Spec.Template.Spec, n.runtime, config.Operator.RuntimeClass) + setRuntimeClass(&obj.Spec.Template.Spec, n, config.Operator.RuntimeClass) // update env required for MIG support applyMIGConfiguration(&(obj.Spec.Template.Spec.Containers[0]), config.MIG.Strategy) @@ -1472,7 +1472,7 @@ func TransformDCGMExporter(obj *appsv1.DaemonSet, config *gpuv1.ClusterPolicySpe } // set RuntimeClass for supported runtimes - setRuntimeClass(&obj.Spec.Template.Spec, n.runtime, config.Operator.RuntimeClass) + setRuntimeClass(&obj.Spec.Template.Spec, n, config.Operator.RuntimeClass) // mount configmap for custom metrics if provided by user if config.DCGMExporter.MetricsConfig != nil && config.DCGMExporter.MetricsConfig.Name != "" { @@ -1589,7 +1589,7 @@ func TransformDCGM(obj *appsv1.DaemonSet, config *gpuv1.ClusterPolicySpec, n Clu } // set RuntimeClass for supported runtimes - setRuntimeClass(&obj.Spec.Template.Spec, n.runtime, config.Operator.RuntimeClass) + setRuntimeClass(&obj.Spec.Template.Spec, n, config.Operator.RuntimeClass) return nil } @@ -1639,7 +1639,7 @@ func TransformMIGManager(obj *appsv1.DaemonSet, config *gpuv1.ClusterPolicySpec, } // set RuntimeClass for supported runtimes - setRuntimeClass(&obj.Spec.Template.Spec, n.runtime, config.Operator.RuntimeClass) + setRuntimeClass(&obj.Spec.Template.Spec, n, config.Operator.RuntimeClass) // set ConfigMap name for "mig-parted-config" Volume for i, vol := range obj.Spec.Template.Spec.Volumes { @@ -1948,7 +1948,7 @@ func TransformValidator(obj *appsv1.DaemonSet, config *gpuv1.ClusterPolicySpec, } // set RuntimeClass for supported runtimes - setRuntimeClass(&obj.Spec.Template.Spec, n.runtime, config.Operator.RuntimeClass) + setRuntimeClass(&obj.Spec.Template.Spec, n, config.Operator.RuntimeClass) var validatorErr error // apply changes for individual component validators(initContainers) @@ -2280,13 +2280,18 @@ func getRuntimeClass(config *gpuv1.ClusterPolicySpec) string { return DefaultRuntimeClass } -func setRuntimeClass(podSpec *corev1.PodSpec, runtime gpuv1.Runtime, runtimeClass string) { - if runtime == gpuv1.Containerd { - if runtimeClass == "" { - runtimeClass = DefaultRuntimeClass - } - podSpec.RuntimeClassName = &runtimeClass +// setRuntimeClass sets the runtimeClass for a pod, unless CRI-O is the container runtime +// being used and CDI is not enabled. In this case, an OCI hook is used and the nvidia +// runtime is not configured. +func setRuntimeClass(podSpec *corev1.PodSpec, n ClusterPolicyController, runtimeClass string) { + if n.runtime == gpuv1.CRIO && !n.singleton.Spec.CDI.IsEnabled() { + return + } + + if runtimeClass == "" { + runtimeClass = DefaultRuntimeClass } + podSpec.RuntimeClassName = &runtimeClass } func setContainerProbe(container *corev1.Container, probe *gpuv1.ContainerProbeSpec, probeType ContainerProbe) {