-
Notifications
You must be signed in to change notification settings - Fork 668
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
skip eviction when pod creation time is below minPodAge threshold setting #1475
skip eviction when pod creation time is below minPodAge threshold setting #1475
Conversation
…ting In the default initialization phase of the descheduler, add a new constraint to not evict pods that creation time is below minPodAge threshold. Added value: - Avoid crazy pod movement when the autoscaler scales up and down. - Avoid evicting pods when they are warming up. - Decreases the overall cost of eviction as no pod will be evicted before doing significant amount of work. - Guard against scheduling. Descheduling loops in situations where the descheduler has a different node fit logic from scheduler, like not considering topology spread constraints.
Hi @victorgs. Thanks for your PR. I'm waiting for a kubernetes-sigs member to verify that this patch is reasonable to test. If it is, they should reply with Once the patch is verified, the new status will be reflected by the I understand the commands that are listed here. Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. |
/ok-to-test |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you for this improvement. This is a useful addition to the project. Much appreciated.
Users will need to keep in mind to avoid combining PodLifeTime's maxPodLifeTimeSeconds
with minPodAge
incorrectly. We currently do not validate accross plugin configurations to detect invalid combinations.
pkg/api/v1alpha1/types.go
Outdated
@@ -55,6 +55,9 @@ type DeschedulerPolicy struct { | |||
|
|||
// MaxNoOfPodsToTotal restricts maximum of pods to be evicted total. | |||
MaxNoOfPodsToEvictTotal *uint `json:"maxNoOfPodsToEvictTotal,omitempty"` | |||
|
|||
// MinPodAge prevents recently created pods (within the specified minutes) from being evicted. | |||
MinPodAge *uint `json:"minPodAge,omitempty"` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
v1alpha1
is deprecated, we will be removing this type soon. Better to avoid extending it. Also, a conversion needs to be wired to take the new field into account.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you for your comments Jan :)
I did not get this one tbh, I removed MinPodAge
from v1alpha1
and move it to DefaultEvictorArgs
descheduler/pkg/framework/plugins/defaultevictor/types.go
Lines 25 to 39 in ec7ad04
type DefaultEvictorArgs struct { | |
metav1.TypeMeta `json:",inline"` | |
NodeSelector string `json:"nodeSelector"` | |
EvictLocalStoragePods bool `json:"evictLocalStoragePods"` | |
EvictDaemonSetPods bool `json:"evictDaemonSetPods"` | |
EvictSystemCriticalPods bool `json:"evictSystemCriticalPods"` | |
IgnorePvcPods bool `json:"ignorePvcPods"` | |
EvictFailedBarePods bool `json:"evictFailedBarePods"` | |
LabelSelector *metav1.LabelSelector `json:"labelSelector"` | |
PriorityThreshold *api.PriorityThreshold `json:"priorityThreshold"` | |
NodeFit bool `json:"nodeFit"` | |
MinReplicas uint `json:"minReplicas"` | |
MinPodAge *metav1.Duration `json:"minPodAge"` | |
} |
So if we want to avoid extending v1alpha1
, I do not know which conversion we need to do.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is perfect :) I meant any new field under v1alpha1 type needs a conversion from v1alpha1 -> v1alpha2 included as well. Nothing else to be done here. Thank you.
README.md
Outdated
@@ -145,7 +145,7 @@ The Default Evictor Plugin is used by default for filtering pods before processi | |||
|`priorityThreshold`|`priorityThreshold`||(see [priority filtering](#priority-filtering))| | |||
|`nodeFit`|`bool`|`false`|(see [node fit filtering](#node-fit-filtering))| | |||
|`minReplicas`|`uint`|`0`| ignore eviction of pods where owner (e.g. `ReplicaSet`) replicas is below this threshold | | |||
|`minPodAge`|`uint`|`0`| ignore eviction of pods with a creation time within this threshold (in minutes) | | |||
|`minPodAge`|`metav1.Duration`|`0`| ignore eviction of pods with a creation time within this threshold (in minutes) | |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
"in minutes" can be dropped
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done in a8502e4 ty!
if pod.Status.StartTime == nil || time.Since(pod.Status.StartTime.Time) < time.Duration(defaultEvictorArgs.MinPodAge)*time.Minute { | ||
return fmt.Errorf("pod age is not older than MinPodAge: %d minutes", defaultEvictorArgs.MinPodAge) | ||
if pod.Status.StartTime == nil || time.Since(pod.Status.StartTime.Time) < defaultEvictorArgs.MinPodAge.Duration { | ||
return fmt.Errorf("pod age is not older than MinPodAge: %d seconds", uint(defaultEvictorArgs.MinPodAge.Duration.Seconds())) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Duration.String()
will help to keep the value short and redeable when user chooses high duration. https://pkg.go.dev/time#Duration.String
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done in 9adea9f
pkg/api/v1alpha1/conversion.go
Outdated
@@ -19,7 +19,6 @@ package v1alpha1 | |||
import ( | |||
"context" | |||
"fmt" | |||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can you please undone the new line removal? To keep this file unchanged.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done in 61b7b99
@@ -326,6 +329,8 @@ func TestDefaultEvictorFilter(t *testing.T) { | |||
lowPriority := int32(800) | |||
highPriority := int32(900) | |||
|
|||
minPodAge := metav1.Duration{50 * time.Minute} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
pkg/framework/plugins/defaultevictor/defaultevictor_test.go:332:15: k8s.io/apimachinery/pkg/apis/meta/v1.Duration struct literal uses unkeyed fields
metav1.Duration{Duration: 50 * time.Minute}
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done in c7de3c4
@@ -64,6 +65,7 @@ func HaveEvictAnnotation(pod *v1.Pod) bool { | |||
} | |||
|
|||
// New builds plugin from its arguments while passing a handle | |||
// nolint: gocyclo |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@ingvagabund do not want to forget about this. I need to add it to make the linter pass. I saw the codebase has a bunch of these, but if you want to proceed with something else let me know.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is fine. We will need to examine the code at some point and reduce the complexities.
/label tide/merge-method-squash |
/approve |
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: ingvagabund The full list of commands accepted by this bot can be found here. The pull request process is described here
Needs approval from an approver in each of these files:
Approvers can indicate their approval by writing |
@ingvagabund thanks for your help and review 🙇 |
Happy to help. Thank you for your time and contribution. |
This PR contains the following updates: | Package | Update | Change | |---|---|---| | [descheduler](https://redirect.github.com/kubernetes-sigs/descheduler) | minor | `0.30.1` -> `0.31.0` | --- ### Release Notes <details> <summary>kubernetes-sigs/descheduler (descheduler)</summary> ### [`v0.31.0`](https://redirect.github.com/kubernetes-sigs/descheduler/releases/tag/v0.31.0): Descheduler v0.31.0 [Compare Source](https://redirect.github.com/kubernetes-sigs/descheduler/compare/v0.30.1...v0.31.0) #### What's Changed - bump to to 1.22.3 to address CVE-2024-24788 by [@​a7i](https://redirect.github.com/a7i) in [https://github.com/kubernetes-sigs/descheduler/pull/1408](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1408) - Fix the replicas value type for the descheduler helm-chart by [@​hanyouqing](https://redirect.github.com/hanyouqing) in [https://github.com/kubernetes-sigs/descheduler/pull/1378](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1378) - Helm chart - allow 'falsey' value in cmdOption by [@​omerap12](https://redirect.github.com/omerap12) in [https://github.com/kubernetes-sigs/descheduler/pull/1390](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1390) - fix helm's default deschedulerPolicy by [@​duplabe](https://redirect.github.com/duplabe) in [https://github.com/kubernetes-sigs/descheduler/pull/1412](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1412) - fix TOC location in Readme by [@​duplabe](https://redirect.github.com/duplabe) in [https://github.com/kubernetes-sigs/descheduler/pull/1413](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1413) - use cmd context instead of using context.Background() by [@​googs1025](https://redirect.github.com/googs1025) in [https://github.com/kubernetes-sigs/descheduler/pull/1416](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1416) - fix the issue that the pod anti-filtering rules are not taking effect by [@​fanhaouu](https://redirect.github.com/fanhaouu) in [https://github.com/kubernetes-sigs/descheduler/pull/1395](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1395) - Bump otel semconv to 1.24 by [@​damemi](https://redirect.github.com/damemi) in [https://github.com/kubernetes-sigs/descheduler/pull/1429](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1429) - chore: reduce repetition of go versions by [@​a7i](https://redirect.github.com/a7i) in [https://github.com/kubernetes-sigs/descheduler/pull/1432](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1432) - bump go to 1.22.4 for CVE-2024-24790 and CVE-2024-24789 by [@​a7i](https://redirect.github.com/a7i) in [https://github.com/kubernetes-sigs/descheduler/pull/1433](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1433) - return pod qos in advance by [@​fanhaouu](https://redirect.github.com/fanhaouu) in [https://github.com/kubernetes-sigs/descheduler/pull/1435](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1435) - add validation ut by [@​googs1025](https://redirect.github.com/googs1025) in [https://github.com/kubernetes-sigs/descheduler/pull/1439](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1439) - refactor some methods in e2e test by [@​googs1025](https://redirect.github.com/googs1025) in [https://github.com/kubernetes-sigs/descheduler/pull/1441](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1441) - Automated cherry pick of [#​1427](https://redirect.github.com/kubernetes-sigs/descheduler/issues/1427): helm: upgrade to v0.30.1 by [@​a7i](https://redirect.github.com/a7i) in [https://github.com/kubernetes-sigs/descheduler/pull/1431](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1431) - chore: cleanup duplicated code by [@​googs1025](https://redirect.github.com/googs1025) in [https://github.com/kubernetes-sigs/descheduler/pull/1438](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1438) - fix: return the unmatched cases first by [@​googs1025](https://redirect.github.com/googs1025) in [https://github.com/kubernetes-sigs/descheduler/pull/1446](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1446) - Unit-test: add necessary ownerRef to the pod. by [@​zhifei92](https://redirect.github.com/zhifei92) in [https://github.com/kubernetes-sigs/descheduler/pull/1445](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1445) - PodEvictor: refactoring and preparation for eviction requests by [@​ingvagabund](https://redirect.github.com/ingvagabund) in [https://github.com/kubernetes-sigs/descheduler/pull/1447](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1447) - refactor: PodMatchNodeSelector method by [@​googs1025](https://redirect.github.com/googs1025) in [https://github.com/kubernetes-sigs/descheduler/pull/1450](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1450) - return node fit error in advance by [@​fanhaouu](https://redirect.github.com/fanhaouu) in [https://github.com/kubernetes-sigs/descheduler/pull/1436](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1436) - test: generate uid when building a pod by [@​ingvagabund](https://redirect.github.com/ingvagabund) in [https://github.com/kubernetes-sigs/descheduler/pull/1454](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1454) - feat: pod evictor options by [@​a7i](https://redirect.github.com/a7i) in [https://github.com/kubernetes-sigs/descheduler/pull/1455](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1455) - fix: indexer cache error when default evictor is re-initialized by [@​a7i](https://redirect.github.com/a7i) in [https://github.com/kubernetes-sigs/descheduler/pull/1452](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1452) - fix: add info for error return by [@​googs1025](https://redirect.github.com/googs1025) in [https://github.com/kubernetes-sigs/descheduler/pull/1457](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1457) - PodEvictor: turn an exceeded limit into an error by [@​ingvagabund](https://redirect.github.com/ingvagabund) in [https://github.com/kubernetes-sigs/descheduler/pull/1456](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1456) - descheduler_test.go refactoring by [@​ingvagabund](https://redirect.github.com/ingvagabund) in [https://github.com/kubernetes-sigs/descheduler/pull/1459](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1459) - The descheduler supports limiting the total number of pods evicted per rescheduling cycle by [@​zhifei92](https://redirect.github.com/zhifei92) in [https://github.com/kubernetes-sigs/descheduler/pull/1451](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1451) - descheduler_test.go: initDescheduler: pass a new ctx with cancel inst… by [@​ingvagabund](https://redirect.github.com/ingvagabund) in [https://github.com/kubernetes-sigs/descheduler/pull/1460](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1460) - pod evictor: make it thread safe by [@​ingvagabund](https://redirect.github.com/ingvagabund) in [https://github.com/kubernetes-sigs/descheduler/pull/1458](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1458) - Update README about maxNoOfPodsToEvictTotal by [@​zhifei92](https://redirect.github.com/zhifei92) in [https://github.com/kubernetes-sigs/descheduler/pull/1463](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1463) - refactor: replace k8s.io/utils/pointer with k8s.io/utils/ptr by [@​eminaktas](https://redirect.github.com/eminaktas) in [https://github.com/kubernetes-sigs/descheduler/pull/1464](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1464) - feat: Add namespace override settings in Helm Chart by [@​ternbusty](https://redirect.github.com/ternbusty) in [https://github.com/kubernetes-sigs/descheduler/pull/1444](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1444) - fix: helm leader-election typo to `resourceNamespace` by [@​a7i](https://redirect.github.com/a7i) in [https://github.com/kubernetes-sigs/descheduler/pull/1443](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1443) - helm unit tests by [@​a7i](https://redirect.github.com/a7i) in [https://github.com/kubernetes-sigs/descheduler/pull/1467](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1467) - feat: add init and ephemeral container checks to PodLifeTime by [@​adammw](https://redirect.github.com/adammw) in [https://github.com/kubernetes-sigs/descheduler/pull/1468](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1468) - bump(github.com/golangci/golangci-lint)=v1.59.1 by [@​ingvagabund](https://redirect.github.com/ingvagabund) in [https://github.com/kubernetes-sigs/descheduler/pull/1473](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1473) - e2e: TestTooManyRestarts: run descheduler as a whole instead of a single plugin by [@​ingvagabund](https://redirect.github.com/ingvagabund) in [https://github.com/kubernetes-sigs/descheduler/pull/1472](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1472) - e2e: TestRemoveDuplicates: limit the tested namespace by [@​ingvagabund](https://redirect.github.com/ingvagabund) in [https://github.com/kubernetes-sigs/descheduler/pull/1471](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1471) - KEP-1397: descheduler integration with evacuation API as an alternative to eviction API by [@​ingvagabund](https://redirect.github.com/ingvagabund) in [https://github.com/kubernetes-sigs/descheduler/pull/1354](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1354) - skip eviction when pod creation time is below minPodAge threshold setting by [@​victorgs](https://redirect.github.com/victorgs) in [https://github.com/kubernetes-sigs/descheduler/pull/1475](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1475) - fix: minor version parsing in version compatibility check by [@​a7i](https://redirect.github.com/a7i) in [https://github.com/kubernetes-sigs/descheduler/pull/1430](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1430) - e2e: TestLeaderElection: delete the lease and increase the retry period by [@​ingvagabund](https://redirect.github.com/ingvagabund) in [https://github.com/kubernetes-sigs/descheduler/pull/1469](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1469) - bump go to 1.22.5 by [@​shahar-h](https://redirect.github.com/shahar-h) in [https://github.com/kubernetes-sigs/descheduler/pull/1476](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1476) - \[TestTooManyRestarts] e2e: build a descheduler image and run the descheduler as a pod by [@​ingvagabund](https://redirect.github.com/ingvagabund) in [https://github.com/kubernetes-sigs/descheduler/pull/1474](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1474) - docs: Provide OCI annotation for where to find image sources by [@​sklirg](https://redirect.github.com/sklirg) in [https://github.com/kubernetes-sigs/descheduler/pull/1479](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1479) - Remove descheduler/v1alpha1 type by [@​ingvagabund](https://redirect.github.com/ingvagabund) in [https://github.com/kubernetes-sigs/descheduler/pull/1482](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1482) - tests: de-duplicate framework handle initialization by [@​ingvagabund](https://redirect.github.com/ingvagabund) in [https://github.com/kubernetes-sigs/descheduler/pull/1483](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1483) - \[unit test]: test descheduling limits by [@​ingvagabund](https://redirect.github.com/ingvagabund) in [https://github.com/kubernetes-sigs/descheduler/pull/1484](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1484) - \[unit test]: simplify test pod evictor reset by [@​ingvagabund](https://redirect.github.com/ingvagabund) in [https://github.com/kubernetes-sigs/descheduler/pull/1485](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1485) - README: drop v1alpha1 descheduler policy mention by [@​ingvagabund](https://redirect.github.com/ingvagabund) in [https://github.com/kubernetes-sigs/descheduler/pull/1498](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1498) - bump k8s.io libs to v0.31.0 by [@​a7i](https://redirect.github.com/a7i) in [https://github.com/kubernetes-sigs/descheduler/pull/1496](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1496) - chore: upgrade python EOL and action versions by [@​a7i](https://redirect.github.com/a7i) in [https://github.com/kubernetes-sigs/descheduler/pull/1505](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1505) - descheduler v0.31: update e2e test versions by [@​a7i](https://redirect.github.com/a7i) in [https://github.com/kubernetes-sigs/descheduler/pull/1504](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1504) - feat(helm): make securityContext conditional in Deployment and CronJob by [@​bendikp](https://redirect.github.com/bendikp) in [https://github.com/kubernetes-sigs/descheduler/pull/1507](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1507) - Plugin args: tag arguments with omitempty to reduce the marshalled json size by [@​ingvagabund](https://redirect.github.com/ingvagabund) in [https://github.com/kubernetes-sigs/descheduler/pull/1480](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1480) - descheduler v0.31: update docs and manifests by [@​a7i](https://redirect.github.com/a7i) in [https://github.com/kubernetes-sigs/descheduler/pull/1506](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1506) - \[e2e] no test timeouts, produce the same image tag as in production by [@​fanhaouu](https://redirect.github.com/fanhaouu) in [https://github.com/kubernetes-sigs/descheduler/pull/1508](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1508) - chore: replace `github.com/ghodss/yaml` with `sigs.k8s.io/yaml` by [@​Juneezee](https://redirect.github.com/Juneezee) in [https://github.com/kubernetes-sigs/descheduler/pull/1510](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1510) #### New Contributors - [@​hanyouqing](https://redirect.github.com/hanyouqing) made their first contribution in [https://github.com/kubernetes-sigs/descheduler/pull/1378](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1378) - [@​omerap12](https://redirect.github.com/omerap12) made their first contribution in [https://github.com/kubernetes-sigs/descheduler/pull/1390](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1390) - [@​duplabe](https://redirect.github.com/duplabe) made their first contribution in [https://github.com/kubernetes-sigs/descheduler/pull/1412](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1412) - [@​googs1025](https://redirect.github.com/googs1025) made their first contribution in [https://github.com/kubernetes-sigs/descheduler/pull/1416](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1416) - [@​zhifei92](https://redirect.github.com/zhifei92) made their first contribution in [https://github.com/kubernetes-sigs/descheduler/pull/1445](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1445) - [@​ternbusty](https://redirect.github.com/ternbusty) made their first contribution in [https://github.com/kubernetes-sigs/descheduler/pull/1444](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1444) - [@​adammw](https://redirect.github.com/adammw) made their first contribution in [https://github.com/kubernetes-sigs/descheduler/pull/1468](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1468) - [@​shahar-h](https://redirect.github.com/shahar-h) made their first contribution in [https://github.com/kubernetes-sigs/descheduler/pull/1476](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1476) - [@​sklirg](https://redirect.github.com/sklirg) made their first contribution in [https://github.com/kubernetes-sigs/descheduler/pull/1479](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1479) - [@​bendikp](https://redirect.github.com/bendikp) made their first contribution in [https://github.com/kubernetes-sigs/descheduler/pull/1507](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1507) - [@​Juneezee](https://redirect.github.com/Juneezee) made their first contribution in [https://github.com/kubernetes-sigs/descheduler/pull/1510](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1510) **Full Changelog**: kubernetes-sigs/descheduler@v0.30.0...v0.31.0 </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/broersma-forslund/homelab). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOC41OS4yIiwidXBkYXRlZEluVmVyIjoiMzguNTkuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
This PR contains the following updates: | Package | Update | Change | |---|---|---| | [descheduler](https://redirect.github.com/kubernetes-sigs/descheduler) | minor | `0.30.1` -> `0.31.0` | --- > [!WARNING] > Some dependencies could not be looked up. Check the Dependency Dashboard for more information. --- ### Release Notes <details> <summary>kubernetes-sigs/descheduler (descheduler)</summary> ### [`v0.31.0`](https://redirect.github.com/kubernetes-sigs/descheduler/releases/tag/v0.31.0): Descheduler v0.31.0 [Compare Source](https://redirect.github.com/kubernetes-sigs/descheduler/compare/v0.30.1...v0.31.0) #### What's Changed - bump to to 1.22.3 to address CVE-2024-24788 by [@​a7i](https://redirect.github.com/a7i) in [https://github.com/kubernetes-sigs/descheduler/pull/1408](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1408) - Fix the replicas value type for the descheduler helm-chart by [@​hanyouqing](https://redirect.github.com/hanyouqing) in [https://github.com/kubernetes-sigs/descheduler/pull/1378](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1378) - Helm chart - allow 'falsey' value in cmdOption by [@​omerap12](https://redirect.github.com/omerap12) in [https://github.com/kubernetes-sigs/descheduler/pull/1390](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1390) - fix helm's default deschedulerPolicy by [@​duplabe](https://redirect.github.com/duplabe) in [https://github.com/kubernetes-sigs/descheduler/pull/1412](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1412) - fix TOC location in Readme by [@​duplabe](https://redirect.github.com/duplabe) in [https://github.com/kubernetes-sigs/descheduler/pull/1413](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1413) - use cmd context instead of using context.Background() by [@​googs1025](https://redirect.github.com/googs1025) in [https://github.com/kubernetes-sigs/descheduler/pull/1416](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1416) - fix the issue that the pod anti-filtering rules are not taking effect by [@​fanhaouu](https://redirect.github.com/fanhaouu) in [https://github.com/kubernetes-sigs/descheduler/pull/1395](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1395) - Bump otel semconv to 1.24 by [@​damemi](https://redirect.github.com/damemi) in [https://github.com/kubernetes-sigs/descheduler/pull/1429](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1429) - chore: reduce repetition of go versions by [@​a7i](https://redirect.github.com/a7i) in [https://github.com/kubernetes-sigs/descheduler/pull/1432](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1432) - bump go to 1.22.4 for CVE-2024-24790 and CVE-2024-24789 by [@​a7i](https://redirect.github.com/a7i) in [https://github.com/kubernetes-sigs/descheduler/pull/1433](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1433) - return pod qos in advance by [@​fanhaouu](https://redirect.github.com/fanhaouu) in [https://github.com/kubernetes-sigs/descheduler/pull/1435](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1435) - add validation ut by [@​googs1025](https://redirect.github.com/googs1025) in [https://github.com/kubernetes-sigs/descheduler/pull/1439](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1439) - refactor some methods in e2e test by [@​googs1025](https://redirect.github.com/googs1025) in [https://github.com/kubernetes-sigs/descheduler/pull/1441](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1441) - Automated cherry pick of [#​1427](https://redirect.github.com/kubernetes-sigs/descheduler/issues/1427): helm: upgrade to v0.30.1 by [@​a7i](https://redirect.github.com/a7i) in [https://github.com/kubernetes-sigs/descheduler/pull/1431](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1431) - chore: cleanup duplicated code by [@​googs1025](https://redirect.github.com/googs1025) in [https://github.com/kubernetes-sigs/descheduler/pull/1438](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1438) - fix: return the unmatched cases first by [@​googs1025](https://redirect.github.com/googs1025) in [https://github.com/kubernetes-sigs/descheduler/pull/1446](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1446) - Unit-test: add necessary ownerRef to the pod. by [@​zhifei92](https://redirect.github.com/zhifei92) in [https://github.com/kubernetes-sigs/descheduler/pull/1445](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1445) - PodEvictor: refactoring and preparation for eviction requests by [@​ingvagabund](https://redirect.github.com/ingvagabund) in [https://github.com/kubernetes-sigs/descheduler/pull/1447](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1447) - refactor: PodMatchNodeSelector method by [@​googs1025](https://redirect.github.com/googs1025) in [https://github.com/kubernetes-sigs/descheduler/pull/1450](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1450) - return node fit error in advance by [@​fanhaouu](https://redirect.github.com/fanhaouu) in [https://github.com/kubernetes-sigs/descheduler/pull/1436](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1436) - test: generate uid when building a pod by [@​ingvagabund](https://redirect.github.com/ingvagabund) in [https://github.com/kubernetes-sigs/descheduler/pull/1454](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1454) - feat: pod evictor options by [@​a7i](https://redirect.github.com/a7i) in [https://github.com/kubernetes-sigs/descheduler/pull/1455](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1455) - fix: indexer cache error when default evictor is re-initialized by [@​a7i](https://redirect.github.com/a7i) in [https://github.com/kubernetes-sigs/descheduler/pull/1452](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1452) - fix: add info for error return by [@​googs1025](https://redirect.github.com/googs1025) in [https://github.com/kubernetes-sigs/descheduler/pull/1457](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1457) - PodEvictor: turn an exceeded limit into an error by [@​ingvagabund](https://redirect.github.com/ingvagabund) in [https://github.com/kubernetes-sigs/descheduler/pull/1456](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1456) - descheduler_test.go refactoring by [@​ingvagabund](https://redirect.github.com/ingvagabund) in [https://github.com/kubernetes-sigs/descheduler/pull/1459](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1459) - The descheduler supports limiting the total number of pods evicted per rescheduling cycle by [@​zhifei92](https://redirect.github.com/zhifei92) in [https://github.com/kubernetes-sigs/descheduler/pull/1451](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1451) - descheduler_test.go: initDescheduler: pass a new ctx with cancel inst… by [@​ingvagabund](https://redirect.github.com/ingvagabund) in [https://github.com/kubernetes-sigs/descheduler/pull/1460](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1460) - pod evictor: make it thread safe by [@​ingvagabund](https://redirect.github.com/ingvagabund) in [https://github.com/kubernetes-sigs/descheduler/pull/1458](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1458) - Update README about maxNoOfPodsToEvictTotal by [@​zhifei92](https://redirect.github.com/zhifei92) in [https://github.com/kubernetes-sigs/descheduler/pull/1463](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1463) - refactor: replace k8s.io/utils/pointer with k8s.io/utils/ptr by [@​eminaktas](https://redirect.github.com/eminaktas) in [https://github.com/kubernetes-sigs/descheduler/pull/1464](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1464) - feat: Add namespace override settings in Helm Chart by [@​ternbusty](https://redirect.github.com/ternbusty) in [https://github.com/kubernetes-sigs/descheduler/pull/1444](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1444) - fix: helm leader-election typo to `resourceNamespace` by [@​a7i](https://redirect.github.com/a7i) in [https://github.com/kubernetes-sigs/descheduler/pull/1443](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1443) - helm unit tests by [@​a7i](https://redirect.github.com/a7i) in [https://github.com/kubernetes-sigs/descheduler/pull/1467](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1467) - feat: add init and ephemeral container checks to PodLifeTime by [@​adammw](https://redirect.github.com/adammw) in [https://github.com/kubernetes-sigs/descheduler/pull/1468](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1468) - bump(github.com/golangci/golangci-lint)=v1.59.1 by [@​ingvagabund](https://redirect.github.com/ingvagabund) in [https://github.com/kubernetes-sigs/descheduler/pull/1473](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1473) - e2e: TestTooManyRestarts: run descheduler as a whole instead of a single plugin by [@​ingvagabund](https://redirect.github.com/ingvagabund) in [https://github.com/kubernetes-sigs/descheduler/pull/1472](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1472) - e2e: TestRemoveDuplicates: limit the tested namespace by [@​ingvagabund](https://redirect.github.com/ingvagabund) in [https://github.com/kubernetes-sigs/descheduler/pull/1471](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1471) - KEP-1397: descheduler integration with evacuation API as an alternative to eviction API by [@​ingvagabund](https://redirect.github.com/ingvagabund) in [https://github.com/kubernetes-sigs/descheduler/pull/1354](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1354) - skip eviction when pod creation time is below minPodAge threshold setting by [@​victorgs](https://redirect.github.com/victorgs) in [https://github.com/kubernetes-sigs/descheduler/pull/1475](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1475) - fix: minor version parsing in version compatibility check by [@​a7i](https://redirect.github.com/a7i) in [https://github.com/kubernetes-sigs/descheduler/pull/1430](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1430) - e2e: TestLeaderElection: delete the lease and increase the retry period by [@​ingvagabund](https://redirect.github.com/ingvagabund) in [https://github.com/kubernetes-sigs/descheduler/pull/1469](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1469) - bump go to 1.22.5 by [@​shahar-h](https://redirect.github.com/shahar-h) in [https://github.com/kubernetes-sigs/descheduler/pull/1476](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1476) - \[TestTooManyRestarts] e2e: build a descheduler image and run the descheduler as a pod by [@​ingvagabund](https://redirect.github.com/ingvagabund) in [https://github.com/kubernetes-sigs/descheduler/pull/1474](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1474) - docs: Provide OCI annotation for where to find image sources by [@​sklirg](https://redirect.github.com/sklirg) in [https://github.com/kubernetes-sigs/descheduler/pull/1479](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1479) - Remove descheduler/v1alpha1 type by [@​ingvagabund](https://redirect.github.com/ingvagabund) in [https://github.com/kubernetes-sigs/descheduler/pull/1482](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1482) - tests: de-duplicate framework handle initialization by [@​ingvagabund](https://redirect.github.com/ingvagabund) in [https://github.com/kubernetes-sigs/descheduler/pull/1483](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1483) - \[unit test]: test descheduling limits by [@​ingvagabund](https://redirect.github.com/ingvagabund) in [https://github.com/kubernetes-sigs/descheduler/pull/1484](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1484) - \[unit test]: simplify test pod evictor reset by [@​ingvagabund](https://redirect.github.com/ingvagabund) in [https://github.com/kubernetes-sigs/descheduler/pull/1485](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1485) - README: drop v1alpha1 descheduler policy mention by [@​ingvagabund](https://redirect.github.com/ingvagabund) in [https://github.com/kubernetes-sigs/descheduler/pull/1498](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1498) - bump k8s.io libs to v0.31.0 by [@​a7i](https://redirect.github.com/a7i) in [https://github.com/kubernetes-sigs/descheduler/pull/1496](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1496) - chore: upgrade python EOL and action versions by [@​a7i](https://redirect.github.com/a7i) in [https://github.com/kubernetes-sigs/descheduler/pull/1505](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1505) - descheduler v0.31: update e2e test versions by [@​a7i](https://redirect.github.com/a7i) in [https://github.com/kubernetes-sigs/descheduler/pull/1504](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1504) - feat(helm): make securityContext conditional in Deployment and CronJob by [@​bendikp](https://redirect.github.com/bendikp) in [https://github.com/kubernetes-sigs/descheduler/pull/1507](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1507) - Plugin args: tag arguments with omitempty to reduce the marshalled json size by [@​ingvagabund](https://redirect.github.com/ingvagabund) in [https://github.com/kubernetes-sigs/descheduler/pull/1480](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1480) - descheduler v0.31: update docs and manifests by [@​a7i](https://redirect.github.com/a7i) in [https://github.com/kubernetes-sigs/descheduler/pull/1506](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1506) - \[e2e] no test timeouts, produce the same image tag as in production by [@​fanhaouu](https://redirect.github.com/fanhaouu) in [https://github.com/kubernetes-sigs/descheduler/pull/1508](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1508) - chore: replace `github.com/ghodss/yaml` with `sigs.k8s.io/yaml` by [@​Juneezee](https://redirect.github.com/Juneezee) in [https://github.com/kubernetes-sigs/descheduler/pull/1510](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1510) #### New Contributors - [@​hanyouqing](https://redirect.github.com/hanyouqing) made their first contribution in [https://github.com/kubernetes-sigs/descheduler/pull/1378](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1378) - [@​omerap12](https://redirect.github.com/omerap12) made their first contribution in [https://github.com/kubernetes-sigs/descheduler/pull/1390](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1390) - [@​duplabe](https://redirect.github.com/duplabe) made their first contribution in [https://github.com/kubernetes-sigs/descheduler/pull/1412](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1412) - [@​googs1025](https://redirect.github.com/googs1025) made their first contribution in [https://github.com/kubernetes-sigs/descheduler/pull/1416](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1416) - [@​zhifei92](https://redirect.github.com/zhifei92) made their first contribution in [https://github.com/kubernetes-sigs/descheduler/pull/1445](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1445) - [@​ternbusty](https://redirect.github.com/ternbusty) made their first contribution in [https://github.com/kubernetes-sigs/descheduler/pull/1444](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1444) - [@​adammw](https://redirect.github.com/adammw) made their first contribution in [https://github.com/kubernetes-sigs/descheduler/pull/1468](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1468) - [@​shahar-h](https://redirect.github.com/shahar-h) made their first contribution in [https://github.com/kubernetes-sigs/descheduler/pull/1476](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1476) - [@​sklirg](https://redirect.github.com/sklirg) made their first contribution in [https://github.com/kubernetes-sigs/descheduler/pull/1479](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1479) - [@​bendikp](https://redirect.github.com/bendikp) made their first contribution in [https://github.com/kubernetes-sigs/descheduler/pull/1507](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1507) - [@​Juneezee](https://redirect.github.com/Juneezee) made their first contribution in [https://github.com/kubernetes-sigs/descheduler/pull/1510](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1510) **Full Changelog**: kubernetes-sigs/descheduler@v0.30.0...v0.31.0 </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOC43My4zIiwidXBkYXRlZEluVmVyIjoiMzguNzMuMyIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsicmVub3ZhdGUvaGVsbSIsInR5cGUvbWlub3IiXX0=-->
This PR contains the following updates: | Package | Update | Change | |---|---|---| | [descheduler](https://redirect.github.com/kubernetes-sigs/descheduler) | minor | `0.30.1` -> `0.31.0` | --- ### Release Notes <details> <summary>kubernetes-sigs/descheduler (descheduler)</summary> ### [`v0.31.0`](https://redirect.github.com/kubernetes-sigs/descheduler/releases/tag/v0.31.0): Descheduler v0.31.0 [Compare Source](https://redirect.github.com/kubernetes-sigs/descheduler/compare/v0.30.1...v0.31.0) #### What's Changed - bump to to 1.22.3 to address CVE-2024-24788 by [@​a7i](https://redirect.github.com/a7i) in [https://github.com/kubernetes-sigs/descheduler/pull/1408](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1408) - Fix the replicas value type for the descheduler helm-chart by [@​hanyouqing](https://redirect.github.com/hanyouqing) in [https://github.com/kubernetes-sigs/descheduler/pull/1378](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1378) - Helm chart - allow 'falsey' value in cmdOption by [@​omerap12](https://redirect.github.com/omerap12) in [https://github.com/kubernetes-sigs/descheduler/pull/1390](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1390) - fix helm's default deschedulerPolicy by [@​duplabe](https://redirect.github.com/duplabe) in [https://github.com/kubernetes-sigs/descheduler/pull/1412](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1412) - fix TOC location in Readme by [@​duplabe](https://redirect.github.com/duplabe) in [https://github.com/kubernetes-sigs/descheduler/pull/1413](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1413) - use cmd context instead of using context.Background() by [@​googs1025](https://redirect.github.com/googs1025) in [https://github.com/kubernetes-sigs/descheduler/pull/1416](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1416) - fix the issue that the pod anti-filtering rules are not taking effect by [@​fanhaouu](https://redirect.github.com/fanhaouu) in [https://github.com/kubernetes-sigs/descheduler/pull/1395](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1395) - Bump otel semconv to 1.24 by [@​damemi](https://redirect.github.com/damemi) in [https://github.com/kubernetes-sigs/descheduler/pull/1429](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1429) - chore: reduce repetition of go versions by [@​a7i](https://redirect.github.com/a7i) in [https://github.com/kubernetes-sigs/descheduler/pull/1432](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1432) - bump go to 1.22.4 for CVE-2024-24790 and CVE-2024-24789 by [@​a7i](https://redirect.github.com/a7i) in [https://github.com/kubernetes-sigs/descheduler/pull/1433](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1433) - return pod qos in advance by [@​fanhaouu](https://redirect.github.com/fanhaouu) in [https://github.com/kubernetes-sigs/descheduler/pull/1435](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1435) - add validation ut by [@​googs1025](https://redirect.github.com/googs1025) in [https://github.com/kubernetes-sigs/descheduler/pull/1439](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1439) - refactor some methods in e2e test by [@​googs1025](https://redirect.github.com/googs1025) in [https://github.com/kubernetes-sigs/descheduler/pull/1441](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1441) - Automated cherry pick of [#​1427](https://redirect.github.com/kubernetes-sigs/descheduler/issues/1427): helm: upgrade to v0.30.1 by [@​a7i](https://redirect.github.com/a7i) in [https://github.com/kubernetes-sigs/descheduler/pull/1431](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1431) - chore: cleanup duplicated code by [@​googs1025](https://redirect.github.com/googs1025) in [https://github.com/kubernetes-sigs/descheduler/pull/1438](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1438) - fix: return the unmatched cases first by [@​googs1025](https://redirect.github.com/googs1025) in [https://github.com/kubernetes-sigs/descheduler/pull/1446](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1446) - Unit-test: add necessary ownerRef to the pod. by [@​zhifei92](https://redirect.github.com/zhifei92) in [https://github.com/kubernetes-sigs/descheduler/pull/1445](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1445) - PodEvictor: refactoring and preparation for eviction requests by [@​ingvagabund](https://redirect.github.com/ingvagabund) in [https://github.com/kubernetes-sigs/descheduler/pull/1447](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1447) - refactor: PodMatchNodeSelector method by [@​googs1025](https://redirect.github.com/googs1025) in [https://github.com/kubernetes-sigs/descheduler/pull/1450](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1450) - return node fit error in advance by [@​fanhaouu](https://redirect.github.com/fanhaouu) in [https://github.com/kubernetes-sigs/descheduler/pull/1436](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1436) - test: generate uid when building a pod by [@​ingvagabund](https://redirect.github.com/ingvagabund) in [https://github.com/kubernetes-sigs/descheduler/pull/1454](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1454) - feat: pod evictor options by [@​a7i](https://redirect.github.com/a7i) in [https://github.com/kubernetes-sigs/descheduler/pull/1455](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1455) - fix: indexer cache error when default evictor is re-initialized by [@​a7i](https://redirect.github.com/a7i) in [https://github.com/kubernetes-sigs/descheduler/pull/1452](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1452) - fix: add info for error return by [@​googs1025](https://redirect.github.com/googs1025) in [https://github.com/kubernetes-sigs/descheduler/pull/1457](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1457) - PodEvictor: turn an exceeded limit into an error by [@​ingvagabund](https://redirect.github.com/ingvagabund) in [https://github.com/kubernetes-sigs/descheduler/pull/1456](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1456) - descheduler_test.go refactoring by [@​ingvagabund](https://redirect.github.com/ingvagabund) in [https://github.com/kubernetes-sigs/descheduler/pull/1459](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1459) - The descheduler supports limiting the total number of pods evicted per rescheduling cycle by [@​zhifei92](https://redirect.github.com/zhifei92) in [https://github.com/kubernetes-sigs/descheduler/pull/1451](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1451) - descheduler_test.go: initDescheduler: pass a new ctx with cancel inst… by [@​ingvagabund](https://redirect.github.com/ingvagabund) in [https://github.com/kubernetes-sigs/descheduler/pull/1460](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1460) - pod evictor: make it thread safe by [@​ingvagabund](https://redirect.github.com/ingvagabund) in [https://github.com/kubernetes-sigs/descheduler/pull/1458](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1458) - Update README about maxNoOfPodsToEvictTotal by [@​zhifei92](https://redirect.github.com/zhifei92) in [https://github.com/kubernetes-sigs/descheduler/pull/1463](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1463) - refactor: replace k8s.io/utils/pointer with k8s.io/utils/ptr by [@​eminaktas](https://redirect.github.com/eminaktas) in [https://github.com/kubernetes-sigs/descheduler/pull/1464](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1464) - feat: Add namespace override settings in Helm Chart by [@​ternbusty](https://redirect.github.com/ternbusty) in [https://github.com/kubernetes-sigs/descheduler/pull/1444](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1444) - fix: helm leader-election typo to `resourceNamespace` by [@​a7i](https://redirect.github.com/a7i) in [https://github.com/kubernetes-sigs/descheduler/pull/1443](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1443) - helm unit tests by [@​a7i](https://redirect.github.com/a7i) in [https://github.com/kubernetes-sigs/descheduler/pull/1467](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1467) - feat: add init and ephemeral container checks to PodLifeTime by [@​adammw](https://redirect.github.com/adammw) in [https://github.com/kubernetes-sigs/descheduler/pull/1468](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1468) - bump(github.com/golangci/golangci-lint)=v1.59.1 by [@​ingvagabund](https://redirect.github.com/ingvagabund) in [https://github.com/kubernetes-sigs/descheduler/pull/1473](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1473) - e2e: TestTooManyRestarts: run descheduler as a whole instead of a single plugin by [@​ingvagabund](https://redirect.github.com/ingvagabund) in [https://github.com/kubernetes-sigs/descheduler/pull/1472](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1472) - e2e: TestRemoveDuplicates: limit the tested namespace by [@​ingvagabund](https://redirect.github.com/ingvagabund) in [https://github.com/kubernetes-sigs/descheduler/pull/1471](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1471) - KEP-1397: descheduler integration with evacuation API as an alternative to eviction API by [@​ingvagabund](https://redirect.github.com/ingvagabund) in [https://github.com/kubernetes-sigs/descheduler/pull/1354](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1354) - skip eviction when pod creation time is below minPodAge threshold setting by [@​victorgs](https://redirect.github.com/victorgs) in [https://github.com/kubernetes-sigs/descheduler/pull/1475](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1475) - fix: minor version parsing in version compatibility check by [@​a7i](https://redirect.github.com/a7i) in [https://github.com/kubernetes-sigs/descheduler/pull/1430](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1430) - e2e: TestLeaderElection: delete the lease and increase the retry period by [@​ingvagabund](https://redirect.github.com/ingvagabund) in [https://github.com/kubernetes-sigs/descheduler/pull/1469](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1469) - bump go to 1.22.5 by [@​shahar-h](https://redirect.github.com/shahar-h) in [https://github.com/kubernetes-sigs/descheduler/pull/1476](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1476) - \[TestTooManyRestarts] e2e: build a descheduler image and run the descheduler as a pod by [@​ingvagabund](https://redirect.github.com/ingvagabund) in [https://github.com/kubernetes-sigs/descheduler/pull/1474](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1474) - docs: Provide OCI annotation for where to find image sources by [@​sklirg](https://redirect.github.com/sklirg) in [https://github.com/kubernetes-sigs/descheduler/pull/1479](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1479) - Remove descheduler/v1alpha1 type by [@​ingvagabund](https://redirect.github.com/ingvagabund) in [https://github.com/kubernetes-sigs/descheduler/pull/1482](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1482) - tests: de-duplicate framework handle initialization by [@​ingvagabund](https://redirect.github.com/ingvagabund) in [https://github.com/kubernetes-sigs/descheduler/pull/1483](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1483) - \[unit test]: test descheduling limits by [@​ingvagabund](https://redirect.github.com/ingvagabund) in [https://github.com/kubernetes-sigs/descheduler/pull/1484](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1484) - \[unit test]: simplify test pod evictor reset by [@​ingvagabund](https://redirect.github.com/ingvagabund) in [https://github.com/kubernetes-sigs/descheduler/pull/1485](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1485) - README: drop v1alpha1 descheduler policy mention by [@​ingvagabund](https://redirect.github.com/ingvagabund) in [https://github.com/kubernetes-sigs/descheduler/pull/1498](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1498) - bump k8s.io libs to v0.31.0 by [@​a7i](https://redirect.github.com/a7i) in [https://github.com/kubernetes-sigs/descheduler/pull/1496](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1496) - chore: upgrade python EOL and action versions by [@​a7i](https://redirect.github.com/a7i) in [https://github.com/kubernetes-sigs/descheduler/pull/1505](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1505) - descheduler v0.31: update e2e test versions by [@​a7i](https://redirect.github.com/a7i) in [https://github.com/kubernetes-sigs/descheduler/pull/1504](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1504) - feat(helm): make securityContext conditional in Deployment and CronJob by [@​bendikp](https://redirect.github.com/bendikp) in [https://github.com/kubernetes-sigs/descheduler/pull/1507](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1507) - Plugin args: tag arguments with omitempty to reduce the marshalled json size by [@​ingvagabund](https://redirect.github.com/ingvagabund) in [https://github.com/kubernetes-sigs/descheduler/pull/1480](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1480) - descheduler v0.31: update docs and manifests by [@​a7i](https://redirect.github.com/a7i) in [https://github.com/kubernetes-sigs/descheduler/pull/1506](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1506) - \[e2e] no test timeouts, produce the same image tag as in production by [@​fanhaouu](https://redirect.github.com/fanhaouu) in [https://github.com/kubernetes-sigs/descheduler/pull/1508](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1508) - chore: replace `github.com/ghodss/yaml` with `sigs.k8s.io/yaml` by [@​Juneezee](https://redirect.github.com/Juneezee) in [https://github.com/kubernetes-sigs/descheduler/pull/1510](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1510) #### New Contributors - [@​hanyouqing](https://redirect.github.com/hanyouqing) made their first contribution in [https://github.com/kubernetes-sigs/descheduler/pull/1378](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1378) - [@​omerap12](https://redirect.github.com/omerap12) made their first contribution in [https://github.com/kubernetes-sigs/descheduler/pull/1390](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1390) - [@​duplabe](https://redirect.github.com/duplabe) made their first contribution in [https://github.com/kubernetes-sigs/descheduler/pull/1412](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1412) - [@​googs1025](https://redirect.github.com/googs1025) made their first contribution in [https://github.com/kubernetes-sigs/descheduler/pull/1416](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1416) - [@​zhifei92](https://redirect.github.com/zhifei92) made their first contribution in [https://github.com/kubernetes-sigs/descheduler/pull/1445](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1445) - [@​ternbusty](https://redirect.github.com/ternbusty) made their first contribution in [https://github.com/kubernetes-sigs/descheduler/pull/1444](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1444) - [@​adammw](https://redirect.github.com/adammw) made their first contribution in [https://github.com/kubernetes-sigs/descheduler/pull/1468](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1468) - [@​shahar-h](https://redirect.github.com/shahar-h) made their first contribution in [https://github.com/kubernetes-sigs/descheduler/pull/1476](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1476) - [@​sklirg](https://redirect.github.com/sklirg) made their first contribution in [https://github.com/kubernetes-sigs/descheduler/pull/1479](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1479) - [@​bendikp](https://redirect.github.com/bendikp) made their first contribution in [https://github.com/kubernetes-sigs/descheduler/pull/1507](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1507) - [@​Juneezee](https://redirect.github.com/Juneezee) made their first contribution in [https://github.com/kubernetes-sigs/descheduler/pull/1510](https://redirect.github.com/kubernetes-sigs/descheduler/pull/1510) **Full Changelog**: kubernetes-sigs/descheduler@v0.30.0...v0.31.0 </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOC43My4zIiwidXBkYXRlZEluVmVyIjoiMzguNzMuMyIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsicmVub3ZhdGUvaGVsbSIsInR5cGUvbWlub3IiXX0=--> Co-authored-by: lumiere-bot[bot] <98047013+lumiere-bot[bot]@users.noreply.github.com>
In the default initialization phase of the descheduler, add a new constraint to not evict pods that creation time is below minPodAge threshold. I have used minutes for the threshold, but if you prefer seconds, I don't mind changing it.
Added value:
Avoid crazy pod movement when the autoscaler scales up and down.
Avoid evicting pods when they are warming up.
Decreases the overall cost of eviction as no pod will be evicted before doing significant amount of work.
Guard against scheduling. Descheduling loops in situations where the descheduler has a different node fit logic from scheduler, like not considering topology spread constraints.
I was testing the change in a local cluster:
I0716 13:51:27.441401 1 defaultevictor.go:249] "Pod fails the following checks" pod="kube-system/nginx-deployment-8-68c4499688-vjvp8" checks="pod age is not older than MinPodAge: 10000 minutes"
We think adding this feature upstream is more beneficial than maintaining our own fork, and it may be useful to others.