@@ -914,7 +914,7 @@ func getLowNodeUtilizationThresholds(profileCustomizations *deschedulerv1.Profil
914
914
return lowThreshold , highThreshold , nil
915
915
}
916
916
917
- func getRelieveAndMigrateThresholds (profileCustomizations * deschedulerv1.ProfileCustomizations , useDeviationThresholds bool ) (deschedulerapi.Percentage , deschedulerapi.Percentage , error ) {
917
+ func getKubeVirtRelieveAndMigrateThresholds (profileCustomizations * deschedulerv1.ProfileCustomizations , useDeviationThresholds bool ) (deschedulerapi.Percentage , deschedulerapi.Percentage , error ) {
918
918
if profileCustomizations != nil && (profileCustomizations .DevLowNodeUtilizationThresholds != nil || profileCustomizations .DevDeviationThresholds != nil ) {
919
919
return getLowNodeUtilizationThresholds (profileCustomizations , false )
920
920
}
@@ -1046,9 +1046,9 @@ func lifecycleAndUtilizationProfile(profileCustomizations *deschedulerv1.Profile
1046
1046
return profile , nil
1047
1047
}
1048
1048
1049
- func relieveAndMigrateProfile (profileCustomizations * deschedulerv1.ProfileCustomizations , includedNamespaces , excludedNamespaces , protectedNamespaces []string ) (* v1alpha2.DeschedulerProfile , error ) {
1049
+ func kubeVirtRelieveAndMigrateProfile (profileCustomizations * deschedulerv1.ProfileCustomizations , includedNamespaces , excludedNamespaces , protectedNamespaces []string ) (* v1alpha2.DeschedulerProfile , error ) {
1050
1050
profile := & v1alpha2.DeschedulerProfile {
1051
- Name : string (deschedulerv1 .RelieveAndMigrate ),
1051
+ Name : string (deschedulerv1 .KubeVirtRelieveAndMigrate ),
1052
1052
PluginConfigs : []v1alpha2.PluginConfig {
1053
1053
{
1054
1054
Name : nodeutilization .LowNodeUtilizationPluginName ,
@@ -1136,7 +1136,7 @@ func relieveAndMigrateProfile(profileCustomizations *deschedulerv1.ProfileCustom
1136
1136
}
1137
1137
}
1138
1138
1139
- lowThreshold , highThreshold , err := getRelieveAndMigrateThresholds (profileCustomizations , args .UseDeviationThresholds )
1139
+ lowThreshold , highThreshold , err := getKubeVirtRelieveAndMigrateThresholds (profileCustomizations , args .UseDeviationThresholds )
1140
1140
if err != nil {
1141
1141
return nil , err
1142
1142
}
@@ -1362,24 +1362,24 @@ func (c *TargetConfigReconciler) manageConfigMap(descheduler *deschedulerv1.Kube
1362
1362
profile , err = longLifecycleProfile (descheduler .Spec .ProfileCustomizations , includedNamespaces , excludedNamespaces , c .protectedNamespaces , ignorePVCPods , evictLocalStoragePods )
1363
1363
case deschedulerv1 .CompactAndScale :
1364
1364
profile , err = compactAndScaleProfile (descheduler .Spec .ProfileCustomizations , includedNamespaces , excludedNamespaces , ignorePVCPods , evictLocalStoragePods )
1365
- case deschedulerv1 .RelieveAndMigrate :
1365
+ case deschedulerv1 .KubeVirtRelieveAndMigrate , deschedulerv1 . DevKubeVirtRelieveAndMigrate :
1366
1366
kvDeployed , kverr := c .isKubeVirtDeployed ()
1367
1367
if kverr != nil {
1368
1368
return nil , false , kverr
1369
1369
}
1370
1370
if ! kvDeployed {
1371
- return nil , true , fmt .Errorf ("profile %v can only be used when KubeVirt is properly deployed" , deschedulerv1 . RelieveAndMigrate )
1371
+ return nil , true , fmt .Errorf ("profile %v can only be used when KubeVirt is properly deployed" , profileName )
1372
1372
}
1373
1373
psiEnabled , psierr := c .isPSIenabled ()
1374
1374
if psierr != nil {
1375
1375
return nil , false , psierr
1376
1376
}
1377
1377
if ! psiEnabled {
1378
- return nil , true , fmt .Errorf ("profile %v can only be used when PSI metrics are enabled for the worker nodes" , deschedulerv1 . RelieveAndMigrate )
1378
+ return nil , true , fmt .Errorf ("profile %v can only be used when PSI metrics are enabled for the worker nodes" , profileName )
1379
1379
}
1380
1380
kubeVirtShedulable := kubeVirtShedulableLabelSelector
1381
1381
policy .NodeSelector = & kubeVirtShedulable
1382
- profile , err = relieveAndMigrateProfile (descheduler .Spec .ProfileCustomizations , includedNamespaces , excludedNamespaces , c .protectedNamespaces )
1382
+ profile , err = kubeVirtRelieveAndMigrateProfile (descheduler .Spec .ProfileCustomizations , includedNamespaces , excludedNamespaces , c .protectedNamespaces )
1383
1383
default :
1384
1384
err = fmt .Errorf ("Profile %q not recognized" , profileName )
1385
1385
}
@@ -1428,16 +1428,33 @@ func checkProfileConflicts(profiles sets.String, profileName deschedulerv1.Desch
1428
1428
return fmt .Errorf ("cannot declare %s and %s profiles simultaneously, ignoring" , deschedulerv1 .LongLifecycle , deschedulerv1 .LifecycleAndUtilization )
1429
1429
}
1430
1430
1431
- if profiles .Has (string (deschedulerv1 .DevPreviewLongLifecycle )) && profiles .Has (string (deschedulerv1 .RelieveAndMigrate )) {
1432
- return fmt .Errorf ("cannot declare %s and %s profiles simultaneously, ignoring" , deschedulerv1 .DevPreviewLongLifecycle , deschedulerv1 .RelieveAndMigrate )
1431
+ // DevKubeVirtRelieveAndMigrate is deprecated in 4.20, remove in 4.22+
1432
+ if profiles .Has (string (deschedulerv1 .DevPreviewLongLifecycle )) && profiles .Has (string (deschedulerv1 .DevKubeVirtRelieveAndMigrate )) {
1433
+ return fmt .Errorf ("cannot declare %s and %s profiles simultaneously, ignoring" , deschedulerv1 .DevPreviewLongLifecycle , deschedulerv1 .DevKubeVirtRelieveAndMigrate )
1433
1434
}
1434
1435
1435
- if profiles .Has (string (deschedulerv1 .LongLifecycle )) && profiles .Has (string (deschedulerv1 .RelieveAndMigrate )) {
1436
- return fmt .Errorf ("cannot declare %s and %s profiles simultaneously, ignoring" , deschedulerv1 .LongLifecycle , deschedulerv1 .RelieveAndMigrate )
1436
+ if profiles .Has (string (deschedulerv1 .LongLifecycle )) && profiles .Has (string (deschedulerv1 .DevKubeVirtRelieveAndMigrate )) {
1437
+ return fmt .Errorf ("cannot declare %s and %s profiles simultaneously, ignoring" , deschedulerv1 .LongLifecycle , deschedulerv1 .DevKubeVirtRelieveAndMigrate )
1437
1438
}
1438
1439
1439
- if profiles .Has (string (deschedulerv1 .LifecycleAndUtilization )) && profiles .Has (string (deschedulerv1 .RelieveAndMigrate )) {
1440
- return fmt .Errorf ("cannot declare %s and %s profiles simultaneously, ignoring" , deschedulerv1 .LifecycleAndUtilization , deschedulerv1 .RelieveAndMigrate )
1440
+ if profiles .Has (string (deschedulerv1 .LifecycleAndUtilization )) && profiles .Has (string (deschedulerv1 .DevKubeVirtRelieveAndMigrate )) {
1441
+ return fmt .Errorf ("cannot declare %s and %s profiles simultaneously, ignoring" , deschedulerv1 .LifecycleAndUtilization , deschedulerv1 .DevKubeVirtRelieveAndMigrate )
1442
+ }
1443
+
1444
+ if profiles .Has (string (deschedulerv1 .KubeVirtRelieveAndMigrate )) && profiles .Has (string (deschedulerv1 .DevKubeVirtRelieveAndMigrate )) {
1445
+ return fmt .Errorf ("cannot declare %s and %s profiles simultaneously, ignoring" , deschedulerv1 .KubeVirtRelieveAndMigrate , deschedulerv1 .DevKubeVirtRelieveAndMigrate )
1446
+ }
1447
+
1448
+ if profiles .Has (string (deschedulerv1 .DevPreviewLongLifecycle )) && profiles .Has (string (deschedulerv1 .KubeVirtRelieveAndMigrate )) {
1449
+ return fmt .Errorf ("cannot declare %s and %s profiles simultaneously, ignoring" , deschedulerv1 .DevPreviewLongLifecycle , deschedulerv1 .KubeVirtRelieveAndMigrate )
1450
+ }
1451
+
1452
+ if profiles .Has (string (deschedulerv1 .LongLifecycle )) && profiles .Has (string (deschedulerv1 .KubeVirtRelieveAndMigrate )) {
1453
+ return fmt .Errorf ("cannot declare %s and %s profiles simultaneously, ignoring" , deschedulerv1 .LongLifecycle , deschedulerv1 .KubeVirtRelieveAndMigrate )
1454
+ }
1455
+
1456
+ if profiles .Has (string (deschedulerv1 .LifecycleAndUtilization )) && profiles .Has (string (deschedulerv1 .KubeVirtRelieveAndMigrate )) {
1457
+ return fmt .Errorf ("cannot declare %s and %s profiles simultaneously, ignoring" , deschedulerv1 .LifecycleAndUtilization , deschedulerv1 .KubeVirtRelieveAndMigrate )
1441
1458
}
1442
1459
1443
1460
if profiles .Has (string (deschedulerv1 .SoftTopologyAndDuplicates )) && profiles .Has (string (deschedulerv1 .TopologyAndDuplicates )) {
@@ -1456,8 +1473,12 @@ func checkProfileConflicts(profiles sets.String, profileName deschedulerv1.Desch
1456
1473
return fmt .Errorf ("cannot declare %s and %s profiles simultaneously, ignoring" , deschedulerv1 .CompactAndScale , deschedulerv1 .DevPreviewLongLifecycle )
1457
1474
}
1458
1475
1459
- if profiles .Has (string (deschedulerv1 .CompactAndScale )) && profiles .Has (string (deschedulerv1 .RelieveAndMigrate )) {
1460
- return fmt .Errorf ("cannot declare %s and %s profiles simultaneously, ignoring" , deschedulerv1 .CompactAndScale , deschedulerv1 .RelieveAndMigrate )
1476
+ if profiles .Has (string (deschedulerv1 .CompactAndScale )) && profiles .Has (string (deschedulerv1 .DevKubeVirtRelieveAndMigrate )) {
1477
+ return fmt .Errorf ("cannot declare %s and %s profiles simultaneously, ignoring" , deschedulerv1 .CompactAndScale , deschedulerv1 .DevKubeVirtRelieveAndMigrate )
1478
+ }
1479
+
1480
+ if profiles .Has (string (deschedulerv1 .CompactAndScale )) && profiles .Has (string (deschedulerv1 .KubeVirtRelieveAndMigrate )) {
1481
+ return fmt .Errorf ("cannot declare %s and %s profiles simultaneously, ignoring" , deschedulerv1 .CompactAndScale , deschedulerv1 .KubeVirtRelieveAndMigrate )
1461
1482
}
1462
1483
1463
1484
if profiles .Has (string (deschedulerv1 .CompactAndScale )) && profiles .Has (string (deschedulerv1 .TopologyAndDuplicates )) {
@@ -1529,12 +1550,7 @@ func (c *TargetConfigReconciler) manageDeschedulerDeployment(descheduler *desche
1529
1550
1530
1551
featureGates := []string {}
1531
1552
evictionsInBackgroundEnabled := descheduler .Spec .ProfileCustomizations != nil && descheduler .Spec .ProfileCustomizations .DevEnableEvictionsInBackground
1532
- for _ , profile := range descheduler .Spec .Profiles {
1533
- if profile == deschedulerv1 .RelieveAndMigrate {
1534
- evictionsInBackgroundEnabled = true
1535
- break
1536
- }
1537
- }
1553
+ evictionsInBackgroundEnabled = evictionsInBackgroundEnabled || hasKubeVirtRelieveAndMigrateProfile (descheduler .Spec .Profiles )
1538
1554
if evictionsInBackgroundEnabled {
1539
1555
featureGates = append (featureGates , "EvictionsInBackground=true" )
1540
1556
}
@@ -1682,8 +1698,12 @@ func (c *TargetConfigReconciler) isPSIenabled() (bool, error) {
1682
1698
}
1683
1699
}
1684
1700
1701
+ func hasKubeVirtRelieveAndMigrateProfile (profiles []deschedulerv1.DeschedulerProfile ) bool {
1702
+ return slices .Contains (profiles , deschedulerv1 .KubeVirtRelieveAndMigrate ) || slices .Contains (profiles , deschedulerv1 .DevKubeVirtRelieveAndMigrate )
1703
+ }
1704
+
1685
1705
func (c * TargetConfigReconciler ) isSoftTainterNeeded (descheduler * deschedulerv1.KubeDescheduler ) (bool , error ) {
1686
- if slices . Contains (descheduler .Spec .Profiles , deschedulerv1 . RelieveAndMigrate ) {
1706
+ if hasKubeVirtRelieveAndMigrateProfile (descheduler .Spec .Profiles ) {
1687
1707
return true , nil
1688
1708
}
1689
1709
@@ -1718,7 +1738,7 @@ func (c *TargetConfigReconciler) isSoftTainterNeeded(descheduler *deschedulerv1.
1718
1738
// or the user is explicitly configuring DevActualUtilizationProfile profile customization
1719
1739
func (c * TargetConfigReconciler ) isPrometheusAsMetricsProviderForProfiles (descheduler * deschedulerv1.KubeDescheduler ) bool {
1720
1740
if descheduler != nil &&
1721
- (slices . Contains (descheduler .Spec .Profiles , deschedulerv1 . RelieveAndMigrate ) ||
1741
+ (hasKubeVirtRelieveAndMigrateProfile (descheduler .Spec .Profiles ) ||
1722
1742
(descheduler .Spec .ProfileCustomizations != nil && descheduler .Spec .ProfileCustomizations .DevActualUtilizationProfile != "" )) {
1723
1743
return true
1724
1744
}
@@ -1730,7 +1750,7 @@ func (c *TargetConfigReconciler) setEvictionsLimits(descheduler *deschedulerv1.K
1730
1750
return
1731
1751
}
1732
1752
1733
- if slices . Contains (descheduler .Spec .Profiles , deschedulerv1 . RelieveAndMigrate ) {
1753
+ if hasKubeVirtRelieveAndMigrateProfile (descheduler .Spec .Profiles ) {
1734
1754
policy .MaxNoOfPodsToEvictTotal = utilptr.To [uint ](uint (defaultKVParallelMigrationsPerCluster ))
1735
1755
policy .MaxNoOfPodsToEvictPerNode = utilptr.To [uint ](uint (defaultKVParallelOutboundMigrationsPerNode ))
1736
1756
}
0 commit comments