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

removepodsviolatingtopologyspreadconstraint: implement explicit constraints #1148

Merged
merged 2 commits into from
Jun 16, 2023

Conversation

a7i
Copy link
Contributor

@a7i a7i commented May 15, 2023

closes #1123 and #1138

  1. Currently we cannot have a "just ScheduleAnyway" definition. This PR allows users to configure them separately. In particular, my use-case is not do a nodeFit when balancing domains for DoNotSchedule in order to force a scale-up with Cluster Autoscaler. However, for ScheduleAnyway, I want nodeFit, because otherwise Scheduler will put it back on the same node it was on.
  2. I added a new arg called nodeFit. I admit, it's a bit confusing given the Default Evictor's nodeFit. I mainly wanted to preserve existing behavior, hence why it's true by default.

@k8s-ci-robot k8s-ci-robot added cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. size/L Denotes a PR that changes 100-499 lines, ignoring generated files. labels May 15, 2023
@knelasevero
Copy link
Contributor

Maybe we should call this internal nodeFit something different? Like we did for EvictableNamespaces in the nodeutilization stratedies?

@a7i
Copy link
Contributor Author

a7i commented May 15, 2023

Maybe we should call this internal nodeFit something different? Like we did for EvictableNamespaces in the nodeutilization stratedies?

@knelasevero Yes, I like that idea. Would topologyBalanceNodeFit be ok?

@a7i a7i force-pushed the tsc-constraints branch 4 times, most recently from 07f3657 to 189f3ef Compare May 16, 2023 01:42
@knelasevero
Copy link
Contributor

Maybe we should call this internal nodeFit something different? Like we did for EvictableNamespaces in the nodeutilization stratedies?

@knelasevero Yes, I like that idea. Would topologyBalanceNodeFit be ok?

Sounds good to me. @damemi @ingvagabund , WDYT?

@ingvagabund
Copy link
Contributor

ingvagabund commented May 16, 2023

Sounds good to me. @damemi @ingvagabund , WDYT?

Making it configurable is reasonable. The semantics of nodeFit before eviction and right before eviction is not clear here. The original intent of the nodeFit here was to evict pods that can be scheduled to a different node to avoid evicting a pod that lands back on the same node. Thus, helping to improve the skew. The case where a new node can be provisioned as a reaction to eviction was not considered during the implementation. For that, we should not always assume a node pool is static.

Would topologyBalanceNodeFit be ok?

Both RemovePodsViolatingTopologySpreadConstraint and DefaultEvictor invoke the same PodFitsAnyOtherNode function. Nevertheless, that can change in the future as one can enable a different implementation of PreEvictionFilter extension point once the descheduling framework is offcially out. The conditions for when a pod is not suitable for evicting wrt. TopologySpreadConstraint can diverge from what it means for the default evictor to fail to fit another node. E.g. a pod can be evicted to re-balance when an autoscaler is enabled (RemovePodsViolatingTopologySpreadConstraint). Vs. a pod can not be evicted since there's a company policy to reduce eviction between 10pm and 6am (custom implementation of the DefaultEvictor plugin).

We can probably completely omit the nodeFit keyword part. On the other hand when we expose the possibility to ignore nodeFit conditions, do we know which specific condition is actually causing limitation? Based on #1138 there's no existing node because:

  • pods does not match a node selector?
  • taints are not tolerated?
  • insufficient resources?
  • no schedulable node?

Q is whether we wanna expose this level of detail. Or create groups of conditions that can be enabled/disabled as a whole unit. Providing an argument to completely disable NodeFit seems reasonable. On the other hand what if we get a request to disable/enable a specific condition mentioned in the list? One might want to test for pods does not match a node selector and taints are not tolerated and ignore insufficient resources so the autoscaler can actually kick in only when insufficient resources scenario is on instead of evicting a pod and poke autoscaler just because a taint is not tolerated (for a good reason when it's preferable to pick a different pod for eviction which e.g. still can fit into one of the existing nodes).

@ingvagabund
Copy link
Contributor

ingvagabund commented May 16, 2023

@a7i also better to split this PR into two. One commit for each change (explicit constraints, new nodeFit alias argument). E.g. in case we need to revert.

@a7i
Copy link
Contributor Author

a7i commented May 16, 2023

@ingvagabund thanks for your review.

The semantics of nodeFit before eviction and right before eviction is not clear here. The original intent of the nodeFit here was to evict pods that can be scheduled to a different node to avoid evicting a pod that lands back on the same node.

The intention of nodeFit when balancing domains is to calculate the spread/skew given the "fit" constraints. This is particularly helpful for a best-effort constraint such as "ScheduleAnyway".

Both RemovePodsViolatingTopologySpreadConstraint and DefaultEvictor invoke the same PodFitsAnyOtherNode function

RemovePodsViolatingTopologySpreadConstraint only considers nodesBelowAverage for NodeFit because when balancing domains, it should only consider nodes that can help the skew. Default Evictor considers all available nodes.

Q is whether we wanna expose this level of detail.

I had created an Issue for NodeFit Specs to be able to provide that level of detail. We can move the discussion there: #1149

also better to split this PR into two.

Generally, I would agree. However, for my particular use-case, it only helps if both args are available. If it's rolled back, then might as well roll it all back because just one wouldn't satisfy my use cases.

As described in the PR, my use-cases are:

  • I need to split ScheduleAnyway and DoNotSchedule as we require different behavior for balancing them out.

  • I need a "Just ScheduleAnyway" that takes nodeFit into account. For this, if nodeFit is not taken into account when balancing domains, then Scheduler will just put it back on the same node.

  • I need a just "DoNotSchedule". While this is already possible, nodeFit when balancing domains is not configurable. Hence why I need the nodeFit arg for when balancing domains. i.e. do not perform a nodeFit to force Cluster-Autoscaler to do a scale-up.

@knelasevero
Copy link
Contributor

I think we can have a single PR, however, with 2 commits. Not saying we would revert a single commit, and leave it at that. We might revert a single one and still pursue this use case in a different approach taking advantage of the first commit. Or revert both. Still makes sense to separate it.

Would #1149 discussion make this PR obsolete? Maybe we should have a proper design proposal for all our nodeFit "problems"? There are a few issues on that topic

@a7i a7i force-pushed the tsc-constraints branch 2 times, most recently from a283e1f to e08956c Compare June 3, 2023 23:03
@a7i
Copy link
Contributor Author

a7i commented Jun 3, 2023

@ingvagabund @knelasevero Thank you for your feedback ❤️

  • Split to two commits
  • Changed nodeFit to topologyBalanceNodeFit
  • Removed includeSoftConstraints from v1alpha2 api

Look forward to your feedback

@@ -31,4 +31,5 @@ type RemovePodsViolatingTopologySpreadConstraintArgs struct {
Namespaces *api.Namespaces `json:"namespaces"`
LabelSelector *metav1.LabelSelector `json:"labelSelector"`
IncludeSoftConstraints bool `json:"includeSoftConstraints"`
TopologyBalanceNodeFit *bool `json:"TopologyBalanceNodeFit"`
Copy link
Contributor

@ingvagabund ingvagabund Jun 5, 2023

Choose a reason for hiding this comment

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

How about?

RemovePodsViolatingTopologySpreadConstraintArgs:
- TopologyBalanceNodeFit: [] // empty field -> fall back to defaults which is a subject to change
- TopologyBalanceNodeFit: [""] // empty string -> disable the node fit checks
- TopologyBalanceNodeFit: ["Cond1", ..., "CondN"] // arbitrary list of enabled conditions (implemented later)
type NodeFitConditions string

var (
	NoCondition NodeFitConditions = ""
)

type RemovePodsViolatingTopologySpreadConstraintArgs struct {
	...
	TopologyBalanceNodeFit []NodeFitConditions
}

Alternatively, "" can be replaced with "NoCheck" or similar string which if specified will be the only valid item in the list.

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 was under the impression that we will handle NodeFit Spec in a subsequent design/PR. But given that, perhaps we should design/implement that first.

Copy link
Contributor

Choose a reason for hiding this comment

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

This is more like a middle step so once the NodeFit is refined the API of TopologyBalanceNodeFit does not need to change. It will "just" get extended with additional enums.

@ingvagabund
Copy link
Contributor

As discussed on the community meeting, let's keep the new TopologyBalanceNodeFit argument for v1alpha2 and deprecate it in v1alpha3.
/approve
/lgtm

@k8s-ci-robot
Copy link
Contributor

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: ingvagabund

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@k8s-ci-robot k8s-ci-robot 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 Jun 6, 2023
@a7i
Copy link
Contributor Author

a7i commented Jun 6, 2023

/hold

@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 Jun 6, 2023
@MarcPow
Copy link
Contributor

MarcPow commented Jun 15, 2023

@a7i @damemi - Why is this change being held? My teams also have the auto-scaler scenario in #1138. I'd dearly love to get a fix in place for this.

@a7i
Copy link
Contributor Author

a7i commented Jun 15, 2023

@a7i @damemi - Why is this change being held? My teams also have the auto-scaler scenario in #1138. I'd dearly love to get a fix in place for this.

My apologies, let me address the casing issue real quick:

	TopologyBalanceNodeFit *bool                 `json:"TopologyBalanceNodeFit"`

to:

	TopologyBalanceNodeFit *bool                 `json:"topologyBalanceNodeFit"`

@k8s-ci-robot k8s-ci-robot removed the lgtm "Looks good to me", indicates that a PR is ready to be merged. label Jun 15, 2023
@a7i
Copy link
Contributor Author

a7i commented Jun 15, 2023

fyi, we just tested this in our cluster, and this is the config that worked for us:

  profiles:
    - name: fit # nodefit enabled plugins
      pluginConfig:
        - name: DefaultEvictor
          args:
            nodeFit: true
        - name: RemovePodsViolatingTopologySpreadConstraint
          args:
            constraints:
            - ScheduleAnyway
      plugins:
        balance:
          enabled:
            - RemovePodsViolatingTopologySpreadConstraint

    - name: nofit # plugins without nodefit (e.g. force scale-up with cluster-autoscaler)
      pluginConfig:
        - name: "DefaultEvictor"
          args:
            nodeFit: false
        - name: RemovePodsViolatingTopologySpreadConstraint
          args:
            constraints:
            - DoNotSchedule
            topologyBalanceNodeFit: false
      plugins:
        balance:
          enabled:
            - RemovePodsViolatingTopologySpreadConstraint

@a7i a7i requested a review from ingvagabund June 15, 2023 22:21
@ingvagabund
Copy link
Contributor

@a7i file conflict :(

@k8s-ci-robot k8s-ci-robot added the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Jun 16, 2023
@k8s-ci-robot k8s-ci-robot removed the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Jun 16, 2023
@ingvagabund
Copy link
Contributor

/lgtm

@k8s-ci-robot k8s-ci-robot added the lgtm "Looks good to me", indicates that a PR is ready to be merged. label Jun 16, 2023
@a7i
Copy link
Contributor Author

a7i commented Jun 16, 2023

/remove-hold

@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 Jun 16, 2023
@k8s-ci-robot k8s-ci-robot merged commit eb23721 into kubernetes-sigs:master Jun 16, 2023
@a7i a7i deleted the tsc-constraints branch June 19, 2023 22:11
szinn referenced this pull request in szinn/k8s-homelab Aug 25, 2023
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [descheduler](https://togithub.com/kubernetes-sigs/descheduler) |
minor | `0.27.1` -> `0.28.0` |

---

### Release Notes

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

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

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

#### New Contributors

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

**Full Changelog**:
kubernetes-sigs/descheduler@v0.27.0...v0.28.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://togithub.com/renovatebot/renovate).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNi41Ny44IiwidXBkYXRlZEluVmVyIjoiMzYuNTcuOCIsInRhcmdldEJyYW5jaCI6Im1haW4ifQ==-->

Co-authored-by: repo-jeeves <106431701+repo-jeeves[bot]@users.noreply.github.com>
spirkaa added a commit to spirkaa/infra that referenced this pull request Aug 27, 2023
This PR contains the following updates:

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

---

### Release Notes

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

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

[Compare Source](kubernetes-sigs/descheduler@v0.27.1...v0.28.0)

#### What's Changed

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

#### New Contributors

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

**Full Changelog**: kubernetes-sigs/descheduler@v0.27.0...v0.28.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://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNi41Mi4yIiwidXBkYXRlZEluVmVyIjoiMzYuNTIuMiIsInRhcmdldEJyYW5jaCI6Im1haW4ifQ==-->

Reviewed-on: https://git.devmem.ru/projects/infra/pulls/949
Co-authored-by: Renovate Bot <renovate@devmem.ru>
Co-committed-by: Renovate Bot <renovate@devmem.ru>
renovate bot referenced this pull request in teutonet/teutonet-helm-charts Sep 11, 2023
…0.28.x (#538)

[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [descheduler](https://togithub.com/kubernetes-sigs/descheduler) |
minor | `0.27.x` -> `0.28.x` |

---

### Release Notes

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

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

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

#### New Contributors

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

**Full Changelog**:
kubernetes-sigs/descheduler@v0.27.0...v0.28.0

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Enabled.

♻ **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 [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/teutonet/teutonet-helm-charts).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNi42OC4xIiwidXBkYXRlZEluVmVyIjoiMzYuNjguMSIsInRhcmdldEJyYW5jaCI6Im1haW4ifQ==-->

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Chris Werner Rau <cwr@teuto.net>
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.

RemovePodsViolatingTopologySpreadConstraints different setting for constraints
5 participants