AddHandlers in pkg/printers/internalversion/printers.go is called 66 times
during kube-apiserver storage initialization (once per REST storage provider
via printers.NewTableGenerator().With(printersinternal.AddHandlers)). Because
all 68 []metav1.TableColumnDefinition slices were allocated inline inside
AddHandlers, each storage provider allocated its own duplicate set of 68
column definition slices and SwaggerDoc description lookups.
Hoist all 68 read-only []metav1.TableColumnDefinition slices to package-level
variables so all TableGenerator instances share the same column definition
slices with zero per-call slice allocations.
to new lifecycle group
- EvictionRequest is managed by a requester
- Eviction is managed by the evictionrequest-controller
- add storage, strategy, printers and validation
Update the internal EndpointPort to use corev1.Protocol directly to perfectly match the external v1 field layout, keeping the types completely memory-identical. This also adds assertMemoryIdentical unit tests to ensure the type parity does not regress for EndpointSlice conversion.
Add unit tests for handwritten and declarative validation, controller
logic, metrics, table printer output, controller-manager registration,
etcd storage round-trip, and an integration test for the full RPSR
lifecycle. Also add an e2e test exercising the DRA test driver with
RPSR and the example manifest.
Implement the RPSR controller that watches ResourcePoolStatusRequest
objects and aggregates pool status from DRA drivers. Add the API server
registry (strategy, storage), handwritten validation, RBAC bootstrap
policy for the controller, kube-controller-manager wiring, table
printer columns, and storage factory registration.
* Drop WorkloadRef field and introduce SchedulingGroup field in Pod API
* Introduce v1alpha2 Workload and PodGroup APIs, drop v1alpha1 Workload API
Co-authored-by: yongruilin <yongrlin@outlook.com>
* Run hack/update-codegen.sh
* Adjust kube-scheduler code and integration tests to v1alpha2 API
* Drop v1alpha1 scheduling API group and run make update
---------
Co-authored-by: yongruilin <yongrlin@outlook.com>
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.
This adds the "DeviceTaint" top-level type to v1alpha3 and related fields to
ResourceSlice and ResourceClaim. It's complete enough bring up an API server
and generate files.
This is needed to make declaratve validation clean. Past me thought
this was clever (pointer versioned, non-pointer internal) but it is just
confusing.