Commit Graph

131706 Commits

Author SHA1 Message Date
John-Paul Sassine
b7de71f9ce feat(kubelet): Add ResourceHealthStatus for DRA pods
This change introduces the ability for the Kubelet to monitor and report
the health of devices allocated via Dynamic Resource Allocation (DRA).
This addresses a key part of KEP-4680 by providing visibility into
device failures, which helps users and controllers diagnose pod failures.

The implementation includes:
- A new `v1alpha1.NodeHealth` gRPC service with a `WatchResources`
  stream that DRA plugins can optionally implement.
- A health information cache within the Kubelet's DRA manager to track
  the last known health of each device and handle plugin disconnections.
- An asynchronous update mechanism that triggers a pod sync when a
  device's health changes.
- A new `allocatedResourcesStatus` field in `v1.ContainerStatus` to
  expose the device health information to users via the Pod API.

Update vendor

KEP-4680: Fix lint, boilerplate, and codegen issues

Add another e2e test, add TODO for KEP4680 & update test infra helpers

Add Feature Gate e2e test

Fixing presubmits

Fix var names, feature gating, and nits

Fix DRA Health gRPC API according to review feedback
2025-07-24 23:23:18 +00:00
Kubernetes Prow Robot
5be5fd0229 Merge pull request #133167 from sanposhiho/preemption-conor-case
fix: handle corner cases in the async preemption
2025-07-24 13:05:18 -07:00
Kubernetes Prow Robot
d9538c2c8c Merge pull request #133163 from pohly/revert-133110-DRAAdminAccess_upgradedowngradetest
Revert "DRAAdminAccess: add upgrade downgrade test"
2025-07-24 13:05:11 -07:00
Kubernetes Prow Robot
ebbebe8be6 Merge pull request #133157 from haircommander/cgroup-driver-cri-ga
KEP 4033: Add metric for out of support CRI and bump feature to GA
2025-07-24 13:05:04 -07:00
Kubernetes Prow Robot
1ad815cbe2 Merge pull request #133152 from bart0sh/PR185-Kubelet-DRA-close-connection-on-unregistration
kubelet: DRA: Close gRPC connection when removing DRA plugin
2025-07-24 13:04:56 -07:00
Kubernetes Prow Robot
dfc0998baa Merge pull request #132935 from benluddy/cbor-bump-custom-marshalers
KEP-4222: Adopt text and JSON transcoding support for CBOR.
2025-07-24 13:04:49 -07:00
Kubernetes Prow Robot
e4e13c1e80 Merge pull request #132818 from ffromani/e2e-node-cpumanager-cgroupv1-compat
e2e: node: cpumanager cgroup v1 compatibility
2025-07-24 13:04:41 -07:00
Kubernetes Prow Robot
1bc48d707c Merge pull request #132773 from saschagrunert/protoc-plugin
Convert `k8s.io/kubelet/pkg/apis/pluginregistration` from gogo to protoc
2025-07-24 13:04:34 -07:00
Kubernetes Prow Robot
1b3be1fde6 Merge pull request #132767 from mortent/PrioritizedListBeta
[KEP-4816] DRAPrioritizedList to Beta
2025-07-24 13:04:27 -07:00
Kubernetes Prow Robot
9eb462ef4a Merge pull request #131306 from Chulong-Li/volumemanager-contextual-logging
Migrate pkg/kubelet/volumemanager to contextual logging
2025-07-24 10:50:27 -07:00
Kubernetes Prow Robot
8d28109a2b Merge pull request #133174 from sanposhiho/log-level-preemption
fix: adjust the log level in the preemption
2025-07-24 09:38:57 -07:00
Kubernetes Prow Robot
3a99a64438 Merge pull request #133171 from p0lyn0mial/upstream-fake-metadata-client-opts-watch
client-go/metadata/fake: sets opts.Watch to true
2025-07-24 09:38:49 -07:00
Kubernetes Prow Robot
b3d00a026d Merge pull request #132756 from ylink-lfs/ci/redis_removal
ci: redis removal for e2e test dependency simplicity
2025-07-24 09:38:42 -07:00
Kubernetes Prow Robot
65d00aaa9d Merge pull request #132593 from koba1t/update/kubectl-in-kustomize_to_v5.7.0
Update kubectl kustomize to kustomize/v5.7.1
2025-07-24 09:38:34 -07:00
Kubernetes Prow Robot
a11bc701e8 Merge pull request #132457 from ania-borowiec/depends_on_cluster_move_podinfo
Moving Scheduler interfaces to staging: Move PodInfo and NodeInfo interfaces (together with related types) to staging repo, leaving internal implementation in kubernetes/kubernetes/pkg/scheduler
2025-07-24 09:38:27 -07:00
Peter Hunt
5dc2030c02 4033: GA KubeletCgroupDriverFromCRI feature gate
Signed-off-by: Peter Hunt <pehunt@redhat.com>
2025-07-24 12:37:14 -04:00
Peter Hunt
83a0d0c660 kubelet: add metric for version CRI implementation will lose support
Signed-off-by: Peter Hunt <pehunt@redhat.com>
2025-07-24 11:42:59 -04:00
Kubernetes Prow Robot
d21da29c9e Merge pull request #133170 from ffromani/e2e-node-podres-memmgr
e2e: podresources: disable memory manager integration
2025-07-24 07:56:48 -07:00
Kubernetes Prow Robot
24c896108d Merge pull request #133164 from everpeace/bump-dra-version-in-deviceattribute
Bump DRA API version to "v1" in "deviceattribute" package in "k8s.io/dynamic-resource-allocation" module
2025-07-24 07:56:41 -07:00
Kubernetes Prow Robot
b3e39344ff Merge pull request #132959 from ylink-lfs/test/e2e_named_port_con_case
test: add e2e case for mutating named port
2025-07-24 07:56:34 -07:00
Mayuka Channankaiah
ffe306d679 client-go, kubectl: Replace deprecated ErrWaitTimeout with recommended method (#132718)
* client-go: Replace depracted ErrWaitTimeout with recommended method

* Fix UT and Integration tests

* IT test
2025-07-24 07:56:27 -07:00
Dharmit Shah
cb33accc8f JSON & YAML output for kubectl api-resources (#132604)
* Add JSON & YAML output support for kubectl api-resources

Create a separate `PrintFlags` struct within the apiresources.go file
that handles printing only for `kubetl api-resources` because existing
output formats, i.e., wide and name, are already implemented
independently from HumanReadableFlags and NamePrintFlags.

Signed-off-by: Dharmit Shah <shahdharmit@gmail.com>

* Use separate printer type for all options

Signed-off-by: Dharmit Shah <shahdharmit@gmail.com>

* Unit tests for JSON & YAML outputs

Signed-off-by: Dharmit Shah <shahdharmit@gmail.com>

* Separate file for print types

Signed-off-by: Dharmit Shah <shahdharmit@gmail.com>

* Move JSON-YAML tests to separate function

Signed-off-by: Dharmit Shah <shahdharmit@gmail.com>

* Fix broken unit test

Signed-off-by: Dharmit Shah <shahdharmit@gmail.com>

* Unifying JSON & YAML unit test functions

Signed-off-by: Dharmit Shah <shahdharmit@gmail.com>

* Fix linter errors

Signed-off-by: Dharmit Shah <shahdharmit@gmail.com>

* PR feedback and linter again

Signed-off-by: Dharmit Shah <shahdharmit@gmail.com>

---------

Signed-off-by: Dharmit Shah <shahdharmit@gmail.com>
2025-07-24 06:46:28 -07:00
Kensei Nakada
8a2db4da42 fix: adjust the log level in the preemption 2025-07-24 22:45:39 +09:00
Kensei Nakada
4c9bf4719b fix: handle cornor cases in the async preepmtion 2025-07-24 22:44:39 +09:00
Chulong Li
bf98e45afb Migrate pkg/kubelet/volumemanager to contextual logging
Remove context.TODO and context.Background

Fix linter error in volume_manager_test

Fix QF1008: Could remove embedded field "ObjectMeta" from selector

Remove the extra code change

Remove the extra change

Update the NewTestContext
2025-07-24 21:20:12 +08:00
Ania Borowiec
aecd37e6fb Moving Scheduler interfaces to staging: Move PodInfo and NodeInfo interfaces (together with related types) to staging repo, leaving internal implementation in kubernetes/kubernetes/pkg/scheduler 2025-07-24 12:10:58 +00:00
Patrick Ohly
c954e13255 Revert "DRAAdminAccess: add upgrade downgrade test" 2025-07-24 14:04:08 +02:00
Kubernetes Prow Robot
f9fde2dfbd Merge pull request #132837 from JoelSpeed/fix-max-elements-x-int-or-string
Fix IntOrString cost estimation when schema has a MaxLength constraint
2025-07-24 04:50:28 -07:00
Lukasz Szaszkiewicz
12d6750666 client-go/metadata/fake: sets opts.Watch to true 2025-07-24 13:50:05 +02:00
Morten Torkildsen
b37fd0cab2 [KEP-4816] DRAPrioritizedList to Beta 2025-07-24 11:49:51 +00:00
Shingo Omura
6767d54bba Bump DRA API version to "v1" in "deviceattribute" package in "k8s.io/dynamic-resource-allocation" module 2025-07-24 19:46:51 +09:00
Kubernetes Prow Robot
89a01ec72a Merge pull request #133019 from pohly/dra-scheduler-plugin-owners
DRA scheduler plugin: add pohly as approver
2025-07-24 03:42:33 -07:00
Kubernetes Prow Robot
254a46943a Merge pull request #132706 from pohly/dra-api-v1
DRA API: graduation to GA
2025-07-24 03:42:26 -07:00
Francesco Romani
449763fb11 e2e: podresources: disable memory manager integration
As part of the PR 132028 we added more e2e test coverage to validate
the fix, and check as much as possible there are no regressions.

The issue and the fix become evident largely when inspecting
memory allocation with the Memory Manager static policy enabled.
Quoting the commit message of bc56d0e45a
```
The podresources API List implementation uses the internal data of the
resource managers as source of truth.
Looking at the implementation here:
https://github.com/kubernetes/kubernetes/blob/v1.34.0-alpha.0/pkg/kubelet/apis/podresources/server_v1.go#L60
we take care of syncing the device allocation data before querying the
device manager to return its pod->devices assignment.
This is needed because otherwise the device manager (and all the other
resource managers) would do the cleanup asynchronously, so the `List` call
will return incorrect data.

But we don't do this syncing neither for CPUs or for memory,
so when we report these we will get stale data as the issue #132020 demonstrates.

For CPU manager, we however have the reconcile loop which cleans the stale data periodically.
Turns out this timing interplay was actually the reason the existing issue #119423 seemed fixed
(see: #119423 (comment)).
But it's actually timing. If in the reproducer we set the `cpuManagerReconcilePeriod` to a time
very high (>= 5 minutes), then the issue still reproduces against current master branch
(https://github.com/kubernetes/kubernetes/blob/v1.34.0-alpha.0/test/e2e_node/podresources_test.go#L983).
```

The missing actor here is memory manager. Memory manager has no
reconcile loop (implicit fixing the stale data problem) no explicit
synchronization, so it is the unlucky one which reported stale data,
leading to the eventual understanding of the problem.

For this reason it was (and still is) important to exercise it during
the test.
Turns out the test is however wrong, likely because a hidden dependency
between the test expectations and the lane configuration (notably
machine specs), so we disable the memory manager activation for the time
being, until we figure out a safe way to enable it.

Note this significantly weakens the signal for this specific test.

Signed-off-by: Francesco Romani <fromani@redhat.com>
2025-07-24 12:35:45 +02:00
Kubernetes Prow Robot
3ba0c944b1 Merge pull request #133119 from bart0sh/PR184-kubelet-DRA-fix-setupFakeGRPCServer
kubelet: DRA: Handle grpc.ErrServerStopped in plugin tests
2025-07-24 02:10:27 -07:00
Patrick Ohly
b768c1d1d5 DRA API: bump storage version to v1beta2
This avoids the overhead for the more complex conversion to v1beta1 and might
make it a bit more realistic to get rid of the v1beta1 eventually.

The expected GVK must be set explicitly because when emulating 1.33,
v1beta1 is the default although the fixed storage version is v1beta2.
2025-07-24 08:33:56 +02:00
Patrick Ohly
24de875ceb DRA: graduate DynamicResourceAllocation feature to GA
It hasn't been on-by-default before, therefore it does not get locked to the
new default on yet. This has some impact on the scheduler configuration
because the plugin is now enabled by default.

Because the feature is now GA, it doesn't need to be a label on E2E tests,
which wouldn't be possible anyway once it gets removed entirely.
2025-07-24 08:33:56 +02:00
Patrick Ohly
d8df1dc1b8 DRA RBAC: fix kube-scheduler bootstrap policy
The pods/finalizer permission can be restricted to just updates because that is
all that matters.

The DeviceTaints rules were under the wrong feature gate check (copy-and-paste)
and must remain disabled when DRA itself becomes enabled.
2025-07-24 08:33:56 +02:00
Patrick Ohly
21d929f599 integration: use --runtime-config-emulation-forward-compatible
Some tests do version emulation and need the DRA feature. In that combination
the --runtime-config-emulation-forward-compatible option is needed to allow
enabling the V1 API although it's only available in 1.34.
2025-07-24 08:33:56 +02:00
Patrick Ohly
5c4f81743c DRA: use v1 API
As before when adding v1beta2, DRA drivers built using the
k8s.io/dynamic-resource-allocation helper packages remain compatible with all
Kubernetes release >= 1.32. The helper code picks whatever API version is
enabled from v1beta1/v1beta2/v1.

However, the control plane now depends on v1, so a cluster configuration where
only v1beta1 or v1beta2 are enabled without the v1 won't work.
2025-07-24 08:33:45 +02:00
Patrick Ohly
cff91579e8 DRA API: v1 registration + tests 2025-07-24 08:30:25 +02:00
Patrick Ohly
4e592f6c14 DRA API: s/v1beta2/v1/ and generated files 2025-07-24 08:30:24 +02:00
Patrick Ohly
1f2f433f76 DRA API: verbatim copy v1beta2 -> v1 2025-07-24 08:30:24 +02:00
Ed Bartosh
837b7395d2 kubelet: DRA: Close gRPC connection when removing DRA plugin
Call p.conn.Close() in DRAPluginManager.remove to ensure the gRPC
connection is properly closed when a plugin is unregistered. This
prevents reconnecting attempts, resource leaks and ensures clean
shutdown of plugin connections during plugin removal.
2025-07-24 09:14:09 +03:00
Kubernetes Prow Robot
ff657e166b Merge pull request #133159 from ylink-lfs/chore/ptrto_migration
chore: ptrTo util removal with ptr.To
2025-07-23 22:52:39 -07:00
Kubernetes Prow Robot
df696c3189 Merge pull request #132657 from danwinship/drop-bfr
Drop BoundedFrequencyRunner from pkg/util/async
2025-07-23 22:52:32 -07:00
Kubernetes Prow Robot
01c5535387 Merge pull request #133085 from ritazh/DRAAdminAccess_beta
DRAAdminAccess: move to beta
2025-07-23 21:44:34 -07:00
Simran Kaur
c7d6c09683 List available endpoints for kube-apiserver (#132581)
Fix tests and formatting

Use ListedPaths for finding useful endpoints

Fix maps import

Update dependencies

Fix lint

Add option to pass listedpaths

Remove apiserver component check

Install statuz in genericapiserver

Register zpagesfeatures

Fix import order

Avoid adding non-debugging endpoints

Fix tests

Fix tests

fix tests

Sort paths

Sort in-place

Copy paths before sorting

Fix string initialization

Move sorting to later stage

Fix imports
2025-07-23 21:44:27 -07:00
Kubernetes Prow Robot
84df53a2a2 Merge pull request #133150 from rzlink/windsr
Remove Unit Test for WinDSR Feature Gate
2025-07-23 19:57:02 -07:00
Kubernetes Prow Robot
051dd70772 Merge pull request #133149 from ritazh/draadminaccess-test
draadminaccess test make it serial
2025-07-23 19:56:55 -07:00