Skip to content

feat(core): add descheduler component to automatically rebalance virtual machines (VMs) across cluster nodes#962

Merged
fl64 merged 1 commit into
mainfrom
feat/descheduler
Jun 19, 2025
Merged

feat(core): add descheduler component to automatically rebalance virtual machines (VMs) across cluster nodes#962
fl64 merged 1 commit into
mainfrom
feat/descheduler

Conversation

@yaroslavborbat
Copy link
Copy Markdown
Member

@yaroslavborbat yaroslavborbat commented Apr 22, 2025

Description

This PR introduces a descheduler component to automatically rebalance virtual machines (VMs) across cluster nodes. Functionality becomes active only when descheduler module is enabled

  • Load-based rebalancing:

    • Triggers when node CPU utilization exceeds 80%
    • Uses LowNodeUtilization policy for balanced resource distribution
    • Ensures even workload distribution across cluster nodes
  • Affinity/anti-affinity compliance:

    • Handles cases where nodes no longer meet requiredDuringSchedulingIgnoredDuringExecution rules
    • Automatically migrates VMs to compliant nodes when placement constraints are violated

Why do we need it, and what problem does it solve?

Without active rebalancing, uneven VM distribution can lead to node overutilization (e.g., CPU >80%), causing performance degradation, latency spikes, and potential node failures.

Changes in node availability, labels, or taints may invalidate existing VM placements that rely on requiredDuringSchedulingIgnoredDuringExecution rules.

What is the expected result?

Checklist

  • The code is covered by unit tests.
  • e2e tests passed.
  • Documentation updated according to the changes.
  • Changes were tested in the Kubernetes cluster manually.

Changelog entries

section: core
type: feature
summary: Add automatic rebalancing of virtual machines to optimize load distribution among cluster nodes based on CPU usage threshold (80%) and affinity/anti-affinity rules. This functionality is activated only when the `descheduler` module is enabled.

@yaroslavborbat yaroslavborbat added this to the v0.18.0 milestone Apr 22, 2025
@yaroslavborbat yaroslavborbat force-pushed the feat/descheduler branch 3 times, most recently from c39559e to 1b3dabe Compare April 23, 2025 18:17
@universal-itengineer universal-itengineer modified the milestones: v0.18.0, v0.19.0 May 12, 2025
@Isteb4k Isteb4k modified the milestones: v0.19.0, v0.20.0 May 29, 2025
@yaroslavborbat yaroslavborbat force-pushed the feat/descheduler branch 4 times, most recently from 14cc33f to 37cf629 Compare June 9, 2025 08:19
@yaroslavborbat yaroslavborbat changed the title Feat/descheduler feat(module): add descheduler Jun 9, 2025
@yaroslavborbat yaroslavborbat force-pushed the feat/descheduler branch 4 times, most recently from 2a2fa48 to 2d6747c Compare June 10, 2025 13:57
@yaroslavborbat yaroslavborbat marked this pull request as ready for review June 10, 2025 14:21
Comment thread tests/e2e/object/const.go Outdated
@fl64
Copy link
Copy Markdown
Member

fl64 commented Jun 17, 2025

Please add information to the PR about how this will benefit the user.

@nevermarine nevermarine modified the milestones: v0.20.0, v0.21.0 Jun 17, 2025
@yaroslavborbat yaroslavborbat force-pushed the feat/descheduler branch 2 times, most recently from c55c32f to 7354319 Compare June 18, 2025 17:59
Signed-off-by: Yaroslav Borbat <yaroslav.borbat@flant.com>
@yaroslavborbat yaroslavborbat changed the title feat(module): add descheduler feat(core): add descheduler Jun 19, 2025
@yaroslavborbat yaroslavborbat changed the title feat(core): add descheduler feat(core): introduces a descheduler component to automatically rebalance virtual machines (VMs) across cluster nodes Jun 19, 2025
@fl64 fl64 merged commit c0985d8 into main Jun 19, 2025
34 of 36 checks passed
@fl64 fl64 deleted the feat/descheduler branch June 19, 2025 08:39
@fl64 fl64 changed the title feat(core): introduces a descheduler component to automatically rebalance virtual machines (VMs) across cluster nodes feat(core): add a descheduler component to automatically rebalance virtual machines (VMs) across cluster nodes Jun 19, 2025
@fl64 fl64 changed the title feat(core): add a descheduler component to automatically rebalance virtual machines (VMs) across cluster nodes feat(core): add descheduler component to automatically rebalance virtual machines (VMs) across cluster nodes Jun 19, 2025
yachmenevas pushed a commit that referenced this pull request Oct 15, 2025
…ual machines (VMs) across cluster nodes (#962)

Signed-off-by: Yaroslav Borbat <yaroslav.borbat@flant.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants