Skip to content

Commit 419757d

Browse files
authored
Merge pull request #81294 from bergerhoffer/OSDOCS-11327
OSDOCS#11327: Docs for descheduler 5.1.0 including the LongLifecycle …
2 parents f94920a + 957ebdc commit 419757d

File tree

6 files changed

+81
-22
lines changed

6 files changed

+81
-22
lines changed

modules/nodes-descheduler-configuring-profiles.adoc

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -47,9 +47,11 @@ spec:
4747
- my-namespace
4848
podLifetime: 48h <3>
4949
thresholdPriorityClassName: my-priority-class-name <4>
50-
profiles: <5>
50+
evictionLimits:
51+
total: 20 <5>
52+
profiles: <6>
5153
- AffinityAndTaints
52-
- TopologyAndDuplicates <6>
54+
- TopologyAndDuplicates
5355
- LifecycleAndUtilization
5456
- EvictPodsWithLocalStorage
5557
- EvictPodsWithPVC
@@ -60,8 +62,8 @@ spec:
6062
<2> Optional: Set a list of user-created namespaces to include or exclude from descheduler operations. Use `excluded` to set a list of namespaces to exclude or use `included` to set a list of namespaces to include. Note that protected namespaces (`openshift-*`, `kube-system`, `hypershift`) are excluded by default.
6163
<3> Optional: Enable a custom pod lifetime value for the `LifecycleAndUtilization` profile. Valid units are `s`, `m`, or `h`. The default pod lifetime is 24 hours.
6264
<4> Optional: Specify a priority threshold to consider pods for eviction only if their priority is lower than the specified level. Use the `thresholdPriority` field to set a numerical priority threshold (for example, `10000`) or use the `thresholdPriorityClassName` field to specify a certain priority class name (for example, `my-priority-class-name`). If you specify a priority class name, it must already exist or the descheduler will throw an error. Do not set both `thresholdPriority` and `thresholdPriorityClassName`.
63-
<5> Add one or more profiles to enable. Available profiles: `AffinityAndTaints`, `TopologyAndDuplicates`, `LifecycleAndUtilization`, `SoftTopologyAndDuplicates`, `EvictPodsWithLocalStorage`, and `EvictPodsWithPVC`.
64-
<6> Do not enable both `TopologyAndDuplicates` and `SoftTopologyAndDuplicates`. Enabling both results in a conflict.
65+
<5> Optional: Set the maximum number of pods to evict during each descheduler run.
66+
<6> Add one or more profiles to enable. Available profiles: `AffinityAndTaints`, `TopologyAndDuplicates`, `LifecycleAndUtilization`, `SoftTopologyAndDuplicates`, `EvictPodsWithLocalStorage`, `EvictPodsWithPVC`, `CompactAndScale`, and `LongLifecycle`. Ensure that you do not enable profiles that conflict with each other.
6567

6668
You can enable multiple profiles; the order that the profiles are specified in is not important.
6769
--

modules/nodes-descheduler-profiles.adoc

Lines changed: 45 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -30,48 +30,87 @@ Pods with a node affinity type of `requiredDuringSchedulingIgnoredDuringExecutio
3030
+
3131
It enables the following strategies:
3232
+
33+
--
3334
* `RemovePodsViolatingTopologySpreadConstraint`: finds unbalanced topology domains and tries to evict pods from larger ones when `DoNotSchedule` constraints are violated.
3435
* `RemoveDuplicates`: ensures that there is only one pod associated with a replica set, replication controller, deployment, or job running on same node. If there are more, those duplicate pods are evicted for better pod distribution in a cluster.
36+
--
37+
+
38+
[WARNING]
39+
====
40+
Do not enable `TopologyAndDuplicates` with any of the following profiles: `SoftTopologyAndDuplicates` or `CompactAndScale`. Enabling these profiles together results in a conflict.
41+
====
3542

3643
`LifecycleAndUtilization`:: This profile evicts long-running pods and balances resource usage between nodes.
3744
+
3845
It enables the following strategies:
3946
+
47+
--
4048
* `RemovePodsHavingTooManyRestarts`: removes pods whose containers have been restarted too many times.
4149
+
4250
Pods where the sum of restarts over all containers (including Init Containers) is more than 100.
4351

4452
* `LowNodeUtilization`: finds nodes that are underutilized and evicts pods, if possible, from overutilized nodes in the hope that recreation of evicted pods will be scheduled on these underutilized nodes.
53+
54+
** A node is considered underutilized if its usage is below 20% for all thresholds (CPU, memory, and number of pods).
55+
56+
** A node is considered overutilized if its usage is above 50% for any of the thresholds (CPU, memory, and number of pods).
57+
4558
+
46-
A node is considered underutilized if its usage is below 20% for all thresholds (CPU, memory, and number of pods).
47-
+
48-
A node is considered overutilized if its usage is above 50% for any of the thresholds (CPU, memory, and number of pods).
59+
Optionally, you can adjust these underutilized/overutilized threshold percentages by setting the Technology Preview field `devLowNodeUtilizationThresholds` to one the following values: `Low` for 10%/30%, `Medium` for 20%/50%, or `High` for 40%/70%. The default value is `Medium`.
4960

5061
* `PodLifeTime`: evicts pods that are too old.
5162
+
5263
By default, pods that are older than 24 hours are removed. You can customize the pod lifetime value.
64+
--
65+
+
66+
[WARNING]
67+
====
68+
Do not enable `LifecycleAndUtilization` with any of the following profiles: `LongLifecycle` or `CompactAndScale`. Enabling these profiles together results in a conflict.
69+
====
5370
5471
`SoftTopologyAndDuplicates`:: This profile is the same as `TopologyAndDuplicates`, except that pods with soft topology constraints, such as `whenUnsatisfiable: ScheduleAnyway`, are also considered for eviction.
5572
+
56-
[NOTE]
73+
[WARNING]
5774
====
5875
Do not enable both `SoftTopologyAndDuplicates` and `TopologyAndDuplicates`. Enabling both results in a conflict.
5976
====
6077

6178
`EvictPodsWithLocalStorage`:: This profile allows pods with local storage to be eligible for eviction.
6279

6380
`EvictPodsWithPVC`:: This profile allows pods with persistent volume claims to be eligible for eviction. If you are using `Kubernetes NFS Subdir External Provisioner`, you must add an excluded namespace for the namespace where the provisioner is installed.
81+
82+
`CompactAndScale`:: This profile enables the `HighNodeUtilization` strategy, which attempts to evict pods from underutilized nodes to allow a workload to run on a smaller set of nodes. A node is considered underutilized if its usage is below 20% for all thresholds (CPU, memory, and number of pods).
83+
+
84+
Optionally, you can adjust the underutilized percentage by setting the Technology Preview field `devHighNodeUtilizationThresholds` to one the following values: `Minimal` for 10%, `Modest` for 20%, or `Moderate` for 30%. The default value is `Modest`.
85+
+
86+
[WARNING]
87+
====
88+
Do not enable `CompactAndScale` with any of the following profiles: `LifecycleAndUtilization`, `LongLifecycle`, or `TopologyAndDuplicates`. Enabling these profiles together results in a conflict.
89+
====
90+
6491
endif::nodes[]
6592
ifdef::virt[]
6693
Use the Technology Preview `DevPreviewLongLifecycle` 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.
94+
endif::virt[]
6795

68-
`DevPreviewLongLifecycle`:: This profile balances resource usage between nodes and enables the following strategies:
96+
// Show LongLifecycle profile both for virt and nodes
97+
`LongLifecycle`:: This profile balances resource usage between nodes and enables the following strategies:
6998
+
99+
--
70100
* `RemovePodsHavingTooManyRestarts`: removes pods whose containers have been restarted too many times and pods where the sum of restarts over all containers (including Init Containers) is more than 100. Restarting the VM guest operating system does not increase this count.
71101
* `LowNodeUtilization`: evicts pods from overutilized nodes when there are any underutilized nodes. The destination node for the evicted pod will be determined by the scheduler.
72102
** A node is considered underutilized if its usage is below 20% for all thresholds (CPU, memory, and number of pods).
73103
** A node is considered overutilized if its usage is above 50% for any of the thresholds (CPU, memory, and number of pods).
74-
endif::virt[]
104+
--
105+
+
106+
--
107+
ifdef::nodes[]
108+
[WARNING]
109+
====
110+
Do not enable `LongLifecycle` with any of the following profiles: `LifecycleAndUtilization` or `CompactAndScale`. Enabling these profiles together results in a conflict.
111+
====
112+
endif::nodes[]
113+
--
75114

76115
ifeval::["{context}" == "nodes-descheduler-about"]
77116
:!nodes:

nodes/scheduling/descheduler/index.adoc

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,6 @@ toc::[]
88

99
While the xref:../../../nodes/scheduling/nodes-scheduler-about.adoc#nodes-scheduler-about[scheduler] is used to determine the most suitable node to host a new pod, the descheduler can be used to evict a running pod so that the pod can be rescheduled onto a more suitable node.
1010

11-
:operator-name: The {descheduler-operator}
12-
include::snippets/operator-not-available.adoc[]
13-
1411
// About the descheduler
1512
include::modules/nodes-descheduler-about.adoc[leveloffset=+1]
1613

nodes/scheduling/descheduler/nodes-descheduler-configuring.adoc

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,6 @@ toc::[]
88

99
You can run the descheduler in {product-title} by installing the {descheduler-operator} and setting the desired profiles and other customizations.
1010

11-
:operator-name: The {descheduler-operator}
12-
include::snippets/operator-not-available.adoc[]
13-
1411
// Installing the descheduler
1512
include::modules/nodes-descheduler-installing.adoc[leveloffset=+1]
1613

nodes/scheduling/descheduler/nodes-descheduler-release-notes.adoc

Lines changed: 30 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,34 @@ The {descheduler-operator} allows you to evict pods so that they can be reschedu
1010

1111
These release notes track the development of the {descheduler-operator}.
1212

13-
:operator-name: The {descheduler-operator}
14-
include::snippets/operator-not-available.adoc[]
15-
1613
For more information, see xref:../../../nodes/scheduling/descheduler/index.adoc#nodes-descheduler-about_nodes-descheduler-about[About the descheduler].
14+
15+
[id="descheduler-operator-release-notes-5.1.0"]
16+
== Release notes for {descheduler-operator} 5.1.0
17+
18+
Issued: 23 October 2024
19+
20+
The following advisory is available for the {descheduler-operator} 5.1.0:
21+
22+
* link:https://access.redhat.com/errata/RHSA-2024:6341[RHSA-2024:6341]
23+
24+
[id="descheduler-operator-5.1.0-new-features"]
25+
=== New features and enhancements
26+
27+
* Two new descheduler profiles are now available:
28+
29+
** `CompactAndScale`: This profile attempts to evict pods from underutilized nodes to allow a workload to run on a smaller set of nodes.
30+
** `LongLifecycle`: This profile balances resource usage between nodes and enables the `RemovePodsHavingTooManyRestarts` and `LowNodeUtilization` strategies.
31+
32+
* For the `CompactAndScale` profile, you can use the Technology Preview field `devHighNodeUtilizationThresholds` to adjust the underutilized threshold value.
33+
34+
[id="descheduler-operator-5.1.0-bug-fixes"]
35+
=== Bug fixes
36+
37+
* This release of the {descheduler-operator} addresses several Common Vulnerabilities and Exposures (CVEs).
38+
39+
// No known issues to list
40+
// [id="descheduler-operator-5.1.0-known-issues"]
41+
// === Known issues
42+
//
43+
// * TODO

nodes/scheduling/descheduler/nodes-descheduler-uninstalling.adoc

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,5 @@ toc::[]
88

99
You can remove the {descheduler-operator} from {product-title} by uninstalling the Operator and removing its related resources.
1010

11-
:operator-name: The {descheduler-operator}
12-
include::snippets/operator-not-available.adoc[]
13-
1411
// Uninstalling the descheduler
1512
include::modules/nodes-descheduler-uninstalling.adoc[leveloffset=+1]

0 commit comments

Comments
 (0)