Skip to content

Commit 5acb2bb

Browse files
authored
Merge pull request #92977 from danielclowers/CNV-58194_02
CNV#58194 02: Doc new TP virt descheduler profile DevKubeVirtRelieveAndMigrate
2 parents 8945b49 + f54392d commit 5acb2bb

File tree

1 file changed

+65
-3
lines changed

1 file changed

+65
-3
lines changed

modules/nodes-descheduler-profiles.adoc

Lines changed: 65 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -90,9 +90,73 @@ Do not enable `CompactAndScale` with any of the following profiles: `LifecycleAn
9090

9191
endif::nodes[]
9292
ifdef::virt[]
93-
Use the `LongLifecycle` profile to enable the descheduler on a virtual machine. This is the only descheduler profile currently available for {VirtProductName}. To ensure proper scheduling, create VMs with CPU and memory requests for the expected load.
93+
Use the `DevKubeVirtRelieveAndMigrate` or `LongLifecycle` profile to enable the descheduler on a virtual machine.
94+
95+
[IMPORTANT]
96+
====
97+
You can not have both `DevKubeVirtRelieveAndMigrate` and `LongLifeCycle` enabled at the same time.
98+
====
9499
endif::virt[]
95100

101+
`DevKubeVirtRelieveAndMigrate`:: This profile is an enhanced version of the `LongLifeCycle` profile.
102+
+
103+
--
104+
:FeatureName: The `DevKubeVirtRelieveAndMigrate` profile
105+
include::snippets/technology-preview.adoc[]
106+
:!FeatureName:
107+
--
108+
109+
The `DevKubeVirtRelieveAndMigrate` profile evicts pods from high-cost nodes to reduce overall resource expenses and enable workload migration. It also periodically rebalances workloads to help maintain similar spare capacity across nodes, which supports better handling of sudden workload spikes. Nodes can experience the following costs:
110+
111+
--
112+
* **Resource utilization**: Increased resource pressure raises the overhead for running applications.
113+
* **Node maintenance**: A higher number of containers on a node increases resource consumption and maintenance costs.
114+
115+
The profile enables the `LowNodeUtilization` strategy with the `EvictionsInBackground` alpha feature. The profile also exposes the following customization fields:
116+
117+
* `devActualUtilizationProfile`: Enables load-aware descheduling.
118+
* `devLowNodeUtilizationThresholds`: Sets experimental thresholds for the `LowNodeUtilization` strategy. Do not use this field with `devDeviationThresholds`.
119+
* `devDeviationThresholds`: Treats nodes with below-average resource usage as underutilized to help redistribute workloads from overutilized nodes. Do not use this field with `devLowNodeUtilizationThresholds`. Supported values are: `Low` (10%:10%), `Medium` (20%:20%), `High` (30%:30%), `AsymmetricLow` (0%:10%), `AsymmetricMedium` (0%:20%), `AsymmetricHigh` (0%:30%).
120+
* `devEnableSoftTainter`: Enables the soft-tainting component to dynamically apply or remove soft taints as scheduling hints.
121+
122+
.Example configuration
123+
[source,yaml]
124+
----
125+
apiVersion: operator.openshift.io/v1
126+
kind: KubeDescheduler
127+
metadata:
128+
name: cluster
129+
namespace: openshift-kube-descheduler-operator
130+
spec:
131+
managementState: Managed
132+
deschedulingIntervalSeconds: 30
133+
mode: "Automatic"
134+
profiles:
135+
- DevKubeVirtRelieveAndMigrate
136+
profileCustomizations:
137+
devEnableSoftTainter: true
138+
devDeviationThresholds: AsymmetricLow
139+
devActualUtilizationProfile: PrometheusCPUCombined
140+
----
141+
142+
The `DevKubeVirtRelieveAndMigrate` profile requires PSI metrics to be enabled on all worker nodes. You can enable this by applying the following `MachineConfig` custom resource (CR):
143+
144+
.Example `MachineConfig` CR
145+
[source,yaml]
146+
----
147+
apiVersion: machineconfiguration.openshift.io/v1
148+
kind: MachineConfig
149+
metadata:
150+
labels:
151+
machineconfiguration.openshift.io/role: worker
152+
name: 99-openshift-machineconfig-worker-psi-karg
153+
spec:
154+
kernelArguments:
155+
- psi=1
156+
----
157+
158+
You can use this profile with the `SoftTopologyAndDuplicates` profile to also rebalance pods based on soft topology constraints, which can be useful in hosted control plane environments.
159+
96160
// Show LongLifecycle profile both for virt and nodes
97161
`LongLifecycle`:: This profile balances resource usage between nodes and enables the following strategies:
98162
+
@@ -102,15 +166,13 @@ endif::virt[]
102166
** A node is considered underutilized if its usage is below 20% for all thresholds (CPU, memory, and number of pods).
103167
** A node is considered overutilized if its usage is above 50% for any of the thresholds (CPU, memory, and number of pods).
104168
--
105-
+
106169
--
107170
ifdef::nodes[]
108171
[WARNING]
109172
====
110173
Do not enable `LongLifecycle` with any of the following profiles: `LifecycleAndUtilization` or `CompactAndScale`. Enabling these profiles together results in a conflict.
111174
====
112175
endif::nodes[]
113-
--
114176

115177
ifeval::["{context}" == "nodes-descheduler-about"]
116178
:!nodes:

0 commit comments

Comments
 (0)