From 01c3a51a7808c8f55202f70814214792cf24ff2a Mon Sep 17 00:00:00 2001 From: Francesco Romani Date: Mon, 1 May 2023 16:28:42 +0200 Subject: [PATCH] node: podresources: getallocatable: move to GA lock the feature gate to GA, and remove the now-redundant code. Signed-off-by: Francesco Romani --- pkg/features/kube_features.go | 5 ++-- pkg/kubelet/apis/podresources/server_v1.go | 5 ---- .../apis/podresources/server_v1_test.go | 2 -- pkg/kubelet/metrics/metrics.go | 10 ++++---- test/e2e_node/podresources_test.go | 23 ------------------- 5 files changed, 7 insertions(+), 38 deletions(-) diff --git a/pkg/features/kube_features.go b/pkg/features/kube_features.go index 7bb9cba5b20a9..f252bfccd20fa 100644 --- a/pkg/features/kube_features.go +++ b/pkg/features/kube_features.go @@ -435,9 +435,10 @@ const ( // Enable POD resources API with Get method KubeletPodResourcesGet featuregate.Feature = "KubeletPodResourcesGet" - // owner: @fromanirh + // owner: @ffromani // alpha: v1.21 // beta: v1.23 + // GA: v1.28 // Enable POD resources API to return allocatable resources KubeletPodResourcesGetAllocatable featuregate.Feature = "KubeletPodResourcesGetAllocatable" @@ -972,7 +973,7 @@ var defaultKubernetesFeatureGates = map[featuregate.Feature]featuregate.FeatureS KubeletPodResourcesGet: {Default: false, PreRelease: featuregate.Alpha}, - KubeletPodResourcesGetAllocatable: {Default: true, PreRelease: featuregate.Beta}, + KubeletPodResourcesGetAllocatable: {Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // GA in 1.28, remove in 1.30 KubeletTracing: {Default: true, PreRelease: featuregate.Beta}, diff --git a/pkg/kubelet/apis/podresources/server_v1.go b/pkg/kubelet/apis/podresources/server_v1.go index dcbf8ed4f31db..58ba9dbba9ddc 100644 --- a/pkg/kubelet/apis/podresources/server_v1.go +++ b/pkg/kubelet/apis/podresources/server_v1.go @@ -90,11 +90,6 @@ func (p *v1PodResourcesServer) GetAllocatableResources(ctx context.Context, req metrics.PodResourcesEndpointRequestsTotalCount.WithLabelValues("v1").Inc() metrics.PodResourcesEndpointRequestsGetAllocatableCount.WithLabelValues("v1").Inc() - if !utilfeature.DefaultFeatureGate.Enabled(kubefeatures.KubeletPodResourcesGetAllocatable) { - metrics.PodResourcesEndpointErrorsGetAllocatableCount.WithLabelValues("v1").Inc() - return nil, fmt.Errorf("PodResources API GetAllocatableResources disabled") - } - response := &v1.AllocatableResourcesResponse{ Devices: p.devicesProvider.GetAllocatableDevices(), CpuIds: p.cpusProvider.GetAllocatableCPUs(), diff --git a/pkg/kubelet/apis/podresources/server_v1_test.go b/pkg/kubelet/apis/podresources/server_v1_test.go index fc1cc9739c06d..4d342101d2f42 100644 --- a/pkg/kubelet/apis/podresources/server_v1_test.go +++ b/pkg/kubelet/apis/podresources/server_v1_test.go @@ -251,8 +251,6 @@ func TestListPodResourcesV1(t *testing.T) { } func TestAllocatableResources(t *testing.T) { - defer featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, pkgfeatures.KubeletPodResourcesGetAllocatable, true)() - mockCtrl := gomock.NewController(t) defer mockCtrl.Finish() diff --git a/pkg/kubelet/metrics/metrics.go b/pkg/kubelet/metrics/metrics.go index f0dad71fea1d3..0897b59eb2195 100644 --- a/pkg/kubelet/metrics/metrics.go +++ b/pkg/kubelet/metrics/metrics.go @@ -777,12 +777,10 @@ func Register(collectors ...metrics.StableCollector) { legacyregistry.MustRegister(RestartedPodTotal) legacyregistry.MustRegister(ManagedEphemeralContainers) legacyregistry.MustRegister(PodResourcesEndpointRequestsTotalCount) - if utilfeature.DefaultFeatureGate.Enabled(features.KubeletPodResourcesGetAllocatable) { - legacyregistry.MustRegister(PodResourcesEndpointRequestsListCount) - legacyregistry.MustRegister(PodResourcesEndpointRequestsGetAllocatableCount) - legacyregistry.MustRegister(PodResourcesEndpointErrorsListCount) - legacyregistry.MustRegister(PodResourcesEndpointErrorsGetAllocatableCount) - } + legacyregistry.MustRegister(PodResourcesEndpointRequestsListCount) + legacyregistry.MustRegister(PodResourcesEndpointRequestsGetAllocatableCount) + legacyregistry.MustRegister(PodResourcesEndpointErrorsListCount) + legacyregistry.MustRegister(PodResourcesEndpointErrorsGetAllocatableCount) if utilfeature.DefaultFeatureGate.Enabled(features.KubeletPodResourcesGet) { legacyregistry.MustRegister(PodResourcesEndpointRequestsGetCount) legacyregistry.MustRegister(PodResourcesEndpointErrorsGetCount) diff --git a/test/e2e_node/podresources_test.go b/test/e2e_node/podresources_test.go index 3799796f34166..ab16c859114d1 100644 --- a/test/e2e_node/podresources_test.go +++ b/test/e2e_node/podresources_test.go @@ -775,29 +775,6 @@ var _ = SIGDescribe("POD Resources [Serial] [Feature:PodResources][NodeFeature:P }) }) - ginkgo.Context("with disabled KubeletPodResourcesGetAllocatable feature gate", func() { - tempSetCurrentKubeletConfig(f, func(ctx context.Context, initialConfig *kubeletconfig.KubeletConfiguration) { - if initialConfig.FeatureGates == nil { - initialConfig.FeatureGates = make(map[string]bool) - } - initialConfig.FeatureGates[string(kubefeatures.KubeletPodResourcesGetAllocatable)] = false - }) - - ginkgo.It("should return the expected error with the feature gate disabled", func(ctx context.Context) { - endpoint, err := util.LocalEndpoint(defaultPodResourcesPath, podresources.Socket) - framework.ExpectNoError(err, "LocalEndpoint() failed err: %v", err) - - cli, conn, err := podresources.GetV1Client(endpoint, defaultPodResourcesTimeout, defaultPodResourcesMaxSize) - framework.ExpectNoError(err, "GetV1Client() failed err: %v", err) - defer conn.Close() - - ginkgo.By("checking GetAllocatableResources fail if the feature gate is not enabled") - allocatableRes, err := cli.GetAllocatableResources(ctx, &kubeletpodresourcesv1.AllocatableResourcesRequest{}) - framework.Logf("GetAllocatableResources result: %v, err: %v", allocatableRes, err) - framework.ExpectError(err, "With feature gate disabled, the call must fail") - }) - }) - ginkgo.Context("with disabled KubeletPodResourcesGet feature gate", func() { ginkgo.It("should return the expected error with the feature gate disabled", func(ctx context.Context) {