Skip to content

fix(vm): propagate PV nodeAffinity to VM pod for correct scheduling#2127

Merged
loktev-d merged 85 commits into
mainfrom
fix/vm/pv-node-affinity-scheduling
May 15, 2026
Merged

fix(vm): propagate PV nodeAffinity to VM pod for correct scheduling#2127
loktev-d merged 85 commits into
mainfrom
fix/vm/pv-node-affinity-scheduling

Conversation

@loktev-d
Copy link
Copy Markdown
Contributor

@loktev-d loktev-d commented Mar 23, 2026

Description

Propagate PV nodeAffinity to the VM pod so the Kubernetes scheduler respects disk topology constraints when placing VMs.

  • PVNodeAffinityTerms in VM state: collects nodeAffinity from PVs backing all block devices (spec refs + attached VMBDAs). Computes the intersection across PVs using cross-product of NodeSelectorTerms.
  • ApplyPVNodeAffinity in KVVM builder: merges PV node selector terms into the KVVM pod template affinity, preserving existing VM/class affinity via cross-product.
  • nodeaffinity package CrossProductTerms/IntersectTerms logic.

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

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: vm
type: fix
summary: propagate PV nodeAffinity to VM pod for correct scheduling

loktev-d and others added 30 commits February 27, 2026 14:14
Signed-off-by: Daniil Loktev <lokt.daniil@gmail.com>
Signed-off-by: Daniil Loktev <lokt.daniil@gmail.com>
Signed-off-by: Daniil Loktev <lokt.daniil@gmail.com>
Signed-off-by: Daniil Loktev <lokt.daniil@gmail.com>
Signed-off-by: Daniil Loktev <lokt.daniil@gmail.com>
Signed-off-by: Daniil Loktev <lokt.daniil@gmail.com>
Signed-off-by: Daniil Loktev <lokt.daniil@gmail.com>
Signed-off-by: Daniil Loktev <lokt.daniil@gmail.com>
Signed-off-by: Daniil Loktev <lokt.daniil@gmail.com>
Signed-off-by: Daniil Loktev <lokt.daniil@gmail.com>
Signed-off-by: Daniil Loktev <lokt.daniil@gmail.com>
Signed-off-by: Daniil Loktev <lokt.daniil@gmail.com>
Signed-off-by: Daniil Loktev <lokt.daniil@gmail.com>
Signed-off-by: Daniil Loktev <lokt.daniil@gmail.com>
Signed-off-by: Daniil Loktev <lokt.daniil@gmail.com>
Signed-off-by: Daniil Loktev <lokt.daniil@gmail.com>
Signed-off-by: Daniil Loktev <lokt.daniil@gmail.com>
Signed-off-by: Daniil Loktev <lokt.daniil@gmail.com>
Signed-off-by: Daniil Loktev <lokt.daniil@gmail.com>
Signed-off-by: Vladislav Panfilov <vladislav.panfilov@flant.com>
Signed-off-by: Daniil Loktev <lokt.daniil@gmail.com>
Signed-off-by: Vladislav Panfilov <vladislav.panfilov@flant.com>
Signed-off-by: Vladislav Panfilov <vladislav.panfilov@flant.com>
Signed-off-by: Vladislav Panfilov <vladislav.panfilov@flant.com>
Signed-off-by: Vladislav Panfilov <vladislav.panfilov@flant.com>
Signed-off-by: Daniil Loktev <lokt.daniil@gmail.com>
danilrwx
danilrwx previously approved these changes Apr 20, 2026
@nevermarine nevermarine modified the milestones: v1.8.0, v1.9.0 Apr 23, 2026
loktev-d and others added 15 commits April 23, 2026 21:57
Signed-off-by: Daniil Loktev <lokt.daniil@gmail.com>
Signed-off-by: Daniil Loktev <lokt.daniil@gmail.com>
Signed-off-by: Daniil Loktev <70405899+loktev-d@users.noreply.github.com>
Signed-off-by: Daniil Loktev <lokt.daniil@gmail.com>
Signed-off-by: Daniil Loktev <lokt.daniil@gmail.com>
Signed-off-by: Daniil Loktev <lokt.daniil@gmail.com>
Signed-off-by: Daniil Loktev <lokt.daniil@gmail.com>
Signed-off-by: Daniil Loktev <70405899+loktev-d@users.noreply.github.com>
Signed-off-by: Daniil Loktev <lokt.daniil@gmail.com>
Signed-off-by: Daniil Loktev <lokt.daniil@gmail.com>
Signed-off-by: Daniil Loktev <lokt.daniil@gmail.com>
Base automatically changed from feat/vm/hotplug-block-devices-via-spec to main May 15, 2026 08:32
@loktev-d loktev-d dismissed danilrwx’s stale review May 15, 2026 08:32

The base branch was changed.

Signed-off-by: Daniil Loktev <70405899+loktev-d@users.noreply.github.com>
@loktev-d loktev-d merged commit d25be08 into main May 15, 2026
27 of 28 checks passed
@loktev-d loktev-d deleted the fix/vm/pv-node-affinity-scheduling branch May 15, 2026 11:54
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.

4 participants