Skip to content
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

KEP-1397: descheduler integration with evacuation API as an alternative to eviction API #1354

Merged

Conversation

ingvagabund
Copy link
Contributor

@ingvagabund ingvagabund commented Feb 26, 2024

Is your feature request related to a problem? Please describe.

The descheduler eviction policy is built on top of the eviction API. The API currently does not support eviction requests that are not completed right away. Instead, any eviction needs to either succeed or be rejected in response. Nevertheless, there are cases where an eviction request is expected to only initiate eviction. While getting confirmation or rejection of the eviction initiation (or its promise).

Describe the solution you'd like

Utilize evacuation API as an alternative to eviction API. As an interim solution (until the evacuation API is available) allow to interpret pods with a special annotation as a request for eviction initiation instead of expecting an immediate eviction.

Resolves: #1397

@k8s-ci-robot k8s-ci-robot added cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. size/XL Denotes a PR that changes 500-999 lines, ignoring generated files. labels Feb 26, 2024
@ingvagabund ingvagabund force-pushed the evictions-in-background branch 2 times, most recently from 320169c to 5af0e72 Compare February 26, 2024 10:12
@ingvagabund ingvagabund force-pushed the evictions-in-background branch 5 times, most recently from a53c30d to ec699a1 Compare May 7, 2024 13:43
@songtao98
Copy link

songtao98 commented May 11, 2024

Hi, @ingvagabund . I have some questions about how does this KEP works in Descheduling Framework.

  1. Do you expect to use this new eviction handling mechanism to replace existing PodEvictor (who call Eviciton API directly), so that all users evict their pods through it?
  2. Do you consider to take one more step to make it as a extension point, e.g. Evict, so that users can decide which way to evict their pods, and existing PodEvictor or your extension by this KEP can both be implemented as a EvictPlugin(different with existing EvictorPlugin)?

@ingvagabund ingvagabund changed the title KEP: Extend descheduler eviction handling for eviction requests KEP-1397: descheduler integration with evacuation API as an alternative to eviction API May 11, 2024
@ingvagabund ingvagabund force-pushed the evictions-in-background branch 5 times, most recently from f1649b7 to c5cae17 Compare May 11, 2024 18:16
@ingvagabund
Copy link
Contributor Author

@songtao98 thank you for asking the right questions.

  1. Do you expect to use this new eviction handling mechanism to replace existing PodEvictor (who call Eviciton API directly), so that all users evict their pods through it?

Eventually, that's the ultimate goal. However, the first implementations will provide both eviction API and evacuation API. So we have some soft time for early adopters to share their experience and corner case for which evacuation API does not work/scale well. Followed by discussions with evacuation API designers about possible resolutions before the new API goes GA.

  1. Do you consider to take one more step to make it as a extension point, e.g. Evict, so that users can decide which way to evict their pods, and existing PodEvictor or your extension by this KEP can both be implemented as a EvictPlugin(different with existing EvictorPlugin)?

Not right now. Ultimately, the new evacuation API should be a special case of the eviction API. The details are yet to be discussed.

@songtao98
Copy link

thank you for asking the right questions.

@ingvagabund Thank you for your reply! For question 1, the strategy sounds great. For question 2, I'm not sure if someone has ever proposed a custom Evictor mechanism(to customize the real evictor like PodEvictor, not currently EvictorPlugin), but we think this capability will eventually be meaningful and already implemented one. We are also looking forward to more discussion about details, and if the community think it's the right way, we will be more than happy to contribute : )

@ingvagabund
Copy link
Contributor Author

We think this capability will eventually be meaningful and already implemented one. We are also looking forward to more discussion about details, and if the community think it's the right way, we will be more than happy to contribute : )

Few sig calls back we discussed the possibility of writing mini-keps. Turning the low level eviction mechanism into a plugin is a good example for it :) If there are good use cases where a user can benefit from a custom eviction mechanism. Would you be willing to write a proposal for this? The current proposal focuses mainly on integration with the new evacuation API (and annotation as an interim solution). Pluginazing the evictor itself is related, yet it deserves its own attention.

@songtao98
Copy link

Few sig calls back we discussed the possibility of writing mini-keps. Turning the low level eviction mechanism into a plugin is a good example for it :) If there are good use cases where a user can benefit from a custom eviction mechanism. Would you be willing to write a proposal for this? The current proposal focuses mainly on integration with the new evacuation API (and annotation as an interim solution). Pluginazing the evictor itself is related, yet it deserves its own attention.

For sure! We are certainly willing to draft a proposal for customizing the eviction mechanism. However, it might take some time as I need to organize some details and perform the necessary abstractions. BTW, regarding the mini-keps you mentioned, are there any specific format requirements? If not, I will follow the current KEP template.

|**Pod nomination and sorting**|Preferring pods with both `descheduler.alpha.kubernetes.io/request-evict-only` and `descheduler.alpha.kubernetes.io/eviction-in-progress` annotations.|Preferring pods that have a corresponding evacuation CR present.|
|**Cache reconstruction**|When a descheduler gets restarted and a new internal caches (with tracked annotations) cleared the descheduler lists all pods and populate the cache with any pod that has both annotation (`descheduler.alpha.kubernetes.io/request-evict-only` and `descheduler.alpha.kubernetes.io/eviction-in-progress`) present. In case only the first annotation is present but the eviction request was already created, the update event handler will catch the second annotation addition and the cache gets synced. In the worst case the limit of max number of pods evicted gets exceeded.|The descheduler waits until all evacution CRs are synced.|

Given the evucation API is still a work in progress without any existing implementation, the annotation based eviction can be seen as an v1alpha1 implemenation of this proposal. Integration with the evacuation API as an v1alphaN or beta implementation.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Given the evucation API is still a work in progress without any existing implementation,

Typo here "evucation"

@ingvagabund ingvagabund force-pushed the evictions-in-background branch 3 times, most recently from 6fccd48 to 27acbd2 Compare May 14, 2024 11:34
@k8s-ci-robot k8s-ci-robot added size/XXL Denotes a PR that changes 1000+ lines, ignoring generated files. and removed size/XL Denotes a PR that changes 500-999 lines, ignoring generated files. labels May 14, 2024
@knelasevero
Copy link
Contributor

In Filip's proposal (I need to read it in more detail, but I skimmed it already), there is this notion for Evacuator Prioritization and multiple evacuators (and a lot of other details not considered here). To me it sounds like when going from alpha implementation (here) to beta, and trying to assimilate the other complexities from the real evacuator API too much would change to call the graduation here a graduation from alpha to beta? Maybe it would be another alpha for a while before becoming beta? (or, again, as above comment, it would be worth to consider all those things from the start...)

- Evacuation API based evictions
- Identifying corner cases that are not addressed by the evacuation API
- `descheduler.alpha.kubernetes.io/request-evict-only` annotation is deprecated
- Workloads do not set `descheduler.alpha.kubernetes.io/request-evict-only` annotation
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@atiratree then also implementation around prioritization, detailed status reporting, and cancellation policies as per the Evacuation API? Then, not a beta graduation, right?

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I suppose, second alpha would be more appropriate.

Also, Workloads do not set descheduler.alpha.kubernetes.io/request-evict-only annotation is not actionable. Maybe s/do/should/ and document this?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The implementation will not get promoted to beta without the evacuation API integration. We will be rolling at least two v1alpha versions.

Copy link
Contributor Author

@ingvagabund ingvagabund Jun 18, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Workloads do not set descheduler.alpha.kubernetes.io/request-evict-only annotation is not actionable. Maybe s/do/should/ and document this?

What about Workloads are not expected to set descheduler.alpha.kubernetes.io/request-evict-only annotation when deprecated?

2. Error code, resp. response text is checked to distinguish between
a genuine error and a confirmation of an eviction in background.

##### Evacuation API (v1alphaN or beta)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh, i see v1alphaN is considered, I missed this

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe more than considered it should be a must given the expected changes

Copy link
Contributor Author

@ingvagabund ingvagabund Jun 18, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changed to "v1alphaN and beta"

@knelasevero
Copy link
Contributor

This looks great and is very detailed. I need to read both proposals a bit more deeply to give more insights, but wanted to give my initial thoughts so the KEP can go forward

annotation or confronting the internal caches.
2. Each descheduling plugin nominates a set of pods to be evicted.
3. All the nominated pods are sorted based on the eviction-in-progress first priority.
4. Pod eviction: the descheduler starts evicting nominated pods until a limit is reached

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is the eviction going to be handled in each plugin separately as it is currently?

What are the guarantees that a plugin will use the Evacuator/Evictor correctly? E.g. calling pre-checks?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is the eviction going to be handled in each plugin separately as it is currently?

Yes. The current mechanism will be persisted.

What are the guarantees that a plugin will use the Evacuator/Evictor correctly? E.g. calling pre-checks?

None. Each plugin is given a handler for evicting/evacuating a pod. No pod will be aware whether an eviction or evacuation API is invoked under the hood.

By pre-checks you mean excluding pods with already existing evacuation requests?

##### Evacuation API (v1alphaN or beta)

1. Policy configuration
1. The cluster administrator configures the descheduler to enable the new functionality.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What is the descheduler kubernetes version backwards compatibility? There should be probably a check if the Evacuation API resource exists in the cluster

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We run a check for whether an eviction API is supported in

evictionPolicyGroupVersion, err := eutils.SupportEviction(rs.Client)
. I expect a similar check for the evacuation API.

all the internal counters to take into account all pods that are subjects
to background eviction. By listing evacuation requests or confronting the internal caches.
2. Each descheduling plugin nominates a set of pods to be evicted.
3. All the nominated pods are sorted based on the eviction-in-progress first priority.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

note: eviction in progress is recognized by a presence of Evacuation object

Copy link
Contributor Author

@ingvagabund ingvagabund Jun 18, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ack. The descheduler is expected to read all existing evacuation objects/CRs and classify corresponding pods as "evacuation requested or in progress".

to background eviction. By listing evacuation requests or confronting the internal caches.
2. Each descheduling plugin nominates a set of pods to be evicted.
3. All the nominated pods are sorted based on the eviction-in-progress first priority.
4. Pod eviction: the descheduler creates an evacuation request for each nominated pod until a limit is reached

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

implementation detail, but

  • it should add a evacuation.coordination.k8s.io/instigator_${EVACUATION_INSTIGATOR_SUBDOMAIN} finalizer to the Evacuation when creating it
  • if the Evacuation exists it should ensure the finalizer is present

- The upstream eviction API does not currently support evictions in background
implemented by external components. For that, there's no community
dedicated error code nor a response text for this type of eviction.
- The eviction in background error code will be temporary mapped to 429 (TooManyRequests).

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ok, I see. No retries.

There is also a standing issue about the confusion of today's Eviction API request errors: kubernetes/kubernetes#106286. I am not sure if it is a good idea to add another behavior dependent on external component to that. At least having a distinguished code could make it more manegable

- Evacuation API based evictions
- Identifying corner cases that are not addressed by the evacuation API
- `descheduler.alpha.kubernetes.io/request-evict-only` annotation is deprecated
- Workloads do not set `descheduler.alpha.kubernetes.io/request-evict-only` annotation

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I suppose, second alpha would be more appropriate.

Also, Workloads do not set descheduler.alpha.kubernetes.io/request-evict-only annotation is not actionable. Maybe s/do/should/ and document this?

- Feature implemented behind a feature flag
- Initial e2e tests completed and enabled
- Annotation based evictions
- Workloads do not set `descheduler.alpha.kubernetes.io/request-evict-only` annotation

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

a bit confusing to see the deprecation in alpha

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That depends on how many alphas we will have. The annotation gets deprecated the moment the evacuation API is implemented as alpha. While we will need to wait until the evacuation API gets promoted to beta before we can promote the eviction-in-background to beta.


```go
type PodEvacuator interface {
EvacutePod(ctx context.Context, pod *v1.Pod) error

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

what guarantee we have each plugin will call this interface? Isn't it better to override/change the Evictor interface?

Copy link
Contributor Author

@ingvagabund ingvagabund Jun 18, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The Evictor interface will get replaced by PodEvacuator interface under the hood. Currently, all plugins are expected to invoke <plugin>.handle.Evictor().Evict method. The method will invoke the evacuation API once available and get renamed to a more suitable name.

Comment on lines +482 to +487
* The evacuation API proposal mentions more than a one entity can request an eviction.
Should the descheduler take these into account as well?
What if another entity decides to evict a pod that is of a low priority
from the descheduler's point of view?
**Answer**: The first implementation will consider all pods with an existing
evacuation request as "already getting evacuated". Independent of the pod priorities.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The important part to decide for the descheduler is, if it wants to subscribe to evacuating these lower evacuations as well. This is done by setting the finalizer and prevents the evacuation cancellation.

Copy link
Contributor Author

@ingvagabund ingvagabund Jun 18, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good point. This depends on how a user will see these evacuations. We could introduce a new option for this case so the descheduler sets the finalizer even for these pods and count them as "marked for eviction by the descheduler".

Have you considered a concept of a maximal number of pods that can be evacuated per time? A global setting for an entire cluster?

with `descheduler.alpha.kubernetes.io/eviction-in-progress` or creating evacuation requests).
2. Run the descheduler and observe only an expected amount of pods
is requested to be evicted/evacuated.
- `EvacuationTTL` for testing an evacuation request (with a single owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I am a bit confused, do we introduce the TTL for the first version or not?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I see I have mentioned the TTL will not be implemented in the first version under Open Questions. Yet, v1alpha1 section mentions it will. I removed that part from v1alpha1.

v1alpha1 will not introduce the TTL mechanism. Yet, it might get implemented in later v1alpha versions.

@atiratree
Copy link

Do we consider the alpha implementation here to be an workaround until the until the evacuation API is fully integrated (in the future, in beta)?

I understand trying to deliver value earlier and then already start to get feedback, but have you checked with Feature Requesters and stakeholders if that is really what they want? Maybe it makes sense to start with the evacuation API integration from the start.

FIY, we are still discussing the Evacuation API feature and it was deferred from 1.31

@ingvagabund
Copy link
Contributor Author

Do we consider the alpha implementation here to be an workaround until the until the evacuation API is fully integrated (in the future, in beta)?

Yes

I understand trying to deliver value earlier and then already start to get feedback, but have you checked with Feature Requesters and stakeholders if that is really what they want? Maybe it makes sense to start with the evacuation API integration from the start.

I did. This is an important feature for KubeVirt. There's a strong interest to have this feature merged sooner than later. Waiting until the Evacuation API is implemented/alpha would be the best course of actions. Yet, it's not a blocker for implementing the first alpha of this feature.

@ingvagabund
Copy link
Contributor Author

In Filip's proposal (I need to read it in more detail, but I skimmed it already), there is this notion for Evacuator Prioritization and multiple evacuators (and a lot of other details not considered here). To me it sounds like when going from alpha implementation (here) to beta, and trying to assimilate the other complexities from the real evacuator API too much would change to call the graduation here a graduation from alpha to beta? Maybe it would be another alpha for a while before becoming beta? (or, again, as above comment, it would be worth to consider all those things from the start...)

Currently, the promotion to beta requires implementation of the evacuation API. Thus, we need to stay aligned with it and can not promote to beta until the evacuation API is beta.

@knelasevero
Copy link
Contributor

Do we consider the alpha implementation here to be an workaround until the until the evacuation API is fully integrated (in the future, in beta)?

Yes

I understand trying to deliver value earlier and then already start to get feedback, but have you checked with Feature Requesters and stakeholders if that is really what they want? Maybe it makes sense to start with the evacuation API integration from the start.

I did. This is an important feature for KubeVirt. There's a strong interest to have this feature merged sooner than later. Waiting until the Evacuation API is implemented/alpha would be the best course of actions. Yet, it's not a blocker for implementing the first alpha of this feature.

I know it is not a blocker. I see it more from the frame of:

Is this delivering enough value when implemented as a workaround to justify not waiting for the actual thing that you want to use? Is the feedback and initial users you will get now be worth implementing this, even if the thing will be quite different when the Evacuation API is here (in beta or when it is safe to use it or w/e)?

@ingvagabund
Copy link
Contributor Author

ingvagabund commented Jun 18, 2024

Is this delivering enough value when implemented as a workaround to justify not waiting for the actual thing that you want to use? Is the feedback and initial users you will get now be worth implementing this, even if the thing will be quite different when the Evacuation API is here (in beta or when it is safe to use it or w/e)?

Disclaimer: this is my personal comment and it does not have to reflect the current reality.

We don't have any participating initial users besides the discussions I have had with some KubeVirt representatives. So currently there's only one user. The feedback is currently limited and influenced by the evacuation API proposal. I don't have any solid data to support anything I have proposed in the current proposal. The design was crafted in a best-effort manner in my best conscience. Taking into account many what-if scenarios. We still don't have many participating contributors in the descheduler community to extend the discussions/reviews and hand craft a better design. Practically, any contribution from my side is done either in my free time of when I prioritize my work in my current company.

I am aligned with your perspective and acknowledge you asked the right and important questions. I see two options. To wait (hard to say for how long) and collect more feedback with an assumption the design will improve. Or, pin the current design, produce v1alpha1 implementation, collect the feedback and see how well/bad the design proves the be.

@knelasevero
Copy link
Contributor

knelasevero commented Jun 19, 2024

We still don't have many participating contributors in the descheduler community to extend the discussions/reviews and hand craft a better design

You focus on the design reviews not being comprehensive for lack of contributors, but that is actually an argument to wait, no? Since if you consider the repo to have less support than it needs it would be harder to maintain a workaround than it would be to maintain what you envision to be the final implementation (that would also start at alpha, but would not have big changes of core internals, while evolving initially).

To wait (hard to say for how long) and collect more feedback with an assumption the design will improve. Or, pin the current design, produce v1alpha1 implementation, collect the feedback and see how well/bad the design proves the be.

I also see these two options, and I see pros and cons coming from both of them. I think the workaround design is great, I wouldn't consider it to be bad. I think it was detailed and a lot has been considered. Just raised this discussion to be the devil's advocate and check other paths. This is an important feature for KubeVirt -> but how urgent, I think that's the question. Also do they know of the plan to migrate later to the evacuation API approach? Would they explicitly prefer not to wait, or did they just say they need it asap?

with an assumption the design will improve

But you also assume that, or the goal of migrating to the intended final implementation using the actual evacuation API (and ditching the previous one) would not be written down here in you EP.

@fossedihelm
Copy link

Reading the great discussion here! To me, the proposal looks good, and thank you for this effort!

This is an important feature for KubeVirt -> but how urgent, I think that's the question. Also, do they know of the plan to migrate later to the evacuation API approach? Would they explicitly prefer not to wait, or did they just say they need it asap?

Answering this question: Yes, this is an essential feature for KubeVirt.
Let's start from the beginning: live migration is a key feature of KubeVirt; it allows the workload not to be compromised. For this reason, it is chosen as the default behavior during an eviction, drain, etc...
KubeVirt is also shipped by default with Openshift, and currently, Descheduler and KubeVirt behavior are not compatible with each other. Without this workaround, a cluster admin would have to choose between having an active KubeVirt core feature and the Descheduler, and this would put them in a difficult situation that would be best avoided.
As expressed above this is a workaround that will be overridden with the evacuation API and KubeVirt will move to the evacuation API accordingly.
IOW, yes, KubeVirt side it would definitely be better to have this ASAP.
Thank you!

@knelasevero
Copy link
Contributor

Reading the great discussion here! To me, the proposal looks good, and thank you for this effort!

This is an important feature for KubeVirt -> but how urgent, I think that's the question. Also, do they know of the plan to migrate later to the evacuation API approach? Would they explicitly prefer not to wait, or did they just say they need it asap?

Answering this question: Yes, this is an essential feature for KubeVirt. Let's start from the beginning: live migration is a key feature of KubeVirt; it allows the workload not to be compromised. For this reason, it is chosen as the default behavior during an eviction, drain, etc... KubeVirt is also shipped by default with Openshift, and currently, Descheduler and KubeVirt behavior are not compatible with each other. Without this workaround, a cluster admin would have to choose between having an active KubeVirt core feature and the Descheduler, and this would put them in a difficult situation that would be best avoided. As expressed above this is a workaround that will be overridden with the evacuation API and KubeVirt will move to the evacuation API accordingly. IOW, yes, KubeVirt side it would definitely be better to have this ASAP. Thank you!

Thanks! Having your direct input here is important. Thanks for chiming in!

@ingvagabund
Copy link
Contributor Author

I am currently refactoring the current code base so at the end the changes required to implement v1alpha1 of this KEP are minimal. The current PoC is under https://github.com/ingvagabund/descheduler/tree/eviction-in-background-code-2024-07-02.

Copy link
Contributor

@damemi damemi left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

looks good to me, and the evacuation API does seem like a more graceful evolution of the eviction API.

One question though, we have had requests for more immediate pod deletion (like #1253), and this seems to go a step further away from that. Should we have any continued support for direct eviction requests? Or is eviction going away entirely?

### Annotation vs. evacuation API based eviction

The [evacuation API](https://github.com/kubernetes/enhancements/pull/4565) is expected
to replace the [eviction API](https://kubernetes.io/docs/concepts/scheduling-eviction/api-eviction/).
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is there any timeline on deprecation for the eviction API?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not yet. It will strongly depends on when the evacuation API graduates.

**Answer**: The first implementation will not reset any evacuation request.
The descheduler will account for existing requests and update the internal counters accordingally.
In the future a mechanism for deleting too old evacuation requests can be introduced.
I.e. based on a new `--max-evacuation-request-ttl` option.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

should this be a policy config field?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah. A policy config field is versioned. With a feature gate mechanism alpha feature fields can be ignored.

@damemi
Copy link
Contributor

damemi commented Jul 16, 2024

/approve

@k8s-ci-robot
Copy link
Contributor

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: damemi

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 /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@k8s-ci-robot k8s-ci-robot added the approved Indicates a PR has been approved by an approver from all required OWNERS files. label Jul 16, 2024
@ingvagabund
Copy link
Contributor Author

Thank you Mike for going through the proposal.

Should we have any continued support for direct eviction requests? Or is eviction going away entirely?

@atiratree will know better though based on my understand the eviction API will not go away. Instead, users will still have option to choose between the evacuation (delayed eviction) and the eviction APIs. Yet, with strong recommendation to prefer the evacuation API as it will serve as a cluster scoped coordinator for any eviction.

Wrt. to #1253 we will need to decide whether the descheduler will eventually switch to the evacuation API by default or not. Yet, we will still keep the direct eviction API and any potential immediate deletion configurable. It will take some time before the evacuation API becomes GA.

@atiratree
Copy link

@atiratree will know better though based on my understand the eviction API will not go away. Instead, users will still have option to choose between the evacuation (delayed eviction) and the eviction APIs. Yet, with strong recommendation to prefer the evacuation API as it will serve as a cluster scoped coordinator for any eviction.

@ingvagabund yes the eviction API is not going away. A better version of it (e.g. Evacuation API, etc.) is still being discussed upstream in sig-apps and should eventually be used by all the major components like the descheduler, cluster autoscaler, etc. Normal users do not really use eviction much.

@atiratree
Copy link

in accordance with the above consensus
/lgtm

@k8s-ci-robot
Copy link
Contributor

@atiratree: changing LGTM is restricted to collaborators

In response to this:

in accordance with the above consensus
/lgtm

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.

@ingvagabund ingvagabund added the lgtm "Looks good to me", indicates that a PR is ready to be merged. label Jul 24, 2024
@k8s-ci-robot k8s-ci-robot merged commit f3569b5 into kubernetes-sigs:master Jul 24, 2024
9 checks passed
@ingvagabund ingvagabund deleted the evictions-in-background branch July 24, 2024 18:47
rouke-broersma referenced this pull request in broersma-forslund/homelab Sep 10, 2024
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
[@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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 [@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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
[#&#8203;1427](https://redirect.github.com/kubernetes-sigs/descheduler/issues/1427):
helm: upgrade to v0.30.1 by
[@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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 [@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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 [@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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 [@&#8203;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
[@&#8203;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 [@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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 [@&#8203;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
[@&#8203;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
[@&#8203;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 [@&#8203;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
[@&#8203;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

- [@&#8203;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)
- [@&#8203;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)
- [@&#8203;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)
- [@&#8203;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)
- [@&#8203;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)
- [@&#8203;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)
- [@&#8203;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)
- [@&#8203;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)
- [@&#8203;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)
- [@&#8203;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)
- [@&#8203;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>
spiceratops referenced this pull request in spiceratops/k8s-gitops Sep 10, 2024
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
[@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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 [@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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
[#&#8203;1427](https://redirect.github.com/kubernetes-sigs/descheduler/issues/1427):
helm: upgrade to v0.30.1 by
[@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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 [@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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 [@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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 [@&#8203;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
[@&#8203;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 [@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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 [@&#8203;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
[@&#8203;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
[@&#8203;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 [@&#8203;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
[@&#8203;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

- [@&#8203;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)
- [@&#8203;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)
- [@&#8203;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)
- [@&#8203;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)
- [@&#8203;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)
- [@&#8203;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)
- [@&#8203;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)
- [@&#8203;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)
- [@&#8203;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)
- [@&#8203;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)
- [@&#8203;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=-->
lumiere-bot bot referenced this pull request in coolguy1771/home-ops Sep 19, 2024
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
[@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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 [@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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
[#&#8203;1427](https://redirect.github.com/kubernetes-sigs/descheduler/issues/1427):
helm: upgrade to v0.30.1 by
[@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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 [@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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 [@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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 [@&#8203;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
[@&#8203;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 [@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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
[@&#8203;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 [@&#8203;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
[@&#8203;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
[@&#8203;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 [@&#8203;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
[@&#8203;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

- [@&#8203;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)
- [@&#8203;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)
- [@&#8203;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)
- [@&#8203;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)
- [@&#8203;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)
- [@&#8203;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)
- [@&#8203;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)
- [@&#8203;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)
- [@&#8203;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)
- [@&#8203;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)
- [@&#8203;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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
approved Indicates a PR has been approved by an approver from all required OWNERS files. cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. lgtm "Looks good to me", indicates that a PR is ready to be merged. size/XXL Denotes a PR that changes 1000+ lines, ignoring generated files.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

KEP-1397: descheduler integration with evacuation API as an alternative to eviction API
8 participants