Simone Tiraboschi
3a608a590a
feat(eviction): add annotations to eviction requests for observability
...
Although eviction requests (policy/v1) are not persisted long term,
their API still implements the full metav1.ObjectMeta struct. While
name and namespace refer to the pod being evicted, eviction requests
can still carry annotations.
This change adds annotations to descheduler-initiated evictions,
including the requester, reason, and the strategy or plugin that
triggered them.
While these details are already logged by the descheduler, exposing them
as annotations allows external webhooks or controllers to provide
clearer context about each eviction request, both for tracking and
prioritization purposes.
Signed-off-by: Simone Tiraboschi <stirabos@redhat.com >
2025-10-13 12:49:03 +02:00
S J Tharun
7d6f6fedec
fix gofmt error
2025-10-13 08:29:27 +05:30
S J Tharun
3033aec6a0
descheduler: handle single-node clusters gracefully
2025-10-11 07:53:41 +05:30
Emin Aktas
d47e077897
fix: correct comment for HaveNoEvictionAnnotation
2025-09-20 12:53:56 +03:00
googs1025
257bd55909
standardize protectionEnabled param
2025-08-19 17:52:54 +08:00
Kubernetes Prow Robot
63ecaec0ef
Merge pull request #1729 from googs1025/validate/improve
...
Improves the validation logic in the plugins
2025-08-15 03:31:07 -07:00
Kubernetes Prow Robot
e5c57a759b
Merge pull request #1603 from googs1025/feature/add_dra_arg
...
feature: add PodsWithResourceClaims parameter in DefaultEvictorArgs PodProtections
2025-08-13 06:57:10 -07:00
googs1025
9c7e01de67
feature: add PodsWithResourceClaims parameter in DefaultEvictorArgs PodProtections
...
Signed-off-by: googs1025 <googs1025@gmail.com >
2025-08-13 20:35:36 +08:00
googs1025
e5ea03ce75
add ValidateHighNodeUtilizationPluginConfig unit test
...
Signed-off-by: googs1025 <googs1025@gmail.com >
2025-08-13 17:15:21 +08:00
googs1025
2cce141feb
Improves the validation logic in the plugins
...
Signed-off-by: googs1025 <googs1025@gmail.com >
2025-08-07 17:21:01 +08:00
googs1025
d9697591d5
add EvictionProtection filed for DefaultEvictorArgs
...
Signed-off-by: googs1025 <googs1025@gmail.com >
2025-08-04 19:34:16 +08:00
Jan Chaloupka
7380aa6e0a
DefaultEvictor: introduce no-eviction policy
...
NoEvictionPolicy dictates whether a no-eviction policy is prefered or mandatory.
Needs to be used with caution as this will give users ability to protect their pods
from eviction. Which might work against enfored policies. E.g. plugins evicting pods
violating security policies.
2025-07-24 15:47:05 +02:00
Jan Chaloupka
d0548b75d7
TestSortPodsBasedOnPriorityLowToHigh: check the whole sorted list of pods
2025-07-24 12:48:03 +02:00
Jan Chaloupka
6e9d8891c5
defaultevictor_test.go: replace descheduler.alpha.kubernetes.io/evict literal with evictPodAnnotationKey const
2025-07-24 12:48:00 +02:00
Jan Chaloupka
5cc9e68127
Drop assignment if default test values
2025-07-24 12:04:07 +02:00
Amir Alavi
eadfe4a546
fix: topologyspreadconstraint plugin to not add PodNodeAffinity unless the inclusion policy is honor
2025-07-10 17:42:57 -04:00
Amir Alavi
fbf11df729
fix: topologyspreadconstraint to prefer evictable before sorting domains
...
Sort pods that are above ideal avg based on the criteria that they fit on other nodes that are below avg
Signed-off-by: Amir Alavi <amiralavi7@gmail.com >
2025-07-10 17:42:12 -04:00
Ricardo Maraschini
6e714a2134
chore: stop with no-op default evictor settings
...
we have been carrying these no-op for quite a while now. we should only
set defaults when they are different from what they are being provided
by the user.
2025-07-07 15:31:49 +02:00
Jan Chaloupka
89eab59d82
logger: Align with the previous logger verbosity
2025-06-25 09:27:57 +02:00
Kubernetes Prow Robot
ace001c618
Merge pull request #1655 from googs1025/feature/contextual_logging
...
feature: use contextal logging for plugins
2025-06-25 00:16:29 -07:00
googs1025
33894afe2b
feature: use contextal logging for plugins
...
Signed-off-by: googs1025 <googs1025@gmail.com >
2025-06-13 19:45:55 +08:00
Ricardo Maraschini
a2b899aa15
feat(prometheus): allow different url schemes
...
as per prometheus golang client implementation: the only url validation
done is by means of an `url.Parse()` call. we should do the same and not
enforce the usage of https scheme.
our readme even shows an example of descheduler config using http
prometheus url scheme.
2025-06-12 11:23:09 +02:00
lowang-bh
b63b09089e
metrics name refact and mark old one deprecated
...
Signed-off-by: lowang-bh <lhui_wang@163.com >
2025-06-02 14:13:46 +08:00
Martin Tapp
e06443ef40
*1677 Allow Succeeded and Failed states in PodLifeTime
2025-05-23 15:56:37 -04:00
Kubernetes Prow Robot
9f918371a2
Merge pull request #1694 from ingvagabund/plugins-new-context
...
Extend plugin's New with a context.Context
2025-05-19 05:31:14 -07:00
Jan Chaloupka
1974c12e0f
Extend plugin's New with a context.Context
...
The new context.Context can be later used for passing a contextualized
logger. Or, other initialization steps that require the context.
2025-05-19 12:23:44 +02:00
googs1025
b3aeca73db
refactor: separate eviction constraints to constraints.go
...
Signed-off-by: googs1025 <googs1025@gmail.com >
2025-05-19 18:02:41 +08:00
Kubernetes Prow Robot
d34848086c
Merge pull request #1691 from googs1025/fix/listall
...
fix(example): list only active pod
2025-05-12 10:55:14 -07:00
Kubernetes Prow Robot
9aa6d79c21
Merge pull request #1688 from ingvagabund/plugins-taints-do-not-list-all-pods
...
RemovePodsViolatingNodeTaints: list only pods that are not failed/suceeded
2025-05-12 06:55:18 -07:00
googs1025
7a76d9f0d3
fix(RemovePodsViolatingNodeTaints): list only active pod
...
Signed-off-by: googs1025 <googs1025@gmail.com >
2025-05-12 21:45:57 +08:00
Kubernetes Prow Robot
71746262b1
Merge pull request #1684 from googs1025/refactor_topology
...
chore: move namespaces filtering logic to New()
2025-05-11 12:29:14 -07:00
Jan Chaloupka
6691720da5
RemovePodsViolatingNodeTaints: list only pods that are not failed/suceeded
...
Listing pods was incorrectly changed to listing all pods during code
refactoring.
2025-05-10 21:12:06 +02:00
googs1025
0a691debfb
feature: sort pods by restarts count in RemovePodsHavingTooManyRestarts plugin
2025-05-09 13:15:38 +08:00
googs1025
fbc875fac1
chore: move namespaces filtering logic to New()
2025-05-07 19:47:30 +08:00
googs1025
957c5bc8e0
optimize: NodeFit function by reordering checks for performance
2025-05-05 21:09:14 +08:00
Ricardo Maraschini
35a7178df6
feat: introduce strict eviction policy
...
with strict eviction policy the descheduler only evict pods if the pod
contains a request for the given threshold. for example, if using a
threshold for an extended resource called `example.com/gpu` only pods
who request such a resource will be evicted.
2025-04-09 16:48:32 +02:00
Kubernetes Prow Robot
17b90969cf
Merge pull request #1629 from googs1025/fix_sortDomains
...
fix removepodsviolatingtopologyspreadconstraint plugin sort logic
2025-03-28 09:06:44 -07:00
googs1025
b4b203cc60
chore: add unit test for sortDomains func
2025-03-28 20:58:54 +08:00
googs1025
59d1d5d1b9
making isEvictable and hasSelectorOrAffinity invoked only once
...
Signed-off-by: googs1025 <googs1025@gmail.com >
2025-03-28 20:57:02 +08:00
Ricardo Maraschini
98e6ed6587
chore: log average and assessed thresholds
...
when calculating the average an applying the deviations it would be nice
to also see the assessed values.
this commit makes the descheduler logs these values when using level 3.
2025-03-28 10:16:20 +01:00
googs1025
4548723dea
fix(removepodsviolatingtopologyspreadconstraint): fix removepodsviolatingtopologyspreadconstraint plugin sort logic
...
Signed-off-by: googs1025 <googs1025@gmail.com >
2025-03-27 23:49:45 +08:00
Kubernetes Prow Robot
9b9ae9a3be
Merge pull request #1650 from ingvagabund/nodeutilization-deviation-skip-nodes-without-extended-resource
...
[nodeutilization]: skip nodes without extended resource when computing the average utilization
2025-03-20 05:58:31 -07:00
Jan Chaloupka
c22d773200
[nodeutilization] test nodes without extended resource when computing the average utilization
2025-03-20 13:22:28 +01:00
Ricardo Maraschini
95a631f6a5
feat: move classifier to its own package
...
move the classifier to its own package. introduces a generic way of
classifying usages against thresholds.
2025-03-20 11:02:47 +01:00
Ricardo Maraschini
54d0a22ad1
chore: comment the code and simplify some things
...
this commit comments the low and high utilization plugins. this also
simplifies a little bit where it was possible without affecting too
much.
2025-03-20 10:06:45 +01:00
Ricardo Maraschini
87ba84b2ad
feat: refactoring thresholds and usage assessment
...
this commit refactors the thresholds and usage assessment for the node
utilization plugins. both high and low plugins are affected by this
change.
2025-03-19 17:38:41 +01:00
Jan Chaloupka
04ebdbee32
[nodeutilization]: produce node utilization of resources that are listed in the list of resources
2025-03-19 12:35:19 +01:00
Jan Chaloupka
e283c31030
[nodeutilization]: prometheus usage client with prometheus metrics
2025-03-17 16:25:17 +01:00
Kubernetes Prow Robot
be4abe1727
Merge pull request #1614 from ingvagabund/nodeutilization-metrics-source
...
[nodeutilization]: allow to set a metrics source as a string so it can be later extended for exclusive configuration
2025-03-14 01:57:47 -07:00
Jan Chaloupka
e14b86eb8c
[nodeutilization]: allow to set a metrics source as a string so it can be later extended for exclusive configuration
2025-03-13 18:00:27 +01:00