@@ -714,7 +714,6 @@ func preProcessDaemonSet(obj *appsv1.DaemonSet, n ClusterPolicyController) error
714714 "nvidia-mig-manager" : TransformMIGManager ,
715715 "nvidia-operator-validator" : TransformValidator ,
716716 "nvidia-sandbox-validator" : TransformSandboxValidator ,
717- "nvidia-kata-manager" : TransformKataManager ,
718717 "nvidia-cc-manager" : TransformCCManager ,
719718 }
720719
@@ -2023,83 +2022,6 @@ func TransformMIGManager(obj *appsv1.DaemonSet, config *gpuv1.ClusterPolicySpec,
20232022 return nil
20242023}
20252024
2026- // TransformKataManager transforms Kata Manager daemonset with required config as per ClusterPolicy
2027- func TransformKataManager (obj * appsv1.DaemonSet , config * gpuv1.ClusterPolicySpec , n ClusterPolicyController ) error {
2028- // update image
2029- image , err := gpuv1 .ImagePath (& config .KataManager )
2030- if err != nil {
2031- return err
2032- }
2033- obj .Spec .Template .Spec .Containers [0 ].Image = image
2034-
2035- // update image pull policy
2036- obj .Spec .Template .Spec .Containers [0 ].ImagePullPolicy = gpuv1 .ImagePullPolicy (config .KataManager .ImagePullPolicy )
2037-
2038- // set image pull secrets
2039- if len (config .KataManager .ImagePullSecrets ) > 0 {
2040- addPullSecrets (& obj .Spec .Template .Spec , config .KataManager .ImagePullSecrets )
2041- }
2042-
2043- // set resource limits
2044- if config .KataManager .Resources != nil {
2045- // apply resource limits to all containers
2046- for i := range obj .Spec .Template .Spec .Containers {
2047- obj .Spec .Template .Spec .Containers [i ].Resources .Requests = config .KataManager .Resources .Requests
2048- obj .Spec .Template .Spec .Containers [i ].Resources .Limits = config .KataManager .Resources .Limits
2049- }
2050- }
2051-
2052- // set arguments if specified for mig-manager container
2053- if len (config .KataManager .Args ) > 0 {
2054- obj .Spec .Template .Spec .Containers [0 ].Args = config .KataManager .Args
2055- }
2056-
2057- // mount artifactsDir
2058- artifactsDir := DefaultKataArtifactsDir
2059- if config .KataManager .Config .ArtifactsDir != "" {
2060- artifactsDir = config .KataManager .Config .ArtifactsDir
2061- }
2062-
2063- // set env used by readinessProbe to determine path to kata-manager pid file.
2064- setContainerEnv (& (obj .Spec .Template .Spec .Containers [0 ]), "KATA_ARTIFACTS_DIR" , artifactsDir )
2065-
2066- artifactsVolMount := corev1.VolumeMount {Name : "kata-artifacts" , MountPath : artifactsDir }
2067- obj .Spec .Template .Spec .Containers [0 ].VolumeMounts = append (obj .Spec .Template .Spec .Containers [0 ].VolumeMounts , artifactsVolMount )
2068-
2069- artifactsVol := corev1.Volume {Name : "kata-artifacts" , VolumeSource : corev1.VolumeSource {HostPath : & corev1.HostPathVolumeSource {Path : artifactsDir , Type : ptr .To (corev1 .HostPathDirectoryOrCreate )}}}
2070- obj .Spec .Template .Spec .Volumes = append (obj .Spec .Template .Spec .Volumes , artifactsVol )
2071-
2072- // Compute hash of kata manager config and add an annotation with the value.
2073- // If the kata config changes, a new revision of the daemonset will be
2074- // created and thus the kata-manager pods will restart with the updated config.
2075- hash := utils .GetObjectHash (config .KataManager .Config )
2076-
2077- if obj .Spec .Template .Annotations == nil {
2078- obj .Spec .Template .Annotations = make (map [string ]string )
2079- }
2080- obj .Spec .Template .Annotations [KataManagerAnnotationHashKey ] = hash
2081-
2082- if len (config .KataManager .Env ) > 0 {
2083- for _ , env := range config .KataManager .Env {
2084- setContainerEnv (& (obj .Spec .Template .Spec .Containers [0 ]), env .Name , env .Value )
2085- }
2086- }
2087-
2088- // mount containerd config and socket
2089- // setup mounts for runtime config file
2090- runtime := n .runtime .String ()
2091- // kata manager is the only container in this daemonset
2092- err = transformForRuntime (obj , config , runtime , & obj .Spec .Template .Spec .Containers [0 ])
2093- if err != nil {
2094- return fmt .Errorf ("error transforming kata-manager daemonset : %w" , err )
2095- }
2096-
2097- // set hostNetwork for kata-manager if specified
2098- applyHostNetworkConfig (& obj .Spec .Template .Spec , config .KataManager .HostNetwork )
2099-
2100- return nil
2101- }
2102-
21032025// TransformVFIOManager transforms VFIO-PCI Manager daemonset with required config as per ClusterPolicy
21042026func TransformVFIOManager (obj * appsv1.DaemonSet , config * gpuv1.ClusterPolicySpec , n ClusterPolicyController ) error {
21052027 // update k8s-driver-manager initContainer
@@ -5160,115 +5082,13 @@ func transformRuntimeClass(n ClusterPolicyController, spec nodev1.RuntimeClass)
51605082 return gpuv1 .Ready , nil
51615083}
51625084
5163- func transformKataRuntimeClasses (n ClusterPolicyController ) (gpuv1.State , error ) {
5164- ctx := n .ctx
5165- state := n .idx
5166- config := n .singleton .Spec
5167-
5168- // Get all existing Kata RuntimeClasses
5169- opts := []client.ListOption {& client.MatchingLabels {"nvidia.com/kata-runtime-class" : "true" }}
5170- list := & nodev1.RuntimeClassList {}
5171- err := n .client .List (ctx , list , opts ... )
5172- if err != nil {
5173- n .logger .Info ("Could not get Kata RuntimeClassList" , err )
5174- return gpuv1 .NotReady , fmt .Errorf ("error getting kata RuntimeClassList: %v" , err )
5175- }
5176- n .logger .V (1 ).Info ("Kata RuntimeClasses" , "Number" , len (list .Items ))
5177-
5178- if ! config .KataManager .IsEnabled () {
5179- // Delete all Kata RuntimeClasses
5180- n .logger .Info ("Kata Manager disabled, deleting all Kata RuntimeClasses" )
5181- for _ , rc := range list .Items {
5182- rc := rc
5183- n .logger .V (1 ).Info ("Deleting Kata RuntimeClass" , "Name" , rc .Name )
5184- err := n .client .Delete (ctx , & rc )
5185- if err != nil {
5186- return gpuv1 .NotReady , fmt .Errorf ("error deleting kata RuntimeClass '%s': %v" , rc .Name , err )
5187- }
5188- }
5189- return gpuv1 .Ready , nil
5190- }
5191-
5192- // Get names of desired kata RuntimeClasses
5193- rcNames := make (map [string ]struct {})
5194- for _ , rc := range config .KataManager .Config .RuntimeClasses {
5195- rcNames [rc .Name ] = struct {}{}
5196- }
5197-
5198- // Delete any existing Kata RuntimeClasses that are no longer specified in KataManager configuration
5199- for _ , rc := range list .Items {
5200- if _ , ok := rcNames [rc .Name ]; ! ok {
5201- rc := rc
5202- n .logger .Info ("Deleting Kata RuntimeClass" , "Name" , rc .Name )
5203- err := n .client .Delete (ctx , & rc )
5204- if err != nil {
5205- return gpuv1 .NotReady , fmt .Errorf ("error deleting kata RuntimeClass '%s': %v" , rc .Name , err )
5206- }
5207- }
5208- }
5209-
5210- // Using kata RuntimClass template, create / update RuntimeClass objects specified in KataManager configuration
5211- template := n .resources [state ].RuntimeClasses [0 ]
5212- for _ , rc := range config .KataManager .Config .RuntimeClasses {
5213- logger := n .logger .WithValues ("RuntimeClass" , rc .Name )
5214-
5215- if rc .Name == config .Operator .RuntimeClass {
5216- return gpuv1 .NotReady , fmt .Errorf ("error creating kata runtimeclass '%s' as it conflicts with the runtimeclass used for the gpu-operator operand pods itself" , rc .Name )
5217- }
5218-
5219- obj := nodev1.RuntimeClass {}
5220- obj .Name = rc .Name
5221- obj .Handler = rc .Name
5222- obj .Labels = template .Labels
5223- obj .Scheduling = & nodev1.Scheduling {}
5224- nodeSelector := make (map [string ]string )
5225- for k , v := range template .Scheduling .NodeSelector {
5226- nodeSelector [k ] = v
5227- }
5228- if rc .NodeSelector != nil {
5229- // append user provided selectors to default nodeSelector
5230- for k , v := range rc .NodeSelector {
5231- nodeSelector [k ] = v
5232- }
5233- }
5234- obj .Scheduling .NodeSelector = nodeSelector
5235-
5236- if err := controllerutil .SetControllerReference (n .singleton , & obj , n .scheme ); err != nil {
5237- return gpuv1 .NotReady , err
5238- }
5239-
5240- found := & nodev1.RuntimeClass {}
5241- err := n .client .Get (ctx , types.NamespacedName {Namespace : "" , Name : obj .Name }, found )
5242- if err != nil && apierrors .IsNotFound (err ) {
5243- logger .Info ("Not found, creating..." )
5244- err = n .client .Create (ctx , & obj )
5245- if err != nil {
5246- logger .Info ("Couldn't create" , "Error" , err )
5247- return gpuv1 .NotReady , err
5248- }
5249- continue
5250- } else if err != nil {
5251- return gpuv1 .NotReady , err
5252- }
5253-
5254- logger .Info ("Found Resource, updating..." )
5255- obj .ResourceVersion = found .ResourceVersion
5256-
5257- err = n .client .Update (ctx , & obj )
5258- if err != nil {
5259- logger .Info ("Couldn't update" , "Error" , err )
5260- return gpuv1 .NotReady , err
5261- }
5262- }
5263- return gpuv1 .Ready , nil
5264- }
5265-
52665085func RuntimeClasses (n ClusterPolicyController ) (gpuv1.State , error ) {
52675086 status := gpuv1 .Ready
52685087 state := n .idx
52695088
52705089 if n .stateNames [state ] == "state-kata-manager" {
5271- return transformKataRuntimeClasses (n )
5090+ // Kata Manager is deprecated, no need to process anything
5091+ return gpuv1 .Ready , nil
52725092 }
52735093
52745094 nvidiaRuntimeClasses := n .resources [state ].RuntimeClasses
0 commit comments