Skip to content

Conversation

@ingvagabund
Copy link
Contributor

@ingvagabund ingvagabund commented Jan 27, 2025

Introducing an enum/string will restrict a metrics sources to a single source without extra validation.
While deprecating the current metricsEnabled field. Both fields can be used. Only the mention of metricsEnabled is removed from the README.md.

A similar approach holds for the top level metrics collector configuration. Deprecating the current API for introducing a list of metrics providers than can be configured in parallel.

@k8s-ci-robot k8s-ci-robot added cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. size/S Denotes a PR that changes 10-29 lines, ignoring generated files. labels Jan 27, 2025
@ingvagabund ingvagabund force-pushed the nodeutilization-metrics-source branch from c5ec797 to 6970000 Compare January 27, 2025 11:15
@ingvagabund
Copy link
Contributor Author

@k8s-ci-robot k8s-ci-robot added the do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. label Jan 27, 2025
@ingvagabund ingvagabund force-pushed the nodeutilization-metrics-source branch from 6970000 to aae4de5 Compare March 10, 2025 21:56
@k8s-ci-robot k8s-ci-robot added size/M Denotes a PR that changes 30-99 lines, ignoring generated files. and removed size/S Denotes a PR that changes 10-29 lines, ignoring generated files. labels Mar 10, 2025
@ingvagabund ingvagabund force-pushed the nodeutilization-metrics-source branch 2 times, most recently from 173966d to 8c69923 Compare March 10, 2025 21:59
@ingvagabund
Copy link
Contributor Author

/hold cancel

@k8s-ci-robot k8s-ci-robot removed the do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. label Mar 10, 2025
@ingvagabund ingvagabund force-pushed the nodeutilization-metrics-source branch from 8c69923 to c464259 Compare March 11, 2025 08:08
@ingvagabund
Copy link
Contributor Author

@ricardomaraschini @googs1025 PTAL

@ingvagabund ingvagabund force-pushed the nodeutilization-metrics-source branch 3 times, most recently from a0c7a1e to c97b417 Compare March 11, 2025 14:31
type MetricsUtilization struct {
// metricsServer enables metrics from a kubernetes metrics server.
// Please see https://kubernetes-sigs.github.io/metrics-server/ for more.
// Deprecated. Use MetricsSource instead.
Copy link
Member

Choose a reason for hiding this comment

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

When we deprecate this field, do we need to keep it in the docs and indicate in which version it will be officially deleted? 🤔

Copy link
Contributor Author

@ingvagabund ingvagabund Mar 12, 2025

Choose a reason for hiding this comment

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

You are right. Readme updated to mention metricsServer field is deprecated. Deprecation follows the usual 3 release period.

@ingvagabund ingvagabund force-pushed the nodeutilization-metrics-source branch from c97b417 to 92f2b1e Compare March 12, 2025 10:59
@ingvagabund ingvagabund force-pushed the nodeutilization-metrics-source branch 2 times, most recently from b06d5ea to 8334c68 Compare March 12, 2025 14:51
@atiratree
Copy link

@ingvagabund ingvagabund force-pushed the nodeutilization-metrics-source branch from 8334c68 to a9e15b5 Compare March 12, 2025 21:00
@ingvagabund
Copy link
Contributor Author

ingvagabund commented Mar 12, 2025

@atiratree MetricsCollector field updated to be a pointer to.

I did not fully though through what other source of metrics could be integrated in the policy. The top policy is intended to provide a global configuration for all plugins. These days we can use the Kubernetes metrics or Prometheus client+PromQuery. It's valid to have one plugin to rely on Kubernetes metrics and another on Prometheus. So the sources can be configured in parallel. At the same time the current MetricsCollector is expected to provide a simple interface so users do not need to think about which specific metric to use when pulling actual usage about node and pods cpu/memory resources. Lemme extend MetricsCollector with a new enum/string field so it's easier to extend the potential simple metrics providers in the future.

@k8s-ci-robot k8s-ci-robot added size/L Denotes a PR that changes 100-499 lines, ignoring generated files. and removed size/M Denotes a PR that changes 30-99 lines, ignoring generated files. labels Mar 13, 2025
@ingvagabund
Copy link
Contributor Author

/hold cancel

@k8s-ci-robot k8s-ci-robot removed the do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. label Mar 13, 2025
@ingvagabund ingvagabund force-pushed the nodeutilization-metrics-source branch 4 times, most recently from 050a411 to ce419db Compare March 13, 2025 12:36
@atiratree
Copy link

It's valid to have one plugin to rely on Kubernetes metrics and another on Prometheus. So the sources can be configured in parallel.

In that case, wouldn't it make more sense to introduce a metricsCollectors []MetricsCollector field instead?

@ingvagabund
Copy link
Contributor Author

ingvagabund commented Mar 13, 2025

Each MetricsCollector will have a different set of fields in general. Unless we define MetricsCollector as interface{}. I'd rather wait to see how many other metrics providers will be introduced and bump the policy to v1alpha3 while reshaping the way the metric providers are integrated/configured.

@ingvagabund ingvagabund force-pushed the nodeutilization-metrics-source branch 8 times, most recently from 04bd9f3 to 950990a Compare March 13, 2025 16:55
…n be later extended for exclusive configuration
@ingvagabund ingvagabund force-pushed the nodeutilization-metrics-source branch from 950990a to e14b86e Compare March 13, 2025 17:00
@ingvagabund ingvagabund changed the title [nodeutilization]: allow to set a metrics source as an enum so it can be later extended for exclusive configuration [nodeutilization]: allow to set a metrics source as a string so it can be later extended for exclusive configuration Mar 13, 2025
}
}
return utilerrors.NewAggregate(errorsInProfiles)
if len(in.MetricsProviders) > 1 {

Choose a reason for hiding this comment

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

What is the reason behind limiting the functionality? Do we want to enforce setting only a single source until the code base is ready for it?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Yes. I will extend the test through #1533.


var metricsCollector *metricscollector.MetricsCollector
if deschedulerPolicy.MetricsCollector.Enabled {
if (deschedulerPolicy.MetricsCollector != nil && deschedulerPolicy.MetricsCollector.Enabled) || (len(deschedulerPolicy.MetricsProviders) > 0 && deschedulerPolicy.MetricsProviders[0].Source == api.KubernetesMetrics) {

Choose a reason for hiding this comment

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

Can we make a utility function from this? And even though we allow only a single source now, it would be nicer to go over the whole slice to check the source.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Will be done through #1533.

@atiratree
Copy link

LGTM

@ingvagabund ingvagabund added lgtm "Looks good to me", indicates that a PR is ready to be merged. approved Indicates a PR has been approved by an approver from all required OWNERS files. labels Mar 14, 2025
@k8s-ci-robot
Copy link
Contributor

[APPROVALNOTIFIER] This PR is APPROVED

Approval requirements bypassed by manually added approval.

This pull-request has been approved by:

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 merged commit be4abe1 into kubernetes-sigs:master Mar 14, 2025
10 checks passed
@ingvagabund ingvagabund deleted the nodeutilization-metrics-source branch March 14, 2025 08:58
ralgar pushed a commit to ralgar/homelab that referenced this pull request Oct 10, 2025
This MR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [descheduler](https://github.com/kubernetes-sigs/descheduler) | minor | `0.26.x` -> `0.33.x` |

---

### Release Notes

<details>
<summary>kubernetes-sigs/descheduler (descheduler)</summary>

### [`v0.33.0`](https://github.com/kubernetes-sigs/descheduler/releases/tag/v0.33.0): Descheduler v0.33.0

[Compare Source](https://github.com/kubernetes-sigs/descheduler/compare/v0.32.2...v0.33.0)

#### What's Changed

- update license to year 2025 by [@&#8203;a7i](https://github.com/a7i) in [#&#8203;1593](https://github.com/kubernetes-sigs/descheduler/pull/1593)
- \[release v0.32.0] bump chart and images by [@&#8203;a7i](https://github.com/a7i) in [#&#8203;1592](https://github.com/kubernetes-sigs/descheduler/pull/1592)
- bump x/net and x/crypto deps for CVE-2024-45337 and CVE-2024-45338 by [@&#8203;a7i](https://github.com/a7i) in [#&#8203;1591](https://github.com/kubernetes-sigs/descheduler/pull/1591)
- chore: update README.md for DeschedulerPolicy by [@&#8203;googs1025](https://github.com/googs1025) in [#&#8203;1578](https://github.com/kubernetes-sigs/descheduler/pull/1578)
- chore: add ignorePvcPods param in default evictor filter unit test by [@&#8203;googs1025](https://github.com/googs1025) in [#&#8203;1602](https://github.com/kubernetes-sigs/descheduler/pull/1602)
- feature(descheduler): add grace\_period\_seconds for DeschedulerPolicy by [@&#8203;googs1025](https://github.com/googs1025) in [#&#8203;1538](https://github.com/kubernetes-sigs/descheduler/pull/1538)
- charts: add missing permission for policy by [@&#8203;linuxmaniac](https://github.com/linuxmaniac) in [#&#8203;1596](https://github.com/kubernetes-sigs/descheduler/pull/1596)
- flake: rollback gracePeriod for evict pod in e2e test by [@&#8203;googs1025](https://github.com/googs1025) in [#&#8203;1606](https://github.com/kubernetes-sigs/descheduler/pull/1606)
- charts: add needed perms if metricsCollector is enabled by [@&#8203;linuxmaniac](https://github.com/linuxmaniac) in [#&#8203;1599](https://github.com/kubernetes-sigs/descheduler/pull/1599)
- tracing: test for and address semconv/SDK version conflicts by [@&#8203;LukeCarrier](https://github.com/LukeCarrier) in [#&#8203;1612](https://github.com/kubernetes-sigs/descheduler/pull/1612)
- PodMatchNodeSelector: Replaced PodMatchNodeSelector implementation wi… by [@&#8203;jandai](https://github.com/jandai) in [#&#8203;1632](https://github.com/kubernetes-sigs/descheduler/pull/1632)
- chore: add descheduler plugin example by [@&#8203;ricardomaraschini](https://github.com/ricardomaraschini) in [#&#8203;1636](https://github.com/kubernetes-sigs/descheduler/pull/1636)
- chore: add setDefaultEvictor return an error by [@&#8203;googs1025](https://github.com/googs1025) in [#&#8203;1637](https://github.com/kubernetes-sigs/descheduler/pull/1637)
- ReferencedResourceList: alias for map\[v1.ResourceName]\*resource.Quantity to avoid the type definition duplication by [@&#8203;ingvagabund](https://github.com/ingvagabund) in [#&#8203;1640](https://github.com/kubernetes-sigs/descheduler/pull/1640)
- lownodeutilization: evictionLimits to limit the evictions per plugin by [@&#8203;ingvagabund](https://github.com/ingvagabund) in [#&#8203;1642](https://github.com/kubernetes-sigs/descheduler/pull/1642)
- nodeutilization: invoke ValidateLowNodeUtilizationArgs instead of validateLowNodeUtilizationThresholds to make the test more generic by [@&#8203;ingvagabund](https://github.com/ingvagabund) in [#&#8203;1644](https://github.com/kubernetes-sigs/descheduler/pull/1644)
- nodeutilization: make the node classification more generic by [@&#8203;ingvagabund](https://github.com/ingvagabund) in [#&#8203;1645](https://github.com/kubernetes-sigs/descheduler/pull/1645)
- \[nodeutilization]: allow to set a metrics source as a string so it can be later extended for exclusive configuration by [@&#8203;ingvagabund](https://github.com/ingvagabund) in [#&#8203;1614](https://github.com/kubernetes-sigs/descheduler/pull/1614)
- \[lownodeutilization]: Actual utilization: integration with Prometheus by [@&#8203;ingvagabund](https://github.com/ingvagabund) in [#&#8203;1533](https://github.com/kubernetes-sigs/descheduler/pull/1533)
- \[nodeutilization]: produce node utilization of resources that are listed in the list of resources by [@&#8203;ingvagabund](https://github.com/ingvagabund) in [#&#8203;1652](https://github.com/kubernetes-sigs/descheduler/pull/1652)
- feat: refactoring thresholds and usage assessment by [@&#8203;ricardomaraschini](https://github.com/ricardomaraschini) in [#&#8203;1649](https://github.com/kubernetes-sigs/descheduler/pull/1649)
- feat: move classifier to its own package by [@&#8203;ricardomaraschini](https://github.com/ricardomaraschini) in [#&#8203;1653](https://github.com/kubernetes-sigs/descheduler/pull/1653)
- \[nodeutilization]: skip nodes without extended resource when computing the average utilization by [@&#8203;ingvagabund](https://github.com/ingvagabund) in [#&#8203;1650](https://github.com/kubernetes-sigs/descheduler/pull/1650)
- Mention cmdOptions.dry-run in the helm chart readme by [@&#8203;tspearconquest](https://github.com/tspearconquest) in [#&#8203;1580](https://github.com/kubernetes-sigs/descheduler/pull/1580)
- nominate googs1025 for descheduler reviewers by [@&#8203;googs1025](https://github.com/googs1025) in [#&#8203;1654](https://github.com/kubernetes-sigs/descheduler/pull/1654)
- chore: log average and assessed thresholds by [@&#8203;ricardomaraschini](https://github.com/ricardomaraschini) in [#&#8203;1657](https://github.com/kubernetes-sigs/descheduler/pull/1657)
- fix removepodsviolatingtopologyspreadconstraint plugin sort logic by [@&#8203;googs1025](https://github.com/googs1025) in [#&#8203;1629](https://github.com/kubernetes-sigs/descheduler/pull/1629)
- TestLowNodeUtilizationKubernetesMetrics: set the right -cpu value for the cpu stressor by [@&#8203;ingvagabund](https://github.com/ingvagabund) in [#&#8203;1661](https://github.com/kubernetes-sigs/descheduler/pull/1661)
- docs: add histogram metric README.md by [@&#8203;freedomchurl](https://github.com/freedomchurl) in [#&#8203;1651](https://github.com/kubernetes-sigs/descheduler/pull/1651)
- feat: introduce strict eviction policy by [@&#8203;ricardomaraschini](https://github.com/ricardomaraschini) in [#&#8203;1663](https://github.com/kubernetes-sigs/descheduler/pull/1663)
- Move values.yaml comment about defining your own configmap to a NOTES.txt output instead by [@&#8203;tspearconquest](https://github.com/tspearconquest) in [#&#8203;1582](https://github.com/kubernetes-sigs/descheduler/pull/1582)
- chore: update owners to add me as reviewer by [@&#8203;ricardomaraschini](https://github.com/ricardomaraschini) in [#&#8203;1667](https://github.com/kubernetes-sigs/descheduler/pull/1667)
- chore: Bump to official kubernetes v0.33.0 deps by [@&#8203;dongjiang1989](https://github.com/dongjiang1989) in [#&#8203;1675](https://github.com/kubernetes-sigs/descheduler/pull/1675)
- fix: update the mailing list address by [@&#8203;sanposhiho](https://github.com/sanposhiho) in [#&#8203;1676](https://github.com/kubernetes-sigs/descheduler/pull/1676)
- add miss evictDaemonSetPods param in README.md by [@&#8203;googs1025](https://github.com/googs1025) in [#&#8203;1672](https://github.com/kubernetes-sigs/descheduler/pull/1672)
- chore(deps): bump github.com/golang/glog from 1.2.2 to 1.2.4 by [@&#8203;dependabot](https://github.com/dependabot) in [#&#8203;1679](https://github.com/kubernetes-sigs/descheduler/pull/1679)
- \[v0.33.0] update docs and manifests by [@&#8203;a7i](https://github.com/a7i) in [#&#8203;1678](https://github.com/kubernetes-sigs/descheduler/pull/1678)

#### New Contributors

- [@&#8203;linuxmaniac](https://github.com/linuxmaniac) made their first contribution in [#&#8203;1596](https://github.com/kubernetes-sigs/descheduler/pull/1596)
- [@&#8203;LukeCarrier](https://github.com/LukeCarrier) made their first contribution in [#&#8203;1612](https://github.com/kubernetes-sigs/descheduler/pull/1612)
- [@&#8203;jandai](https://github.com/jandai) made their first contribution in [#&#8203;1632](https://github.com/kubernetes-sigs/descheduler/pull/1632)
- [@&#8203;ricardomaraschini](https://github.com/ricardomaraschini) made their first contribution in [#&#8203;1636](https://github.com/kubernetes-sigs/descheduler/pull/1636)
- [@&#8203;tspearconquest](https://github.com/tspearconquest) made their first contribution in [#&#8203;1580](https://github.com/kubernetes-sigs/descheduler/pull/1580)
- [@&#8203;freedomchurl](https://github.com/freedomchurl) made their first contribution in [#&#8203;1651](https://github.com/kubernetes-sigs/descheduler/pull/1651)
- [@&#8203;dependabot](https://github.com/dependabot) made their first contribution in [#&#8203;1679](https://github.com/kubernetes-sigs/descheduler/pull/1679)

**Full Changelog**: <https://github.com/kubernetes-sigs/descheduler/compare/v0.32.0...v0.33.0>

### [`v0.32.2`](https://github.com/kubernetes-sigs/descheduler/releases/tag/v0.32.2): Descheduler v0.32.2

[Compare Source](https://github.com/kubernetes-sigs/descheduler/compare/v0.32.1...v0.32.2)

#### What's Changed

- \[v0.32.1] patch release for CVE-2024-45337 and CVE-2024-45338 by [@&#8203;a7i](https://github.com/a7i) in [#&#8203;1601](https://github.com/kubernetes-sigs/descheduler/pull/1601)
- Automated cherry pick of [#&#8203;1596](https://github.com/kubernetes-sigs/descheduler/issues/1596): charts: add missing permission for policy at ClusterRole by [@&#8203;googs1025](https://github.com/googs1025) in [#&#8203;1621](https://github.com/kubernetes-sigs/descheduler/pull/1621)
- Automated cherry pick of [#&#8203;1599](https://github.com/kubernetes-sigs/descheduler/issues/1599): charts: add needed perms if metricsCollector is enabled by [@&#8203;googs1025](https://github.com/googs1025) in [#&#8203;1620](https://github.com/kubernetes-sigs/descheduler/pull/1620)

**Full Changelog**: <https://github.com/kubernetes-sigs/descheduler/compare/v0.32.1...v0.32.2>

### [`v0.32.1`](https://github.com/kubernetes-sigs/descheduler/releases/tag/v0.32.1)

[Compare Source](https://github.com/kubernetes-sigs/descheduler/compare/v0.32.0...v0.32.1)

#### What's Changed

- update license to year 2025 by [@&#8203;a7i](https://github.com/a7i) in [#&#8203;1593](https://github.com/kubernetes-sigs/descheduler/pull/1593)
- \[release v0.32.0] bump chart and images by [@&#8203;a7i](https://github.com/a7i) in [#&#8203;1592](https://github.com/kubernetes-sigs/descheduler/pull/1592)
- Automated cherry pick of [#&#8203;1591](https://github.com/kubernetes-sigs/descheduler/issues/1591): bump x/net and x/crypto deps for CVE-2024-45337 and by [@&#8203;a7i](https://github.com/a7i) in [#&#8203;1600](https://github.com/kubernetes-sigs/descheduler/pull/1600)

**Full Changelog**: <https://github.com/kubernetes-sigs/descheduler/compare/v0.32.0...v0.32.1>

### [`v0.32.0`](https://github.com/kubernetes-sigs/descheduler/releases/tag/v0.32.0)

[Compare Source](https://github.com/kubernetes-sigs/descheduler/compare/v0.31.0...v0.32.0)

#### What's Changed

- descheduler v0.31.0: bump kustomize files by [@&#8203;a7i](https://github.com/a7i) in [#&#8203;1511](https://github.com/kubernetes-sigs/descheduler/pull/1511)
- chore: bump golangci-lint to latest by [@&#8203;a7i](https://github.com/a7i) in [#&#8203;1513](https://github.com/kubernetes-sigs/descheduler/pull/1513)
- descheduler v0.31.0: bump helm chart by [@&#8203;a7i](https://github.com/a7i) in [#&#8203;1512](https://github.com/kubernetes-sigs/descheduler/pull/1512)
- fix: github action Release Charts to have write permissions by [@&#8203;a7i](https://github.com/a7i) in [#&#8203;1514](https://github.com/kubernetes-sigs/descheduler/pull/1514)
- \[e2e] abstract common methods by [@&#8203;fanhaouu](https://github.com/fanhaouu) in [#&#8203;1517](https://github.com/kubernetes-sigs/descheduler/pull/1517)
- \[DuplicatePods] e2e: build a descheduler image and run the descheduler as a pod by [@&#8203;fanhaouu](https://github.com/fanhaouu) in [#&#8203;1520](https://github.com/kubernetes-sigs/descheduler/pull/1520)
- \[FailedPods] e2e: build a descheduler image and run the descheduler as a pod  by [@&#8203;fanhaouu](https://github.com/fanhaouu) in [#&#8203;1521](https://github.com/kubernetes-sigs/descheduler/pull/1521)
- \[TopologySpreadConstraint] e2e: build a descheduler image and run the descheduler as a pod by [@&#8203;fanhaouu](https://github.com/fanhaouu) in [#&#8203;1523](https://github.com/kubernetes-sigs/descheduler/pull/1523)
- \[LeaderElection] e2e: build a descheduler image and run the descheduler as a pod by [@&#8203;fanhaouu](https://github.com/fanhaouu) in [#&#8203;1522](https://github.com/kubernetes-sigs/descheduler/pull/1522)
- Make sure dry runs sees all the resources a normal run would do by [@&#8203;john7doe](https://github.com/john7doe) in [#&#8203;1526](https://github.com/kubernetes-sigs/descheduler/pull/1526)
- test: construct e2e deployments through buildTestDeployment by [@&#8203;ingvagabund](https://github.com/ingvagabund) in [#&#8203;1527](https://github.com/kubernetes-sigs/descheduler/pull/1527)
- Node utilization refactoring by [@&#8203;ingvagabund](https://github.com/ingvagabund) in [#&#8203;1532](https://github.com/kubernetes-sigs/descheduler/pull/1532)
- add ignorePodsWithoutPDB option by [@&#8203;john7doe](https://github.com/john7doe) in [#&#8203;1529](https://github.com/kubernetes-sigs/descheduler/pull/1529)
- Update Dockerfile - GoLang v 1.22.7 FIX - CVE-2024-34156, CVE-2024-34155 and CVE-2024-34158 by [@&#8203;sagar-18](https://github.com/sagar-18) in [#&#8203;1539](https://github.com/kubernetes-sigs/descheduler/pull/1539)
- Update nodes sorting function to respect available resources by [@&#8203;ingvagabund](https://github.com/ingvagabund) in [#&#8203;1541](https://github.com/kubernetes-sigs/descheduler/pull/1541)
- DeschedulerServer: new Apply function for applying configuration by [@&#8203;ingvagabund](https://github.com/ingvagabund) in [#&#8203;1542](https://github.com/kubernetes-sigs/descheduler/pull/1542)
- sortNodesByUsage: drop extended resources as they are already counted in by [@&#8203;ingvagabund](https://github.com/ingvagabund) in [#&#8203;1546](https://github.com/kubernetes-sigs/descheduler/pull/1546)
- nodeutilization: NodeUtilization: make pod utilization extraction configurable by [@&#8203;ingvagabund](https://github.com/ingvagabund) in [#&#8203;1543](https://github.com/kubernetes-sigs/descheduler/pull/1543)
- nodeutilization: evictPodsFromSourceNodes: iterate through existing resources by [@&#8203;ingvagabund](https://github.com/ingvagabund) in [#&#8203;1544](https://github.com/kubernetes-sigs/descheduler/pull/1544)
- nodeutilization: usage2KeysAndValues for constructing a key:value list for InfoS printing resource usage by [@&#8203;ingvagabund](https://github.com/ingvagabund) in [#&#8203;1549](https://github.com/kubernetes-sigs/descheduler/pull/1549)
- bump(golangci-lint)=v1.62.0 by [@&#8203;ingvagabund](https://github.com/ingvagabund) in [#&#8203;1551](https://github.com/kubernetes-sigs/descheduler/pull/1551)
- nodeutilization: separate code responsible for requested resource extraction into a dedicated usage client by [@&#8203;ingvagabund](https://github.com/ingvagabund) in [#&#8203;1545](https://github.com/kubernetes-sigs/descheduler/pull/1545)
- Introduce RequestEviction feature for evicting pods in background (KEP-1397) by [@&#8203;ingvagabund](https://github.com/ingvagabund) in [#&#8203;1466](https://github.com/kubernetes-sigs/descheduler/pull/1466)
- Use actual node resource utilization by consuming kubernetes metrics by [@&#8203;ingvagabund](https://github.com/ingvagabund) in [#&#8203;1555](https://github.com/kubernetes-sigs/descheduler/pull/1555)
- Bump to Go 1.23.3 by [@&#8203;seanmalloy](https://github.com/seanmalloy) in [#&#8203;1565](https://github.com/kubernetes-sigs/descheduler/pull/1565)
- Bump golangci-lint to 1.62.2 by [@&#8203;seanmalloy](https://github.com/seanmalloy) in [#&#8203;1567](https://github.com/kubernetes-sigs/descheduler/pull/1567)
- Bump kind version to v0.25.0 by [@&#8203;seanmalloy](https://github.com/seanmalloy) in [#&#8203;1568](https://github.com/kubernetes-sigs/descheduler/pull/1568)
- Bump golangci-lint timeout from 2m to 5m by [@&#8203;seanmalloy](https://github.com/seanmalloy) in [#&#8203;1571](https://github.com/kubernetes-sigs/descheduler/pull/1571)
- Enable golangci-lint Verbose Output by [@&#8203;seanmalloy](https://github.com/seanmalloy) in [#&#8203;1572](https://github.com/kubernetes-sigs/descheduler/pull/1572)
- bump to kubernetes v0.32.0-rc.2 by [@&#8203;a7i](https://github.com/a7i) in [#&#8203;1569](https://github.com/kubernetes-sigs/descheduler/pull/1569)
- docs: Removing deschedulerPolicy.strategies since it does not exist by [@&#8203;felipewnp](https://github.com/felipewnp) in [#&#8203;1570](https://github.com/kubernetes-sigs/descheduler/pull/1570)
- Fixed the issue when successfulJobsHistoryLimit and failedJobsHistoryLimit variables are 0. by [@&#8203;icloudnote](https://github.com/icloudnote) in [#&#8203;1573](https://github.com/kubernetes-sigs/descheduler/pull/1573)
- Bump kind to v0.26.0 by [@&#8203;seanmalloy](https://github.com/seanmalloy) in [#&#8203;1576](https://github.com/kubernetes-sigs/descheduler/pull/1576)
- Improve chart default values by [@&#8203;pipo02mix](https://github.com/pipo02mix) in [#&#8203;1564](https://github.com/kubernetes-sigs/descheduler/pull/1564)
- bump to official kubernetes v0.32.0 deps by [@&#8203;a7i](https://github.com/a7i) in [#&#8203;1575](https://github.com/kubernetes-sigs/descheduler/pull/1575)
- feature(eviction): add event when EvictPod failed by [@&#8203;googs1025](https://github.com/googs1025) in [#&#8203;1536](https://github.com/kubernetes-sigs/descheduler/pull/1536)
- \[release v0.32] update kubernetes kind version to 1.32 by [@&#8203;a7i](https://github.com/a7i) in [#&#8203;1587](https://github.com/kubernetes-sigs/descheduler/pull/1587)
- \[release v0.32] update docs/readme by [@&#8203;a7i](https://github.com/a7i) in [#&#8203;1588](https://github.com/kubernetes-sigs/descheduler/pull/1588)

#### New Contributors

- [@&#8203;john7doe](https://github.com/john7doe) made their first contribution in [#&#8203;1526](https://github.com/kubernetes-sigs/descheduler/pull/1526)
- [@&#8203;felipewnp](https://github.com/felipewnp) made their first contribution in [#&#8203;1570](https://github.com/kubernetes-sigs/descheduler/pull/1570)
- [@&#8203;icloudnote](https://github.com/icloudnote) made their first contribution in [#&#8203;1573](https://github.com/kubernetes-sigs/descheduler/pull/1573)
- [@&#8203;pipo02mix](https://github.com/pipo02mix) made their first contribution in [#&#8203;1564](https://github.com/kubernetes-sigs/descheduler/pull/1564)

**Full Changelog**: <https://github.com/kubernetes-sigs/descheduler/compare/v0.31.0...v0.32.0>

### [`v0.31.0`](https://github.com/kubernetes-sigs/descheduler/releases/tag/v0.31.0): Descheduler v0.31.0

[Compare Source](https://github.com/kubernetes-sigs/descheduler/compare/v0.30.2...v0.31.0)

#### What's Changed

- bump to to 1.22.3 to address CVE-2024-24788 by [@&#8203;a7i](https://github.com/a7i) in [#&#8203;1408](https://github.com/kubernetes-sigs/descheduler/pull/1408)
- Fix the replicas value type for the descheduler helm-chart by [@&#8203;hanyouqing](https://github.com/hanyouqing) in [#&#8203;1378](https://github.com/kubernetes-sigs/descheduler/pull/1378)
- Helm chart - allow 'falsey' value in cmdOption by [@&#8203;omerap12](https://github.com/omerap12) in [#&#8203;1390](https://github.com/kubernetes-sigs/descheduler/pull/1390)
- fix helm's default deschedulerPolicy by [@&#8203;duplabe](https://github.com/duplabe) in [#&#8203;1412](https://github.com/kubernetes-sigs/descheduler/pull/1412)
- fix TOC location in Readme by [@&#8203;duplabe](https://github.com/duplabe) in [#&#8203;1413](https://github.com/kubernetes-sigs/descheduler/pull/1413)
- use cmd context instead of using context.Background() by [@&#8203;googs1025](https://github.com/googs1025) in [#&#8203;1416](https://github.com/kubernetes-sigs/descheduler/pull/1416)
- fix the issue that the pod anti-filtering rules are not taking effect by [@&#8203;fanhaouu](https://github.com/fanhaouu) in [#&#8203;1395](https://github.com/kubernetes-sigs/descheduler/pull/1395)
- Bump otel semconv to 1.24 by [@&#8203;damemi](https://github.com/damemi) in [#&#8203;1429](https://github.com/kubernetes-sigs/descheduler/pull/1429)
- chore: reduce repetition of go versions by [@&#8203;a7i](https://github.com/a7i) in [#&#8203;1432](https://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://github.com/a7i) in [#&#8203;1433](https://github.com/kubernetes-sigs/descheduler/pull/1433)
- return pod qos in advance by [@&#8203;fanhaouu](https://github.com/fanhaouu) in [#&#8203;1435](https://github.com/kubernetes-sigs/descheduler/pull/1435)
- add validation ut by [@&#8203;googs1025](https://github.com/googs1025) in [#&#8203;1439](https://github.com/kubernetes-sigs/descheduler/pull/1439)
- refactor some methods in e2e test by [@&#8203;googs1025](https://github.com/googs1025) in [#&#8203;1441](https://github.com/kubernetes-sigs/descheduler/pull/1441)
- Automated cherry pick of [#&#8203;1427](https://github.com/kubernetes-sigs/descheduler/issues/1427): helm: upgrade to v0.30.1 by [@&#8203;a7i](https://github.com/a7i) in [#&#8203;1431](https://github.com/kubernetes-sigs/descheduler/pull/1431)
- chore: cleanup duplicated code by [@&#8203;googs1025](https://github.com/googs1025) in [#&#8203;1438](https://github.com/kubernetes-sigs/descheduler/pull/1438)
- fix: return the unmatched cases first by [@&#8203;googs1025](https://github.com/googs1025) in [#&#8203;1446](https://github.com/kubernetes-sigs/descheduler/pull/1446)
- Unit-test: add necessary ownerRef to the pod. by [@&#8203;zhifei92](https://github.com/zhifei92) in [#&#8203;1445](https://github.com/kubernetes-sigs/descheduler/pull/1445)
- PodEvictor: refactoring and preparation for eviction requests by [@&#8203;ingvagabund](https://github.com/ingvagabund) in [#&#8203;1447](https://github.com/kubernetes-sigs/descheduler/pull/1447)
- refactor: PodMatchNodeSelector method by [@&#8203;googs1025](https://github.com/googs1025) in [#&#8203;1450](https://github.com/kubernetes-sigs/descheduler/pull/1450)
- return node fit error in advance by [@&#8203;fanhaouu](https://github.com/fanhaouu) in [#&#8203;1436](https://github.com/kubernetes-sigs/descheduler/pull/1436)
- test: generate uid when building a pod by [@&#8203;ingvagabund](https://github.com/ingvagabund) in [#&#8203;1454](https://github.com/kubernetes-sigs/descheduler/pull/1454)
- feat: pod evictor options by [@&#8203;a7i](https://github.com/a7i) in [#&#8203;1455](https://github.com/kubernetes-sigs/descheduler/pull/1455)
- fix: indexer cache error when default evictor is re-initialized by [@&#8203;a7i](https://github.com/a7i) in [#&#8203;1452](https://github.com/kubernetes-sigs/descheduler/pull/1452)
- fix: add info for error return by [@&#8203;googs1025](https://github.com/googs1025) in [#&#8203;1457](https://github.com/kubernetes-sigs/descheduler/pull/1457)
- PodEvictor: turn an exceeded limit into an error by [@&#8203;ingvagabund](https://github.com/ingvagabund) in [#&#8203;1456](https://github.com/kubernetes-sigs/descheduler/pull/1456)
- descheduler\_test.go refactoring by [@&#8203;ingvagabund](https://github.com/ingvagabund) in [#&#8203;1459](https://github.com/kubernetes-sigs/descheduler/pull/1459)
- The descheduler supports limiting the total number of pods evicted per rescheduling cycle by [@&#8203;zhifei92](https://github.com/zhifei92) in [#&#8203;1451](https://github.com/kubernetes-sigs/descheduler/pull/1451)
- descheduler\_test.go: initDescheduler: pass a new ctx with cancel inst… by [@&#8203;ingvagabund](https://github.com/ingvagabund) in [#&#8203;1460](https://github.com/kubernetes-sigs/descheduler/pull/1460)
- pod evictor: make it thread safe by [@&#8203;ingvagabund](https://github.com/ingvagabund) in [#&#8203;1458](https://github.com/kubernetes-sigs/descheduler/pull/1458)
- Update README about maxNoOfPodsToEvictTotal by [@&#8203;zhifei92](https://github.com/zhifei92) in [#&#8203;1463](https://github.com/kubernetes-sigs/descheduler/pull/1463)
- refactor: replace k8s.io/utils/pointer with k8s.io/utils/ptr by [@&#8203;eminaktas](https://github.com/eminaktas) in [#&#8203;1464](https://github.com/kubernetes-sigs/descheduler/pull/1464)
- feat: Add namespace override settings in Helm Chart by [@&#8203;ternbusty](https://github.com/ternbusty) in [#&#8203;1444](https://github.com/kubernetes-sigs/descheduler/pull/1444)
- fix: helm leader-election typo to `resourceNamespace` by [@&#8203;a7i](https://github.com/a7i) in [#&#8203;1443](https://github.com/kubernetes-sigs/descheduler/pull/1443)
- helm unit tests by [@&#8203;a7i](https://github.com/a7i) in [#&#8203;1467](https://github.com/kubernetes-sigs/descheduler/pull/1467)
- feat: add init and ephemeral container checks to PodLifeTime by [@&#8203;adammw](https://github.com/adammw) in [#&#8203;1468](https://github.com/kubernetes-sigs/descheduler/pull/1468)
- bump(github.com/golangci/golangci-lint)=v1.59.1 by [@&#8203;ingvagabund](https://github.com/ingvagabund) in [#&#8203;1473](https://github.com/kubernetes-sigs/descheduler/pull/1473)
- e2e: TestTooManyRestarts: run descheduler as a whole instead of a single plugin by [@&#8203;ingvagabund](https://github.com/ingvagabund) in [#&#8203;1472](https://github.com/kubernetes-sigs/descheduler/pull/1472)
- e2e: TestRemoveDuplicates: limit the tested namespace by [@&#8203;ingvagabund](https://github.com/ingvagabund) in [#&#8203;1471](https://github.com/kubernetes-sigs/descheduler/pull/1471)
- KEP-1397: descheduler integration with evacuation API as an alternative to eviction API by [@&#8203;ingvagabund](https://github.com/ingvagabund) in [#&#8203;1354](https://github.com/kubernetes-sigs/descheduler/pull/1354)
- skip eviction when pod creation time is below minPodAge threshold setting by [@&#8203;victorgs](https://github.com/victorgs) in [#&#8203;1475](https://github.com/kubernetes-sigs/descheduler/pull/1475)
- fix: minor version parsing in version compatibility check by [@&#8203;a7i](https://github.com/a7i) in [#&#8203;1430](https://github.com/kubernetes-sigs/descheduler/pull/1430)
- e2e: TestLeaderElection: delete the lease and increase the retry period by [@&#8203;ingvagabund](https://github.com/ingvagabund) in [#&#8203;1469](https://github.com/kubernetes-sigs/descheduler/pull/1469)
- bump go to 1.22.5 by [@&#8203;shahar-h](https://github.com/shahar-h) in [#&#8203;1476](https://github.com/kubernetes-sigs/descheduler/pull/1476)
- \[TestTooManyRestarts] e2e: build a descheduler image and run the descheduler as a pod by [@&#8203;ingvagabund](https://github.com/ingvagabund) in [#&#8203;1474](https://github.com/kubernetes-sigs/descheduler/pull/1474)
- docs: Provide OCI annotation for where to find image sources by [@&#8203;sklirg](https://github.com/sklirg) in [#&#8203;1479](https://github.com/kubernetes-sigs/descheduler/pull/1479)
- Remove descheduler/v1alpha1 type by [@&#8203;ingvagabund](https://github.com/ingvagabund) in [#&#8203;1482](https://github.com/kubernetes-sigs/descheduler/pull/1482)
- tests: de-duplicate framework handle initialization by [@&#8203;ingvagabund](https://github.com/ingvagabund) in [#&#8203;1483](https://github.com/kubernetes-sigs/descheduler/pull/1483)
- \[unit test]: test descheduling limits by [@&#8203;ingvagabund](https://github.com/ingvagabund) in [#&#8203;1484](https://github.com/kubernetes-sigs/descheduler/pull/1484)
- \[unit test]: simplify test pod evictor reset by [@&#8203;ingvagabund](https://github.com/ingvagabund) in [#&#8203;1485](https://github.com/kubernetes-sigs/descheduler/pull/1485)
- README: drop v1alpha1 descheduler policy mention by [@&#8203;ingvagabund](https://github.com/ingvagabund) in [#&#8203;1498](https://github.com/kubernetes-sigs/descheduler/pull/1498)
- bump k8s.io libs to v0.31.0 by [@&#8203;a7i](https://github.com/a7i) in [#&#8203;1496](https://github.com/kubernetes-sigs/descheduler/pull/1496)
- chore: upgrade python EOL and action versions by [@&#8203;a7i](https://github.com/a7i) in [#&#8203;1505](https://github.com/kubernetes-sigs/descheduler/pull/1505)
- descheduler v0.31: update e2e test versions by [@&#8203;a7i](https://github.com/a7i) in [#&#8203;1504](https://github.com/kubernetes-sigs/descheduler/pull/1504)
- feat(helm): make securityContext conditional in Deployment and CronJob by [@&#8203;bendikp](https://github.com/bendikp) in [#&#8203;1507](https://github.com/kubernetes-sigs/descheduler/pull/1507)
- Plugin args: tag arguments with omitempty to reduce the marshalled json size by [@&#8203;ingvagabund](https://github.com/ingvagabund) in [#&#8203;1480](https://github.com/kubernetes-sigs/descheduler/pull/1480)
- descheduler v0.31: update docs and manifests by [@&#8203;a7i](https://github.com/a7i) in [#&#8203;1506](https://github.com/kubernetes-sigs/descheduler/pull/1506)
- \[e2e] no test timeouts, produce the same image tag as in production by [@&#8203;fanhaouu](https://github.com/fanhaouu) in [#&#8203;1508](https://github.com/kubernetes-sigs/descheduler/pull/1508)
- chore: replace `github.com/ghodss/yaml` with `sigs.k8s.io/yaml` by [@&#8203;Juneezee](https://github.com/Juneezee) in [#&#8203;1510](https://github.com/kubernetes-sigs/descheduler/pull/1510)

#### New Contributors

- [@&#8203;hanyouqing](https://github.com/hanyouqing) made their first contribution in [#&#8203;1378](https://github.com/kubernetes-sigs/descheduler/pull/1378)
- [@&#8203;omerap12](https://github.com/omerap12) made their first contribution in [#&#8203;1390](https://github.com/kubernetes-sigs/descheduler/pull/1390)
- [@&#8203;duplabe](https://github.com/duplabe) made their first contribution in [#&#8203;1412](https://github.com/kubernetes-sigs/descheduler/pull/1412)
- [@&#8203;googs1025](https://github.com/googs1025) made their first contribution in [#&#8203;1416](https://github.com/kubernetes-sigs/descheduler/pull/1416)
- [@&#8203;zhifei92](https://github.com/zhifei92) made their first contribution in [#&#8203;1445](https://github.com/kubernetes-sigs/descheduler/pull/1445)
- [@&#8203;ternbusty](https://github.com/ternbusty) made their first contribution in [#&#8203;1444](https://github.com/kubernetes-sigs/descheduler/pull/1444)
- [@&#8203;adammw](https://github.com/adammw) made their first contribution in [#&#8203;1468](https://github.com/kubernetes-sigs/descheduler/pull/1468)
- [@&#8203;shahar-h](https://github.com/shahar-h) made their first contribution in [#&#8203;1476](https://github.com/kubernetes-sigs/descheduler/pull/1476)
- [@&#8203;sklirg](https://github.com/sklirg) made their first contribution in [#&#8203;1479](https://github.com/kubernetes-sigs/descheduler/pull/1479)
- [@&#8203;bendikp](https://github.com/bendikp) made their first contribution in [#&#8203;1507](https://github.com/kubernetes-sigs/descheduler/pull/1507)
- [@&#8203;Juneezee](https://github.com/Juneezee) made their first contribution in [#&#8203;1510](https://github.com/kubernetes-sigs/descheduler/pull/1510)

**Full Changelog**: <https://github.com/kubernetes-sigs/descheduler/compare/v0.30.0...v0.31.0>

### [`v0.30.2`](https://github.com/kubernetes-sigs/descheduler/compare/v0.30.1...v0.30.2)

[Compare Source](https://github.com/kubernetes-sigs/descheduler/compare/v0.30.1...v0.30.2)

### [`v0.30.1`](https://github.com/kubernetes-sigs/descheduler/releases/tag/v0.30.1): Descheduler v0.30.1

[Compare Source](https://github.com/kubernetes-sigs/descheduler/compare/v0.30.0...v0.30.1)

#### What's Changed

- bump to to 1.22.3 to address CVE-2024-24788 by [@&#8203;a7i](https://github.com/a7i) in [#&#8203;1408](https://github.com/kubernetes-sigs/descheduler/pull/1408)
- \[release 1.30] update kustomize image tags and helm versions by [@&#8203;a7i](https://github.com/a7i) in [#&#8203;1405](https://github.com/kubernetes-sigs/descheduler/pull/1405)
- Automated cherry pick of [#&#8203;1378](https://github.com/kubernetes-sigs/descheduler/issues/1378): Fix the replicas type for the helm-chart
  [#&#8203;1390](https://github.com/kubernetes-sigs/descheduler/issues/1390): allow 'falsey' value in cmdOption
  [#&#8203;1412](https://github.com/kubernetes-sigs/descheduler/issues/1412): fix helm's default deschedulerPolicy
  [#&#8203;1413](https://github.com/kubernetes-sigs/descheduler/issues/1413): fix TOC location in Readme
  [#&#8203;1416](https://github.com/kubernetes-sigs/descheduler/issues/1416): use cmd context instead of using context.Background()
  [#&#8203;1395](https://github.com/kubernetes-sigs/descheduler/issues/1395): fix the issue that the pod anti-filtering rules are not by [@&#8203;a7i](https://github.com/a7i) in [#&#8203;1425](https://github.com/kubernetes-sigs/descheduler/pull/1425)

**Full Changelog**: <https://github.com/kubernetes-sigs/descheduler/compare/v0.30.0...v0.30.1>

### [`v0.30.0`](https://github.com/kubernetes-sigs/descheduler/releases/tag/v0.30.0): Descheduler v0.30.0

[Compare Source](https://github.com/kubernetes-sigs/descheduler/compare/v0.29.0...v0.30.0)

#### What's Changed

- fix(podlifetime): fix failed unittest by [@&#8203;xujihui1985](https://github.com/xujihui1985) in [#&#8203;1334](https://github.com/kubernetes-sigs/descheduler/pull/1334)
- `PodLifeTime`:  update support pods with container status and  pods reason by [@&#8203;dongjiang1989](https://github.com/dongjiang1989) in [#&#8203;1330](https://github.com/kubernetes-sigs/descheduler/pull/1330)
- v1alpha1: log deprecation notice by [@&#8203;a7i](https://github.com/a7i) in [#&#8203;1337](https://github.com/kubernetes-sigs/descheduler/pull/1337)
- feat: Add support for topologySpreadConstraints by [@&#8203;UAntBou](https://github.com/UAntBou) in [#&#8203;1289](https://github.com/kubernetes-sigs/descheduler/pull/1289)
- chore: update dependencies for security vulnerabilities (CVE-2023-48795) by [@&#8203;a7i](https://github.com/a7i) in [#&#8203;1343](https://github.com/kubernetes-sigs/descheduler/pull/1343)
- trim managedFields in shared informer factory by [@&#8203;a7i](https://github.com/a7i) in [#&#8203;1346](https://github.com/kubernetes-sigs/descheduler/pull/1346)
- fix: `RemovePodsHavingTooManyRestarts` to include `InitContainerStatuses` by [@&#8203;a7i](https://github.com/a7i) in [#&#8203;1348](https://github.com/kubernetes-sigs/descheduler/pull/1348)
- Improve PodEvictor observability through EvictOptions by [@&#8203;tioxy](https://github.com/tioxy) in [#&#8203;1349](https://github.com/kubernetes-sigs/descheduler/pull/1349)
- Fix node taint wrong EvictOption field by [@&#8203;tioxy](https://github.com/tioxy) in [#&#8203;1358](https://github.com/kubernetes-sigs/descheduler/pull/1358)
- Disambiguate node fit log messages by [@&#8203;jackfrancis](https://github.com/jackfrancis) in [#&#8203;1362](https://github.com/kubernetes-sigs/descheduler/pull/1362)
- Check whether pod matches the inter-pod anti-affinity of another Pod in a given Node in `NodeFit()` by [@&#8203;nikimanoledaki](https://github.com/nikimanoledaki) in [#&#8203;1356](https://github.com/kubernetes-sigs/descheduler/pull/1356)
- Bump to k8s v0.30.0-alpha.3 by [@&#8203;pravarag](https://github.com/pravarag) in [#&#8203;1359](https://github.com/kubernetes-sigs/descheduler/pull/1359)
- skip eviction when replica count is below evictor `minReplicas` threshold setting by [@&#8203;a7i](https://github.com/a7i) in [#&#8203;1257](https://github.com/kubernetes-sigs/descheduler/pull/1257)
- Add argument to remove only pods violating allowlisted taints by [@&#8203;etoster](https://github.com/etoster) in [#&#8203;1360](https://github.com/kubernetes-sigs/descheduler/pull/1360)
- use v1alpha2 api for helm chart default values by [@&#8203;a7i](https://github.com/a7i) in [#&#8203;1139](https://github.com/kubernetes-sigs/descheduler/pull/1139)
- `RemoveDuplicates`: reduce cycle times identifying duplicates by [@&#8203;ls-2018](https://github.com/ls-2018) in [#&#8203;1365](https://github.com/kubernetes-sigs/descheduler/pull/1365)
- avoid redundant type conversion of DefaultEvictorArgs parameter in DefaultEvictor by [@&#8203;fanhaouu](https://github.com/fanhaouu) in [#&#8203;1369](https://github.com/kubernetes-sigs/descheduler/pull/1369)
- bump(golang.org/x/net)=v0.23.0 by [@&#8203;ingvagabund](https://github.com/ingvagabund) in [#&#8203;1373](https://github.com/kubernetes-sigs/descheduler/pull/1373)
- Allow eviction of DaemonSet pods by [@&#8203;tioxy](https://github.com/tioxy) in [#&#8203;1342](https://github.com/kubernetes-sigs/descheduler/pull/1342)
- bump to go 1.22.2 by [@&#8203;jklaw90](https://github.com/jklaw90) in [#&#8203;1374](https://github.com/kubernetes-sigs/descheduler/pull/1374)
- helm: Allow the use of existing policy configMap by [@&#8203;agmimidi](https://github.com/agmimidi) in [#&#8203;1376](https://github.com/kubernetes-sigs/descheduler/pull/1376)
- Fix and improve the namespace filtering description in README by [@&#8203;yuanchen8911](https://github.com/yuanchen8911) in [#&#8203;1379](https://github.com/kubernetes-sigs/descheduler/pull/1379)
- Add an extra parameter ExitCode to RemoveFailedPods by [@&#8203;yuanchen8911](https://github.com/yuanchen8911) in [#&#8203;1381](https://github.com/kubernetes-sigs/descheduler/pull/1381)
- 753 - Descheduling framework by [@&#8203;ingvagabund](https://github.com/ingvagabund) in [#&#8203;1372](https://github.com/kubernetes-sigs/descheduler/pull/1372)
- KEP-753: Descheduling framework: update diagram by [@&#8203;ingvagabund](https://github.com/ingvagabund) in [#&#8203;1396](https://github.com/kubernetes-sigs/descheduler/pull/1396)
- \[release 1.30] upgrade kubernetes version and docs by [@&#8203;a7i](https://github.com/a7i) in [#&#8203;1400](https://github.com/kubernetes-sigs/descheduler/pull/1400)

#### New Contributors

- [@&#8203;xujihui1985](https://github.com/xujihui1985) made their first contribution in [#&#8203;1334](https://github.com/kubernetes-sigs/descheduler/pull/1334)
- [@&#8203;UAntBou](https://github.com/UAntBou) made their first contribution in [#&#8203;1289](https://github.com/kubernetes-sigs/descheduler/pull/1289)
- [@&#8203;tioxy](https://github.com/tioxy) made their first contribution in [#&#8203;1349](https://github.com/kubernetes-sigs/descheduler/pull/1349)
- [@&#8203;jackfrancis](https://github.com/jackfrancis) made their first contribution in [#&#8203;1362](https://github.com/kubernetes-sigs/descheduler/pull/1362)
- [@&#8203;nikimanoledaki](https://github.com/nikimanoledaki) made their first contribution in [#&#8203;1356](https://github.com/kubernetes-sigs/descheduler/pull/1356)
- [@&#8203;etoster](https://github.com/etoster) made their first contribution in [#&#8203;1360](https://github.com/kubernetes-sigs/descheduler/pull/1360)
- [@&#8203;ls-2018](https://github.com/ls-2018) made their first contribution in [#&#8203;1365](https://github.com/kubernetes-sigs/descheduler/pull/1365)
- [@&#8203;fanhaouu](https://github.com/fanhaouu) made their first contribution in [#&#8203;1369](https://github.com/kubernetes-sigs/descheduler/pull/1369)
- [@&#8203;agmimidi](https://github.com/agmimidi) made their first contribution in [#&#8203;1376](https://github.com/kubernetes-sigs/descheduler/pull/1376)
- [@&#8203;yuanchen8911](https://github.com/yuanchen8911) made their first contribution in [#&#8203;1379](https://github.com/kubernetes-sigs/descheduler/pull/1379)

**Full Changelog**: <https://github.com/kubernetes-sigs/descheduler/compare/v0.29.0...v0.30.0>

### [`v0.29.0`](https://github.com/kubernetes-sigs/descheduler/releases/tag/v0.29.0): Descheduler v0.29.0

[Compare Source](https://github.com/kubernetes-sigs/descheduler/compare/v0.28.1...v0.29.0)

#### What's Changed

- topologySpreadConstraints: handle `nodeTaintsPolicy` and `nodeAffinityPolicy` constraints by [@&#8203;a7i](https://github.com/a7i) in [#&#8203;1218](https://github.com/kubernetes-sigs/descheduler/pull/1218)
- fix: structured err logs in eviction by [@&#8203;a7i](https://github.com/a7i) in [#&#8203;1228](https://github.com/kubernetes-sigs/descheduler/pull/1228)
- helm: update cronjob args argument to avoid unmarshal error by [@&#8203;cayla](https://github.com/cayla) in [#&#8203;1229](https://github.com/kubernetes-sigs/descheduler/pull/1229)
- fix: golangci config by [@&#8203;jklaw90](https://github.com/jklaw90) in [#&#8203;1242](https://github.com/kubernetes-sigs/descheduler/pull/1242)
- docs: fix evictableNamespaces example by [@&#8203;a7i](https://github.com/a7i) in [#&#8203;1241](https://github.com/kubernetes-sigs/descheduler/pull/1241)
- update image references to point to v0.28.0 by [@&#8203;a7i](https://github.com/a7i) in [#&#8203;1246](https://github.com/kubernetes-sigs/descheduler/pull/1246)
- nodefit: use info log level when pod doesn't fit by [@&#8203;antoinedeschenes](https://github.com/antoinedeschenes) in [#&#8203;1220](https://github.com/kubernetes-sigs/descheduler/pull/1220)
- helm: support of `timeZone` for CronJob by [@&#8203;a7i](https://github.com/a7i) in [#&#8203;1245](https://github.com/kubernetes-sigs/descheduler/pull/1245)
- helm: ability to specify `dnsConfig` by [@&#8203;audip](https://github.com/audip) in [#&#8203;1260](https://github.com/kubernetes-sigs/descheduler/pull/1260)
- Bump dependencies to address CVE-2023-44487 by [@&#8203;ingvagabund](https://github.com/ingvagabund) in [#&#8203;1263](https://github.com/kubernetes-sigs/descheduler/pull/1263)
- CVE 2023 44487 fixes by [@&#8203;ingvagabund](https://github.com/ingvagabund) in [#&#8203;1270](https://github.com/kubernetes-sigs/descheduler/pull/1270)
- bump deps for CVE-2023-25151 by [@&#8203;a7i](https://github.com/a7i) in [#&#8203;1277](https://github.com/kubernetes-sigs/descheduler/pull/1277)
- topologyspreadconstraint: support `matchLabelKeys` by [@&#8203;a7i](https://github.com/a7i) in [#&#8203;1233](https://github.com/kubernetes-sigs/descheduler/pull/1233)
- fix: display ownerKey in the logs correctly by [@&#8203;dimunech](https://github.com/dimunech) in [#&#8203;1281](https://github.com/kubernetes-sigs/descheduler/pull/1281)
- fix: version skew compatibility for managed kubernetes providers by [@&#8203;a7i](https://github.com/a7i) in [#&#8203;1249](https://github.com/kubernetes-sigs/descheduler/pull/1249)
- adding jklaw90 to reviewers by [@&#8203;jklaw90](https://github.com/jklaw90) in [#&#8203;1276](https://github.com/kubernetes-sigs/descheduler/pull/1276)
- copy cherry\_pick\_pull script form kubernetes/kubernetes by [@&#8203;a7i](https://github.com/a7i) in [#&#8203;1282](https://github.com/kubernetes-sigs/descheduler/pull/1282)
- CVE-2023-47108: replace otelgrpc version by [@&#8203;a7i](https://github.com/a7i) in [#&#8203;1293](https://github.com/kubernetes-sigs/descheduler/pull/1293)
- fix: json logging by [@&#8203;a7i](https://github.com/a7i) in [#&#8203;1296](https://github.com/kubernetes-sigs/descheduler/pull/1296)
- Make the logged nodeutilization percentages human-readable by [@&#8203;PeterSzegedi](https://github.com/PeterSzegedi) in [#&#8203;1294](https://github.com/kubernetes-sigs/descheduler/pull/1294)
- fix: revert defer of context done by [@&#8203;a7i](https://github.com/a7i) in [#&#8203;1299](https://github.com/kubernetes-sigs/descheduler/pull/1299)
- chore: upgrade libs to kubernetes 0.28.4 and matching go version by [@&#8203;a7i](https://github.com/a7i) in [#&#8203;1292](https://github.com/kubernetes-sigs/descheduler/pull/1292)
- release v0.28.1: bump helm chart and images by [@&#8203;a7i](https://github.com/a7i) in [#&#8203;1305](https://github.com/kubernetes-sigs/descheduler/pull/1305)
- helm: ability to specify security context for pod by [@&#8203;victorgs](https://github.com/victorgs) in [#&#8203;1311](https://github.com/kubernetes-sigs/descheduler/pull/1311)
- helm: allow configuration of ipFamilyPolicy by [@&#8203;dongjiang1989](https://github.com/dongjiang1989) in [#&#8203;1314](https://github.com/kubernetes-sigs/descheduler/pull/1314)
- fix: topologySpreadConstraint fields in structured logs by [@&#8203;SataQiu](https://github.com/SataQiu) in [#&#8203;1317](https://github.com/kubernetes-sigs/descheduler/pull/1317)
- `PodLifeTime`: consider pods with container status `ImagePullBackOff` by [@&#8203;a7i](https://github.com/a7i) in [#&#8203;1318](https://github.com/kubernetes-sigs/descheduler/pull/1318)
- kubernetes 1.29: update deps and go-version by [@&#8203;a7i](https://github.com/a7i) in [#&#8203;1322](https://github.com/kubernetes-sigs/descheduler/pull/1322)
- `CVE-2023-48795`: bump k8s deps by [@&#8203;a7i](https://github.com/a7i) in [#&#8203;1333](https://github.com/kubernetes-sigs/descheduler/pull/1333)

#### New Contributors

- [@&#8203;cayla](https://github.com/cayla) made their first contribution in [#&#8203;1229](https://github.com/kubernetes-sigs/descheduler/pull/1229)
- [@&#8203;dimunech](https://github.com/dimunech) made their first contribution in [#&#8203;1281](https://github.com/kubernetes-sigs/descheduler/pull/1281)
- [@&#8203;PeterSzegedi](https://github.com/PeterSzegedi) made their first contribution in [#&#8203;1294](https://github.com/kubernetes-sigs/descheduler/pull/1294)
- [@&#8203;victorgs](https://github.com/victorgs) made their first contribution in [#&#8203;1311](https://github.com/kubernetes-sigs/descheduler/pull/1311)
- [@&#8203;SataQiu](https://github.com/SataQiu) made their first contribution in [#&#8203;1317](https://github.com/kubernetes-sigs/descheduler/pull/1317)

**Full Changelog**: <https://github.com/kubernetes-sigs/descheduler/compare/v0.28.0...v0.29.0>

### [`v0.28.1`](https://github.com/kubernetes-sigs/descheduler/releases/tag/v0.28.1): Descheduler v0.28.1

[Compare Source](https://github.com/kubernetes-sigs/descheduler/compare/v0.28.0...v0.28.1)

#### What's Changed

- topologySpreadConstraints: handle `nodeTaintsPolicy` and `nodeAffinityPolicy` constraints by [@&#8203;a7i](https://github.com/a7i) in [#&#8203;1218](https://github.com/kubernetes-sigs/descheduler/pull/1218)
- fix: structured err logs in eviction by [@&#8203;a7i](https://github.com/a7i) in [#&#8203;1228](https://github.com/kubernetes-sigs/descheduler/pull/1228)
- helm: update cronjob args argument to avoid unmarshal error by [@&#8203;cayla](https://github.com/cayla) in [#&#8203;1229](https://github.com/kubernetes-sigs/descheduler/pull/1229)
- helm: update cronjob args argument to avoid unmarshal error by [@&#8203;a7i](https://github.com/a7i) in [#&#8203;1231](https://github.com/kubernetes-sigs/descheduler/pull/1231)
- fix: golangci config by [@&#8203;jklaw90](https://github.com/jklaw90) in [#&#8203;1242](https://github.com/kubernetes-sigs/descheduler/pull/1242)
- docs: fix evictableNamespaces example by [@&#8203;a7i](https://github.com/a7i) in [#&#8203;1241](https://github.com/kubernetes-sigs/descheduler/pull/1241)
- nodefit: use info log level when pod doesn't fit by [@&#8203;antoinedeschenes](https://github.com/antoinedeschenes) in [#&#8203;1220](https://github.com/kubernetes-sigs/descheduler/pull/1220)
- helm: support of `timeZone` for CronJob by [@&#8203;a7i](https://github.com/a7i) in [#&#8203;1245](https://github.com/kubernetes-sigs/descheduler/pull/1245)
- helm: ability to specify `dnsConfig` by [@&#8203;audip](https://github.com/audip) in [#&#8203;1260](https://github.com/kubernetes-sigs/descheduler/pull/1260)
- Bump dependencies to address CVE-2023-44487 by [@&#8203;ingvagabund](https://github.com/ingvagabund) in [#&#8203;1263](https://github.com/kubernetes-sigs/descheduler/pull/1263)
- CVE 2023 44487 fixes by [@&#8203;ingvagabund](https://github.com/ingvagabund) in [#&#8203;1270](https://github.com/kubernetes-sigs/descheduler/pull/1270)
- bump deps for CVE-2023-25151 by [@&#8203;a7i](https://github.com/a7i) in [#&#8203;1277](https://github.com/kubernetes-sigs/descheduler/pull/1277)
- topologyspreadconstraint: support `matchLabelKeys` by [@&#8203;a7i](https://github.com/a7i) in [#&#8203;1233](https://github.com/kubernetes-sigs/descheduler/pull/1233)
- fix: display ownerKey in the logs correctly by [@&#8203;dimunech](https://github.com/dimunech) in [#&#8203;1281](https://github.com/kubernetes-sigs/descheduler/pull/1281)
- fix: version skew compatibility for managed kubernetes providers by [@&#8203;a7i](https://github.com/a7i) in [#&#8203;1249](https://github.com/kubernetes-sigs/descheduler/pull/1249)
- Release 1.28.1 by [@&#8203;a7i](https://github.com/a7i) in [#&#8203;1285](https://github.com/kubernetes-sigs/descheduler/pull/1285)
- adding jklaw90 to reviewers by [@&#8203;jklaw90](https://github.com/jklaw90) in [#&#8203;1276](https://github.com/kubernetes-sigs/descheduler/pull/1276)
- copy cherry\_pick\_pull script form kubernetes/kubernetes by [@&#8203;a7i](https://github.com/a7i) in [#&#8203;1282](https://github.com/kubernetes-sigs/descheduler/pull/1282)
- CVE-2023-47108: replace otelgrpc version by [@&#8203;a7i](https://github.com/a7i) in [#&#8203;1293](https://github.com/kubernetes-sigs/descheduler/pull/1293)
- fix: json logging by [@&#8203;a7i](https://github.com/a7i) in [#&#8203;1296](https://github.com/kubernetes-sigs/descheduler/pull/1296)
- Make the logged nodeutilization percentages human-readable by [@&#8203;PeterSzegedi](https://github.com/PeterSzegedi) in [#&#8203;1294](https://github.com/kubernetes-sigs/descheduler/pull/1294)
- fix: revert defer of context done by [@&#8203;a7i](https://github.com/a7i) in [#&#8203;1299](https://github.com/kubernetes-sigs/descheduler/pull/1299)
- v0.28.1 - sync release-1.28 branch by [@&#8203;a7i](https://github.com/a7i) in [#&#8203;1301](https://github.com/kubernetes-sigs/descheduler/pull/1301)
- Automated cherry pick of [#&#8203;1292](https://github.com/kubernetes-sigs/descheduler/issues/1292): chore: upgrade libs to kubernetes 0.28.4 and matching go by [@&#8203;a7i](https://github.com/a7i) in [#&#8203;1302](https://github.com/kubernetes-sigs/descheduler/pull/1302)

#### New Contributors

- [@&#8203;cayla](https://github.com/cayla) made their first contribution in [#&#8203;1229](https://github.com/kubernetes-sigs/descheduler/pull/1229)
- [@&#8203;dimunech](https://github.com/dimunech) made their first contribution in [#&#8203;1281](https://github.com/kubernetes-sigs/descheduler/pull/1281)
- [@&#8203;PeterSzegedi](https://github.com/PeterSzegedi) made their first contribution in [#&#8203;1294](https://github.com/kubernetes-sigs/descheduler/pull/1294)

**Full Changelog**: <https://github.com/kubernetes-sigs/descheduler/compare/v0.28.0...v0.28.1>

### [`v0.28.0`](https://github.com/kubernetes-sigs/descheduler/releases/tag/v0.28.0): Descheduler v0.28.0

[Compare Source](https://github.com/kubernetes-sigs/descheduler/compare/v0.27.1...v0.28.0)

#### What's Changed

- add unit tests for version compatibility check by [@&#8203;a7i](https://github.com/a7i) in [#&#8203;1096](https://github.com/kubernetes-sigs/descheduler/pull/1096)
- fix plugin arg conversion when using multiple profiles with same plugin by [@&#8203;a7i](https://github.com/a7i) in [#&#8203;1143](https://github.com/kubernetes-sigs/descheduler/pull/1143)
- Use dl.k8s.io instead of kubernetes-release bucket by [@&#8203;ratnopamc](https://github.com/ratnopamc) in [#&#8203;1145](https://github.com/kubernetes-sigs/descheduler/pull/1145)
- update deprecated sets.String to generic sets by [@&#8203;a7i](https://github.com/a7i) in [#&#8203;1146](https://github.com/kubernetes-sigs/descheduler/pull/1146)
- helm: ability to override command and args. set args inline by [@&#8203;a7i](https://github.com/a7i) in [#&#8203;1151](https://github.com/kubernetes-sigs/descheduler/pull/1151)
- fix: imagepullsecrets indentation for kind: Deployment by [@&#8203;a7i](https://github.com/a7i) in [#&#8203;1150](https://github.com/kubernetes-sigs/descheduler/pull/1150)
- docs: supplement missing link by [@&#8203;mikutas](https://github.com/mikutas) in [#&#8203;1159](https://github.com/kubernetes-sigs/descheduler/pull/1159)
- bump chart to v0.27.1 by [@&#8203;a7i](https://github.com/a7i) in [#&#8203;1160](https://github.com/kubernetes-sigs/descheduler/pull/1160)
- Custom labels for ServiceMonitor resource by [@&#8203;nlamirault](https://github.com/nlamirault) in [#&#8203;1147](https://github.com/kubernetes-sigs/descheduler/pull/1147)
- pod anti-affinity check among nodes by [@&#8203;10hin](https://github.com/10hin) in [#&#8203;1033](https://github.com/kubernetes-sigs/descheduler/pull/1033)
- PodLifeTime: support CrashLoopBackOff container state by [@&#8203;a7i](https://github.com/a7i) in [#&#8203;1164](https://github.com/kubernetes-sigs/descheduler/pull/1164)
- update pause image from 'kubernetes/pause' to 'registry.k8s.io/pause' by [@&#8203;a7i](https://github.com/a7i) in [#&#8203;1166](https://github.com/kubernetes-sigs/descheduler/pull/1166)
- TooManyRestart: state filter for CrashLoopBackOff by [@&#8203;a7i](https://github.com/a7i) in [#&#8203;1165](https://github.com/kubernetes-sigs/descheduler/pull/1165)
- Replace deprecated command with environment file by [@&#8203;jongwooo](https://github.com/jongwooo) in [#&#8203;1173](https://github.com/kubernetes-sigs/descheduler/pull/1173)
- use pod informers for listing pods in removepodsviolatingtopologyspreadconstraint and removepodsviolatinginterpodantiaffinity by [@&#8203;a7i](https://github.com/a7i) in [#&#8203;1163](https://github.com/kubernetes-sigs/descheduler/pull/1163)
- removepodsviolatingtopologyspreadconstraint: implement explicit constraints by [@&#8203;a7i](https://github.com/a7i) in [#&#8203;1148](https://github.com/kubernetes-sigs/descheduler/pull/1148)
- FakeClientset: bump watch channel size by [@&#8203;ingvagabund](https://github.com/ingvagabund) in [#&#8203;1174](https://github.com/kubernetes-sigs/descheduler/pull/1174)
- deschedule/balance order (continuation) by [@&#8203;ingvagabund](https://github.com/ingvagabund) in [#&#8203;1177](https://github.com/kubernetes-sigs/descheduler/pull/1177)
- bump log level for processing info by [@&#8203;a7i](https://github.com/a7i) in [#&#8203;1141](https://github.com/kubernetes-sigs/descheduler/pull/1141)
- fix priority threshold by name alone by [@&#8203;knelasevero](https://github.com/knelasevero) in [#&#8203;1186](https://github.com/kubernetes-sigs/descheduler/pull/1186)
- feat: Enable open telemetry tracing by [@&#8203;harshanarayana](https://github.com/harshanarayana) in [#&#8203;1189](https://github.com/kubernetes-sigs/descheduler/pull/1189)
- bump to k8s 1.28 beta.0 by [@&#8203;a7i](https://github.com/a7i) in [#&#8203;1201](https://github.com/kubernetes-sigs/descheduler/pull/1201)
- nodefit: aggregate errors by [@&#8203;lucming](https://github.com/lucming) in [#&#8203;1203](https://github.com/kubernetes-sigs/descheduler/pull/1203)
- fix: base configmap missing plugin RemoveDuplicates by [@&#8203;a7i](https://github.com/a7i) in [#&#8203;1207](https://github.com/kubernetes-sigs/descheduler/pull/1207)
- feat: Implement preferredDuringSchedulingIgnoredDuringExecution for RemovePodsViolatingNodeAffinity by [@&#8203;jordipiqueselles](https://github.com/jordipiqueselles) in [#&#8203;1210](https://github.com/kubernetes-sigs/descheduler/pull/1210)
- fix: descheduler\_loop\_duration\_seconds has wrong value by [@&#8203;Abirdcfly](https://github.com/Abirdcfly) in [#&#8203;1215](https://github.com/kubernetes-sigs/descheduler/pull/1215)
- .gitattribute to not pollute MRs or stats by [@&#8203;a7i](https://github.com/a7i) in [#&#8203;1202](https://github.com/kubernetes-sigs/descheduler/pull/1202)
- Bump Kubernetes dependencies to v1.28.0 by [@&#8203;JaneLiuL](https://github.com/JaneLiuL) in [#&#8203;1216](https://github.com/kubernetes-sigs/descheduler/pull/1216)
- profile: fix span attribute typo by [@&#8203;antoinedeschenes](https://github.com/antoinedeschenes) in [#&#8203;1221](https://github.com/kubernetes-sigs/descheduler/pull/1221)
- k8s 1.28: update docs and go-version by [@&#8203;a7i](https://github.com/a7i) in [#&#8203;1224](https://github.com/kubernetes-sigs/descheduler/pull/1224)

#### New Contributors

- [@&#8203;ratnopamc](https://github.com/ratnopamc) made their first contribution in [#&#8203;1145](https://github.com/kubernetes-sigs/descheduler/pull/1145)
- [@&#8203;mikutas](https://github.com/mikutas) made their first contribution in [#&#8203;1159](https://github.com/kubernetes-sigs/descheduler/pull/1159)
- [@&#8203;nlamirault](https://github.com/nlamirault) made their first contribution in [#&#8203;1147](https://github.com/kubernetes-sigs/descheduler/pull/1147)
- [@&#8203;10hin](https://github.com/10hin) made their first contribution in [#&#8203;1033](https://github.com/kubernetes-sigs/descheduler/pull/1033)
- [@&#8203;jongwooo](https://github.com/jongwooo) made their first contribution in [#&#8203;1173](https://github.com/kubernetes-sigs/descheduler/pull/1173)
- [@&#8203;jordipiqueselles](https://github.com/jordipiqueselles) made their first contribution in [#&#8203;1210](https://github.com/kubernetes-sigs/descheduler/pull/1210)
- [@&#8203;Abirdcfly](https://github.com/Abirdcfly) made their first contribution in [#&#8203;1215](https://github.com/kubernetes-sigs/descheduler/pull/1215)
- [@&#8203;antoinedeschenes](https://github.com/antoinedeschenes) made their first contribution in [#&#8203;1221](https://github.com/kubernetes-sigs/descheduler/pull/1221)

**Full Changelog**: <https://github.com/kubernetes-sigs/descheduler/compare/v0.27.0...v0.28.0>

### [`v0.27.1`](https://github.com/kubernetes-sigs/descheduler/releases/tag/v0.27.1)

[Compare Source](https://github.com/kubernetes-sigs/descheduler/compare/v0.27.0...v0.27.1)

#### What's Changed

- fix plugin arg conversion when using multiple profiles with same plugin by [@&#8203;a7i](https://github.com/a7i) in [#&#8203;1158](https://github.com/kubernetes-sigs/descheduler/pull/1158)

**Full Changelog**: <https://github.com/kubernetes-sigs/descheduler/compare/v0.27.0...v0.27.1>

### [`v0.27.0`](https://github.com/kubernetes-sigs/descheduler/releases/tag/v0.27.0): Descheduler v0.27.0

[Compare Source](https://github.com/kubernetes-sigs/descheduler/compare/v0.26.1...v0.27.0)

#### What's Changed

- add v1alpha2 registry based conversion by [@&#8203;knelasevero](https://github.com/knelasevero) in [#&#8203;1006](https://github.com/kubernetes-sigs/descheduler/pull/1006)
- support client connection configuration to provide QPS and burst by [@&#8203;a7i](https://github.com/a7i) in [#&#8203;1034](https://github.com/kubernetes-sigs/descheduler/pull/1034)
- enable auto generation of the documents by [@&#8203;harshanarayana](https://github.com/harshanarayana) in [#&#8203;1048](https://github.com/kubernetes-sigs/descheduler/pull/1048)
- Fix v1alpha1 conversion to use universal decoder by [@&#8203;gustavomfc](https://github.com/gustavomfc) in [#&#8203;1051](https://github.com/kubernetes-sigs/descheduler/pull/1051)
- metrics: enable loop duration and strategy duration metrics by [@&#8203;harshanarayana](https://github.com/harshanarayana) in [#&#8203;1041](https://github.com/kubernetes-sigs/descheduler/pull/1041)
- v1alpha2 docs by [@&#8203;knelasevero](https://github.com/knelasevero) in [#&#8203;1049](https://github.com/kubernetes-sigs/descheduler/pull/1049)
- remove some logic useless by [@&#8203;lucming](https://github.com/lucming) in [#&#8203;1059](https://github.com/kubernetes-sigs/descheduler/pull/1059)
- check pod number by [@&#8203;xiaoanyunfei](https://github.com/xiaoanyunfei) in [#&#8203;1057](https://github.com/kubernetes-sigs/descheduler/pull/1057)
- Adding descheduler policy API Version option in helm templates by [@&#8203;gdasson](https://github.com/gdasson) in [#&#8203;1068](https://github.com/kubernetes-sigs/descheduler/pull/1068)
- Fix typo in nodeutilization types by [@&#8203;JannikSt](https://github.com/JannikSt) in [#&#8203;1072](https://github.com/kubernetes-sigs/descheduler/pull/1072)
- Add note to HighNodeUtilization readme for GKE users by [@&#8203;damemi](https://github.com/damemi) in [#&#8203;1075](https://github.com/kubernetes-sigs/descheduler/pull/1075)
- expose security context from helm chart by [@&#8203;JaneLiuL](https://github.com/JaneLiuL) in [#&#8203;1066](https://github.com/kubernetes-sigs/descheduler/pull/1066)
- remove e2e tests from helm github action by [@&#8203;a7i](https://github.com/a7i) in [#&#8203;937](https://github.com/kubernetes-sigs/descheduler/pull/937)
- Add k8s compatibility warnings to logs by [@&#8203;JaneLiuL](https://github.com/JaneLiuL) in [#&#8203;1063](https://github.com/kubernetes-sigs/descheduler/pull/1063)
- docs: typo by [@&#8203;dangen-effy](https://github.com/dangen-effy) in [#&#8203;1090](https://github.com/kubernetes-sigs/descheduler/pull/1090)
- Descheduling profile with PoC fake plugin by [@&#8203;ingvagabund](https://github.com/ingvagabund) in [#&#8203;1093](https://github.com/kubernetes-sigs/descheduler/pull/1093)
- bump golangci for go 1.20 by [@&#8203;a7i](https://github.com/a7i) in [#&#8203;1101](https://github.com/kubernetes-sigs/descheduler/pull/1101)
- dry-run cli flag to use uppercase by [@&#8203;yanggangtony](https://github.com/yanggangtony) in [#&#8203;1103](https://github.com/kubernetes-sigs/descheduler/pull/1103)
- fix default value assignment of EvictLocalStoragePods by [@&#8203;yanggangtony](https://github.com/yanggangtony) in [#&#8203;1104](https://github.com/kubernetes-sigs/descheduler/pull/1104)
- bump to k8s 1.27 rc0 by [@&#8203;a7i](https://github.com/a7i) in [#&#8203;1100](https://github.com/kubernetes-sigs/descheduler/pull/1100)
- fix go doc for method IsPodWithPVC by [@&#8203;yanggangtony](https://github.com/yanggangtony) in [#&#8203;1105](https://github.com/kubernetes-sigs/descheduler/pull/1105)
- Populate extension points automatically for deschedule, balance, filter and preEvictionFilter by [@&#8203;ingvagabund](https://github.com/ingvagabund) in [#&#8203;1097](https://github.com/kubernetes-sigs/descheduler/pull/1097)
- Delete "io/ioutil" package. by [@&#8203;yanggangtony](https://github.com/yanggangtony) in [#&#8203;1111](https://github.com/kubernetes-sigs/descheduler/pull/1111)
- Fix typo log message for cachedClient by [@&#8203;yanggangtony](https://github.com/yanggangtony) in [#&#8203;1112](https://github.com/kubernetes-sigs/descheduler/pull/1112)
- bump to k8s 1.27 by [@&#8203;a7i](https://github.com/a7i) in [#&#8203;1115](https://github.com/kubernetes-sigs/descheduler/pull/1115)
- update v0.26.1 references by [@&#8203;a7i](https://github.com/a7i) in [#&#8203;1109](https://github.com/kubernetes-sigs/descheduler/pull/1109)
- Drop Evict extension point by [@&#8203;ingvagabund](https://github.com/ingvagabund) in [#&#8203;1120](https://github.com/kubernetes-sigs/descheduler/pull/1120)
- Add json tags to internal api fields by [@&#8203;damemi](https://github.com/damemi) in [#&#8203;1122](https://github.com/kubernetes-sigs/descheduler/pull/1122)
- Add knelasevero to approvers by [@&#8203;knelasevero](https://github.com/knelasevero) in [#&#8203;1130](https://github.com/kubernetes-sigs/descheduler/pull/1130)
- Drop remaining mentions of evict extension point by [@&#8203;ingvagabund](https://github.com/ingvagabund) in [#&#8203;1127](https://github.com/kubernetes-sigs/descheduler/pull/1127)
- Add note on documentation versions with links by [@&#8203;damemi](https://github.com/damemi) in [#&#8203;1132](https://github.com/kubernetes-sigs/descheduler/pull/1132)
- Add missing quote to configmap by [@&#8203;damemi](https://github.com/damemi) in [#&#8203;1133](https://github.com/kubernetes-sigs/descheduler/pull/1133)
- fix policy example configmap by [@&#8203;AllenZMC](https://github.com/AllenZMC) in [#&#8203;1135](https://github.com/kubernetes-sigs/descheduler/pull/1135)
- Do some code cleans. by [@&#8203;yanggangtony](https://github.com/yanggangtony) in [#&#8203;1129](https://github.com/kubernetes-sigs/descheduler/pull/1129)

#### New Contributors

- [@&#8203;Bobonium](https://github.com/Bobonium) made their first contribution in [#&#8203;995](https://github.com/kubernetes-sigs/descheduler/pull/995)
- [@&#8203;harshanarayana](https://github.com/harshanarayana) made their first contribution in [#&#8203;1048](https://github.com/kubernetes-sigs/descheduler/pull/1048)
- [@&#8203;gustavomfc](https://github.com/gustavomfc) made their first contribution in [#&#8203;1051](https://github.com/kubernetes-sigs/descheduler/pull/1051)
- [@&#8203;lucming](https://github.com/lucming) made their first contribution in [#&#8203;1059](https://github.com/kubernetes-sigs/descheduler/pull/1059)
- [@&#8203;gdasson](https://github.com/gdasson) made their first contribution in [#&#8203;1068](https://github.com/kubernetes-sigs/descheduler/pull/1068)
- [@&#8203;JannikSt](https://github.com/JannikSt) made their first contribution in [#&#8203;1072](https://github.com/kubernetes-sigs/descheduler/pull/1072)
- [@&#8203;dangen-effy](https://github.com/dangen-effy) made their first contribution in [#&#8203;1090](https://github.com/kubernetes-sigs/descheduler/pull/1090)
- [@&#8203;yanggangtony](https://github.com/yanggangtony) made their first contribution in [#&#8203;1103](https://github.com/kubernetes-sigs/descheduler/pull/1103)
- [@&#8203;AllenZMC](https://github.com/AllenZMC) made their first contribution in [#&#8203;1135](https://github.com/kubernetes-sigs/descheduler/pull/1135)

**Full Changelog**: <https://github.com/kubernete…
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/L Denotes a PR that changes 100-499 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants