Commit Graph

1533 Commits

Author SHA1 Message Date
Patrick Ohly
8a908e0c0b remove import doc comments
The "// import <path>" comment has been superseded by Go modules.
We don't have to remove them, but doing so has some advantages:

- They are used inconsistently, which is confusing.
- We can then also remove the (currently broken) hack/update-vanity-imports.sh.
- Last but not least, it would be a first step towards avoiding the k8s.io domain.

This commit was generated with
   sed -i -e 's;^package \(.*\) // import.*;package \1;' $(git grep -l '^package.*// import' | grep -v 'vendor/')

Everything was included, except for
   package labels // import k8s.io/kubernetes/pkg/util/labels
because that package is marked as "read-only".
2024-12-02 16:59:34 +01:00
Tim Allclair
8342d39956 Equate CPU limits below the minimum effective limit (10m) 2024-11-12 17:23:17 -08:00
Tim Allclair
9df464fee7 Generate ContainerManager mocks 2024-11-11 12:04:36 -08:00
Kubernetes Prow Robot
c25f5eefe4 Merge pull request #128407 from ndixita/pod-level-resources
[PodLevelResources] Pod Level Resources Feature Alpha
2024-11-08 07:10:50 +00:00
ndixita
5ea57fb3b4 cgroup configuration changes:
1. Pod cgrooup configured to use resources from pod spec if feature is enabled and resources are set at pod-level
2. Container cgroup limits defaulted to pod-level limits is container limits are not set
2024-11-08 03:00:54 +00:00
Kubernetes Prow Robot
210f129bb0 Merge pull request #128676 from vivzbansal/sidecar-3
Refactor: Move IsRestartableInitContainer to common utility package
2024-11-08 02:21:50 +00:00
Mark Rossetti
3c9380c449 Memory manager support for Windows nodes (#128560) 2024-11-07 23:32:49 +00:00
vivzbansal
763e810fb5 refactor code to add sidecar container support in IPPR 2024-11-07 21:20:48 +00:00
Kubernetes Prow Robot
847be85000 Merge pull request #128657 from ffromani/unshare-containermap-among-managers
node: cm: don't share containerMap instances between managers
2024-11-07 19:45:20 +00:00
Francesco Romani
2a99bfc3d1 node: cm: don't share containerMap instances between managers
Since the GA graduation of memory manager in https://github.com/kubernetes/kubernetes/pull/128517
we are sharing the initial container map across managers.

The intention of this sharing was not to actually share a data
structure, but
1. save the relatively expensive relisting from runtime
2. have all the managers share a consistent view - even though the
   chance for misalignement tend to be tiny.

The unwanted side effect though is now all the managers race
to modify a data shared, not thread safe data structure.

The fix is to clone (deepcopy) the computed map when passing it
to each manager. This restores the old semantic of the code.

This issue brings the topic of possibly managers go out of sync
since each of them maintain a private view of the world.
This risk is real, yet this is how the code worked for
most of the lifetime, so the plan is to look at this and evaluate
possible improvements later on.

Signed-off-by: Francesco Romani <fromani@redhat.com>
2024-11-07 16:02:55 +01:00
Kubernetes Prow Robot
33c64b380a Merge pull request #128646 from pohly/dra-kubelet-separate-beta-api
DRA kubelet: separate beta and alpha gRPC APIs
2024-11-07 14:57:45 +00:00
Sergey Kanzhelev
631c5f9c82 call cancel on plugin that is replaced by another plugin with the same name 2024-11-07 07:36:25 +00:00
Patrick Ohly
9261a182bb DRA kubelet: separate beta and alpha gRPC APIs
Reusing types from the alpha in the beta made it possible to provide and use
both versions without conversion. The downside was that removal of the alpha
would have been harder, if not impossible. DRA drivers could continue to
use the alpha types and provided the beta interface automatically.

Now the two versions are completely separate gRPC APIs, although in practice
there are no differences besides the name. Support for the alpha API in kubelet
is provided via automatically generated conversion and manually written
interface wrappers.

Those are provided as part of the v1alpha4 package. The advantage of having all
of that in a central place is that it'll be easier to remove when no longer
needed.
2024-11-07 07:42:40 +01:00
Kubernetes Prow Robot
e273349f3a Merge pull request #127511 from pohly/dra-1.32-api
DRA 1.32 API: promotion to beta
2024-11-06 13:13:29 +00:00
Patrick Ohly
a1b8e9d3a7 DRA kubelet: increase plugin test coverage
Deleting slices was not covered to begin with and the recent registration
changes also could have been covered better. Now coverage is at 91%.
2024-11-06 13:03:20 +01:00
Patrick Ohly
2c23fe1b82 DRA kubelet: list supported gRPC services during registration
Listing supported gRPC services (e.g. drav1alpha3.Node, drav1beta1.DRAPlugin)
during registration enables the kubelet to determine in advance which methods
it can call.

Versioning by Kubernetes release makes less sense because it doesn't say
anything about which gRPC service is supported. New ones might get added and
obsolete ones removed. Some services might be optional.

In the past, this versioning support wasn't really used. At least one version
had to be provided and kubelet tried to use the plugin with the highest
version. This version comparison gets dropped. In the unlikely situation
that different plugins register under the same name, the most recent one is
used.

Because advertising gRPC services is a new convention, plugins only reporting
some version are treated as providing the old alpha gRPC service.
2024-11-06 13:03:20 +01:00
Patrick Ohly
437be1e651 DRA kubelet: rename gRPC server from Node to DRAPlugin in v1beta1
The version bump is an opportunity to pick a name that is a bit more
descriptive. It matches the "DevicePlugin" service name.
2024-11-06 13:03:20 +01:00
Patrick Ohly
33ea278c51 DRA: use v1beta1 API
No code is left which depends on the v1alpha3, except of course the code
implementing that version.
2024-11-06 13:03:19 +01:00
Kubernetes Prow Robot
50d0f920c0 Merge pull request #126750 from AMDEPYC/uncore_v1
Split L3 Cache Topology Awareness in CPU Manager
2024-11-06 11:13:29 +00:00
Patrick Ohly
7b3a9afca3 DRA kubelet: add v1beta1 gRPC API
The v1beta1 API is identical to the previous v1alpha4, which erroneously was
still called "v1alpha3" in a few places, including the gRPC interface
definition itself.

The only reason for v1beta1 is to document the increased maturity of this API.

To simplify the transition, kubelet supports both v1alpha4 and v1beta1, picking
the more recent one automatically. All that DRA driver authors need to do to
implement v1beta1 is to update to the latest
k8s.io/dynamic-resource-allocation/kubeletplugin: it will automatically
register both API versions unless explicitly configured otherwise, which is
mostly just for testing.

DRA driver authors may replace their package import of v1alpha4 with v1beta1,
but they don't have to because the types in both packages are the same.
2024-11-06 11:05:05 +01:00
Kubernetes Prow Robot
bf75546494 Merge pull request #128432 from zhifei92/integrating-health-check
Integrate device plugin registration gRPC server health checks.
2024-11-06 04:19:29 +00:00
Kubernetes Prow Robot
f81a68f488 Merge pull request #128377 from tallclair/allocated-status-2
[FG:InPlacePodVerticalScaling] Implement AllocatedResources status changes for Beta
2024-11-05 23:21:49 +00:00
Charles Wong
b86eb19d30 update comments 2024-11-05 13:41:02 -06:00
sphrasavath
3f459f20d6 Add takeByTopologyUnCoreCachePacked if policy option align-cpus-by-uncorecache is enabled.
Adding new function to evaluate uncore cache id. Reverse allocation logic.
 Implement preferAlignByUncorecache within TakeByTopologyNUMAPacked, along with new test cases.
2024-11-05 15:22:47 +00:00
zhangzhifei16
1381e41f28 feat: Integrate device plugin registration gRPC server health checks. 2024-11-05 19:59:56 +08:00
Kubernetes Prow Robot
4932adf80d Merge pull request #125296 from jsturtevant/windows-numa-support
Support CPU and Topology manager on Windows
2024-11-05 00:33:28 +00:00
Kubernetes Prow Robot
a8e1f41131 Merge pull request #124216 from iholder101/in-pod-vertical-scaling/update-cgroup-systemd-instead-of-cgroupfs
[FG:InPlacePodVerticalScaling] Handle systemd cgroup driver by using libcontainer for updating pod cgroup values
2024-11-04 20:17:29 +00:00
Kubernetes Prow Robot
b4d91d1b8a Merge pull request #128517 from Tal-or/memorymanager-ga-features
node: kubelet: memmgr: Memory Manager to GA
2024-11-04 17:19:36 +00:00
Kubernetes Prow Robot
c6ea102f5f Merge pull request #128298 from SergeyKanzhelev/convergePluginRegistrationForDRAAndDP
converge DRA and Device Plugin plugins registration
2024-11-04 11:41:28 +00:00
Talor Itzhak
a56fde3694 lint: fix linter's complaints
Signed-off-by: Talor Itzhak <titzhak@redhat.com>
2024-11-04 09:59:39 +02:00
Talor Itzhak
37bcd38785 memorymanager: FG is locked to ON by default
We can remove the `if()` guards, since
the feature is always available.

Signed-off-by: Talor Itzhak <titzhak@redhat.com>
2024-11-04 09:57:21 +02:00
Kubernetes Prow Robot
3036d107a0 Merge pull request #127074 from Tal-or/mm_fix_checkpoint_file_comparison
memorymanager: fix checkpoint file comparison
2024-11-04 02:13:27 +00:00
Tim Allclair
81df195819 Stop using status.AllocatedResources to aggregate resources 2024-11-01 14:02:58 -07:00
Sergey Kanzhelev
1297d0cdd1 converge DRA and Device Plugin plugins registration 2024-10-30 16:58:13 +00:00
Itamar Holder
c792c30b6a Refactor: remove no longer needed resourceName parameter
Signed-off-by: Itamar Holder <iholder@redhat.com>
2024-10-30 13:58:38 +02:00
Itamar Holder
7207ce20f0 Refactor: remove functions that are no longer used
Signed-off-by: Itamar Holder <iholder@redhat.com>
2024-10-30 13:58:38 +02:00
Itamar Holder
510ff67528 Use libcontainer's cgroup manager to update resources through systemd
libcontainer's cgroup manager is version agnostic, and is agnostic
to whether systemd is used. This way if systemd is used, the cgroup
manager would be able to update resources properly so that if
the daemon would be restarted the changes would not be reverted.

Signed-off-by: Itamar Holder <iholder@redhat.com>
2024-10-30 13:58:38 +02:00
Itamar Holder
2a5a6c7fb8 Refactor: add import alias to libcontainer cgroup manager
Signed-off-by: Itamar Holder <iholder@redhat.com>
2024-10-30 13:58:38 +02:00
Kubernetes Prow Robot
a93e3e7ae1 Merge pull request #127483 from nokia/strict-cpu-reservation-core
KEP-4540: Add CPUManager policy option to restrict reservedSystemCPUs to system daemons and interrupt processing
2024-10-30 01:21:47 +00:00
Kubernetes Prow Robot
a339a36a36 Merge pull request #127506 from ffromani/cpu-pool-size-metrics
node: metrics: add metrics about cpu pool sizes
2024-10-30 00:17:24 +00:00
James Sturtevant
ac174f518c Respond to sig-node feedback
Signed-off-by: James Sturtevant <jsturtevant@gmail.com>
2024-10-29 16:56:37 -07:00
Kubernetes Prow Robot
a12a32cd12 Merge pull request #127146 from bart0sh/PR156-DRA-Kubelet-latency
Kubelet: add DRA latency metrics
2024-10-29 19:04:55 +00:00
Kubernetes Prow Robot
c5ccf59974 Merge pull request #128379 from pohly/dra-owners-wg-label
DRA: add wg/device-management label automatically
2024-10-29 15:24:57 +00:00
Talor Itzhak
d64f34eb2c memorymanager: areMemoryStatesEqual helper
perform the memoryStates comparison in helper function

Signed-off-by: Talor Itzhak <titzhak@redhat.com>
2024-10-29 14:22:04 +02:00
Talor Itzhak
7476f46d71 memorymanager: fix checkpoint file comparison
For a resource within a group, such as memory,
we should validate the total `Free` and total `Reserved` size of the expected `machineState` and state restored from checkpoint file after kubelet start.
If total `Free` and total `Reserved` are equal, the restored state is valid.

The old comparison however was done by reflection.

There're times when the memory accounting is equals
but the allocations across the NUMA nodes are varies.

In such cases we still need to consider the states as equals.

Signed-off-by: Talor Itzhak <titzhak@redhat.com>
2024-10-29 12:10:27 +02:00
holder
6709317ae2 chore: optimize code logic
(cherry picked from commit 91a9a195ac0fe0e31301dc60af0ea868fc4756ff)
2024-10-29 12:08:28 +02:00
holder
6d7a1226d5 update the test case name
(cherry picked from commit de033352079c7d87417f88f073d6b7891e51e590)
2024-10-29 12:08:23 +02:00
holder
39726b119f fix: fix state validate error after memorymanager with static policy start
(cherry picked from commit b91951f847d0b159c9d8ef32688cc96489ac1884)
2024-10-29 12:08:16 +02:00
Kubernetes Prow Robot
961344ddb2 Merge pull request #128124 from PiotrProkop/topology-manager-options-stable
topologymanager: Promote support for improved multi-numa alignment in Topology Manager to GA
2024-10-28 23:56:53 +00:00
Patrick Ohly
9d1b0654e0 DRA: add wg/device-management label automatically
This makes PRs show up automatically in the WG's project
board (https://github.com/orgs/kubernetes/projects/95/views/1).
2024-10-28 16:36:04 +01:00