Repository navigation
feat: virtual nodes advertise ephemeral storage - #585
Merged
Merged
Conversation
A virtual node advertised CPU, memory, pods and accelerators but no ephemeral-storage, so the scheduler never placed a pod that requests some: "Insufficient ephemeral-storage". Sidecars injected by other controllers often do; Katib's metrics collector requests 500Mi, which made every Katib trial routed to a virtual node stay Pending. Resources.EphemeralStorage sets the amount, 1Ti by default: the remote side has its own disks, the node only must not refuse such pods. Co-Authored-By: Claude Opus 5.5 <[email protected]> Signed-off-by: Matteo Bunino <[email protected]>
✅ Deploy Preview for interlink-dev canceled.
|
Contributor
There was a problem hiding this comment.
🟡 Changes recommended
Invalid ephemeral-storage configuration bypasses validation and causes a panic during provider initialization.
1 open issue
What changed in this PR
This PR lets virtual nodes accept pods that request ephemeral storage, including workloads with injected sidecars such as Katib’s metrics collector.
Changes:
- Adds configurable
Resources.EphemeralStorage, defaulting to1Ti. - Advertises ephemeral storage in node capacity and allocatable resources.
- Tests the default and an explicit configured value.
| File | Description |
|---|---|
pkg/virtualkubelet/virtualkubelet.go |
Adds the default and advertises ephemeral storage. |
pkg/virtualkubelet/config.go |
Defines and documents the configuration field. |
pkg/virtualkubelet/config_test.go |
Tests default and explicit storage quantities. |
Review effort: Balanced
LoadConfig validated CPU, memory, pods and accelerators but not the new ephemeral storage value, so a value such as "50GB" passed and then made resource.MustParse panic while the provider started. It is now parsed in LoadConfig like the others; an empty value stays valid and keeps the default. Co-Authored-By: Claude Opus 5.5 <[email protected]> Signed-off-by: Matteo Bunino <[email protected]>
Member
|
vktestset/basic_test.py::test_manifest[virtual-kubelet-095-default-entrypoint.yaml] FAILED [ 92%] this test is failing @matbun |
Collaborator
Author
matbun
added a commit
to matbun/interLink
that referenced
this pull request
Oct 23, 2026
…terlink-hq#577 The branch carried early copies of interlink-hq#580, interlink-hq#583, interlink-hq#584 and interlink-hq#585 folded into one commit. It now holds main as of interlink-hq#571 (interlink-hq#580, interlink-hq#581, interlink-hq#582, interlink-hq#583, interlink-hq#585 as merged), interlink-hq#584 as reviewed and the rebased reverse tunnel, with the demo's own commits re-applied: TenantNamespace, RefuseForeignPods, kept init containers on confined nodes and their logs. Fixes found while porting: - interlink-hq#571 refreshed the pod IP through computeShadowResourceIdentity, which ignores TenantNamespace; on a confined node it looked for the shadow in <ns>-shadow and never moved the IP. It uses the provider's identity now. - The completed kept-init wait saves the init containers' logs before it takes the wait over, which cancels its context. - RefuseForeignPods handles the errors of SetWatchErrorHandler and AddEventHandler (errcheck). - The node ConfigMap patch is a struct, so interlink-hq#584 and interlink-hq#577 together do not trip goconst on "metadata". Co-Authored-By: Claude Opus 5.5 <[email protected]> Signed-off-by: Matteo Bunino <[email protected]>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Summary
A virtual node advertises CPU, memory, pods and accelerators but no
ephemeral-storage, so the scheduler never places a pod that requests some (Insufficient ephemeral-storage). Sidecars injected by other controllers often do: Katib's metrics collector requests 500Mi, so every Katib trial routed to a virtual node stayedPending.Resources.EphemeralStoragesets the amount the node advertises,1Tiby default: the remote side has its own disks, and the node only must not refuse such pods.TestGetResources_EphemeralStoragecovers the default and an explicit value. Checked on a cluster: a Katib trial that stayedPendingwas scheduled once the node advertisedephemeral-storage: 1Ti.Related issue :