diff --git a/cmd/kubelet/app/server.go b/cmd/kubelet/app/server.go index d0cec28b778..6a1a5b9788f 100644 --- a/cmd/kubelet/app/server.go +++ b/cmd/kubelet/app/server.go @@ -711,13 +711,11 @@ func run(ctx context.Context, s *options.KubeletServer, kubeDeps *kubelet.Depend } var topologyManagerPolicyOptions map[string]string - if utilfeature.DefaultFeatureGate.Enabled(features.TopologyManager) { - if utilfeature.DefaultFeatureGate.Enabled(features.TopologyManagerPolicyOptions) { - topologyManagerPolicyOptions = s.TopologyManagerPolicyOptions - } else if s.TopologyManagerPolicyOptions != nil { - return fmt.Errorf("topology manager policy options %v require feature gates %q, %q enabled", - s.TopologyManagerPolicyOptions, features.TopologyManager, features.TopologyManagerPolicyOptions) - } + if utilfeature.DefaultFeatureGate.Enabled(features.TopologyManagerPolicyOptions) { + topologyManagerPolicyOptions = s.TopologyManagerPolicyOptions + } else if s.TopologyManagerPolicyOptions != nil { + return fmt.Errorf("topology manager policy options %v require feature gates %q enabled", + s.TopologyManagerPolicyOptions, features.TopologyManagerPolicyOptions) } kubeDeps.ContainerManager, err = cm.NewContainerManager( diff --git a/pkg/kubelet/apis/config/validation/validation.go b/pkg/kubelet/apis/config/validation/validation.go index 1da3b060b1a..80fa2f7abb1 100644 --- a/pkg/kubelet/apis/config/validation/validation.go +++ b/pkg/kubelet/apis/config/validation/validation.go @@ -131,9 +131,6 @@ func ValidateKubeletConfiguration(kc *kubeletconfig.KubeletConfiguration, featur if kc.ServerTLSBootstrap && !localFeatureGate.Enabled(features.RotateKubeletServerCertificate) { allErrors = append(allErrors, fmt.Errorf("invalid configuration: serverTLSBootstrap %v requires feature gate RotateKubeletServerCertificate", kc.ServerTLSBootstrap)) } - if kc.TopologyManagerPolicy != kubeletconfig.NoneTopologyManagerPolicy && !localFeatureGate.Enabled(features.TopologyManager) { - allErrors = append(allErrors, fmt.Errorf("invalid configuration: topologyManagerPolicy %v requires feature gate TopologyManager", kc.TopologyManagerPolicy)) - } for _, nodeTaint := range kc.RegisterWithTaints { if err := utiltaints.CheckTaintValidation(nodeTaint); err != nil { @@ -152,9 +149,7 @@ func ValidateKubeletConfiguration(kc *kubeletconfig.KubeletConfiguration, featur default: allErrors = append(allErrors, fmt.Errorf("invalid configuration: topologyManagerPolicy (--topology-manager-policy) %q must be one of: %q", kc.TopologyManagerPolicy, []string{kubeletconfig.NoneTopologyManagerPolicy, kubeletconfig.BestEffortTopologyManagerPolicy, kubeletconfig.RestrictedTopologyManagerPolicy, kubeletconfig.SingleNumaNodeTopologyManagerPolicy})) } - if kc.TopologyManagerScope != kubeletconfig.ContainerTopologyManagerScope && !localFeatureGate.Enabled(features.TopologyManager) { - allErrors = append(allErrors, fmt.Errorf("invalid configuration: topologyManagerScope %v requires feature gate TopologyManager", kc.TopologyManagerScope)) - } + switch kc.TopologyManagerScope { case kubeletconfig.ContainerTopologyManagerScope: case kubeletconfig.PodTopologyManagerScope: diff --git a/pkg/kubelet/apis/config/validation/validation_test.go b/pkg/kubelet/apis/config/validation/validation_test.go index db86577b6b5..ab9c9abc53b 100644 --- a/pkg/kubelet/apis/config/validation/validation_test.go +++ b/pkg/kubelet/apis/config/validation/validation_test.go @@ -333,15 +333,6 @@ func TestValidateKubeletConfiguration(t *testing.T) { }, errMsg: "invalid configuration: serverTLSBootstrap true requires feature gate RotateKubeletServerCertificate", }, - { - name: "use SingleNumaNodeTopologyManagerPolicy without enabling TopologyManager", - configure: func(conf *kubeletconfig.KubeletConfiguration) *kubeletconfig.KubeletConfiguration { - conf.FeatureGates = map[string]bool{"TopologyManager": false} - conf.TopologyManagerPolicy = kubeletconfig.SingleNumaNodeTopologyManagerPolicy - return conf - }, - errMsg: "invalid configuration: topologyManagerPolicy single-numa-node requires feature gate TopologyManager", - }, { name: "invalid TopologyManagerPolicy", configure: func(conf *kubeletconfig.KubeletConfiguration) *kubeletconfig.KubeletConfiguration { @@ -350,15 +341,6 @@ func TestValidateKubeletConfiguration(t *testing.T) { }, errMsg: "invalid configuration: topologyManagerPolicy (--topology-manager-policy) \"invalid-policy\" must be one of: [\"none\" \"best-effort\" \"restricted\" \"single-numa-node\"]", }, - { - name: "use PodTopologyManagerScope without enabling TopologyManager", - configure: func(conf *kubeletconfig.KubeletConfiguration) *kubeletconfig.KubeletConfiguration { - conf.FeatureGates = map[string]bool{"TopologyManager": false} - conf.TopologyManagerScope = kubeletconfig.PodTopologyManagerScope - return conf - }, - errMsg: "invalid configuration: topologyManagerScope pod requires feature gate TopologyManager", - }, { name: "invalid TopologyManagerScope", configure: func(conf *kubeletconfig.KubeletConfiguration) *kubeletconfig.KubeletConfiguration { diff --git a/pkg/kubelet/cm/container_manager_linux.go b/pkg/kubelet/cm/container_manager_linux.go index c2a3945228b..d34df9566be 100644 --- a/pkg/kubelet/cm/container_manager_linux.go +++ b/pkg/kubelet/cm/container_manager_linux.go @@ -289,20 +289,15 @@ func NewContainerManager(mountUtil mount.Interface, cadvisorInterface cadvisor.I qosContainerManager: qosContainerManager, } - if utilfeature.DefaultFeatureGate.Enabled(kubefeatures.TopologyManager) { - cm.topologyManager, err = topologymanager.NewManager( - machineInfo.Topology, - nodeConfig.ExperimentalTopologyManagerPolicy, - nodeConfig.ExperimentalTopologyManagerScope, - nodeConfig.ExperimentalTopologyManagerPolicyOptions, - ) + cm.topologyManager, err = topologymanager.NewManager( + machineInfo.Topology, + nodeConfig.ExperimentalTopologyManagerPolicy, + nodeConfig.ExperimentalTopologyManagerScope, + nodeConfig.ExperimentalTopologyManagerPolicyOptions, + ) - if err != nil { - return nil, err - } - - } else { - cm.topologyManager = topologymanager.NewFakeManager() + if err != nil { + return nil, err } klog.InfoS("Creating device plugin manager") diff --git a/pkg/kubelet/cm/internal_container_lifecycle.go b/pkg/kubelet/cm/internal_container_lifecycle.go index 81af2a6dcaa..39a1e96f8c3 100644 --- a/pkg/kubelet/cm/internal_container_lifecycle.go +++ b/pkg/kubelet/cm/internal_container_lifecycle.go @@ -18,9 +18,7 @@ package cm import ( "k8s.io/api/core/v1" - utilfeature "k8s.io/apiserver/pkg/util/feature" runtimeapi "k8s.io/cri-api/pkg/apis/runtime/v1" - kubefeatures "k8s.io/kubernetes/pkg/features" "k8s.io/kubernetes/pkg/kubelet/cm/cpumanager" "k8s.io/kubernetes/pkg/kubelet/cm/memorymanager" "k8s.io/kubernetes/pkg/kubelet/cm/topologymanager" @@ -49,9 +47,8 @@ func (i *internalContainerLifecycleImpl) PreStartContainer(pod *v1.Pod, containe i.memoryManager.AddContainer(pod, container, containerID) } - if utilfeature.DefaultFeatureGate.Enabled(kubefeatures.TopologyManager) { - i.topologyManager.AddContainer(pod, container, containerID) - } + i.topologyManager.AddContainer(pod, container, containerID) + return nil } @@ -60,11 +57,5 @@ func (i *internalContainerLifecycleImpl) PreStopContainer(containerID string) er } func (i *internalContainerLifecycleImpl) PostStopContainer(containerID string) error { - if utilfeature.DefaultFeatureGate.Enabled(kubefeatures.TopologyManager) { - err := i.topologyManager.RemoveContainer(containerID) - if err != nil { - return err - } - } - return nil + return i.topologyManager.RemoveContainer(containerID) } diff --git a/test/e2e_node/topology_manager_test.go b/test/e2e_node/topology_manager_test.go index 66eba9f9bf2..c0e94e82e83 100644 --- a/test/e2e_node/topology_manager_test.go +++ b/test/e2e_node/topology_manager_test.go @@ -199,8 +199,6 @@ func configureTopologyManagerInKubelet(oldCfg *kubeletconfig.KubeletConfiguratio newCfg.FeatureGates = make(map[string]bool) } - newCfg.FeatureGates["TopologyManager"] = true - // Set the Topology Manager policy newCfg.TopologyManagerPolicy = policy