mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-21 19:01:49 +00:00
node: topologymgr: GA graduation implies Feature Gate is ON by default
Signed-off-by: Swati Sehgal <swsehgal@redhat.com>
This commit is contained in:
parent
04438aa6f8
commit
d536a342b4
@ -711,13 +711,11 @@ func run(ctx context.Context, s *options.KubeletServer, kubeDeps *kubelet.Depend
|
|||||||
}
|
}
|
||||||
|
|
||||||
var topologyManagerPolicyOptions map[string]string
|
var topologyManagerPolicyOptions map[string]string
|
||||||
if utilfeature.DefaultFeatureGate.Enabled(features.TopologyManager) {
|
|
||||||
if utilfeature.DefaultFeatureGate.Enabled(features.TopologyManagerPolicyOptions) {
|
if utilfeature.DefaultFeatureGate.Enabled(features.TopologyManagerPolicyOptions) {
|
||||||
topologyManagerPolicyOptions = s.TopologyManagerPolicyOptions
|
topologyManagerPolicyOptions = s.TopologyManagerPolicyOptions
|
||||||
} else if s.TopologyManagerPolicyOptions != nil {
|
} else if s.TopologyManagerPolicyOptions != nil {
|
||||||
return fmt.Errorf("topology manager policy options %v require feature gates %q, %q enabled",
|
return fmt.Errorf("topology manager policy options %v require feature gates %q enabled",
|
||||||
s.TopologyManagerPolicyOptions, features.TopologyManager, features.TopologyManagerPolicyOptions)
|
s.TopologyManagerPolicyOptions, features.TopologyManagerPolicyOptions)
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
kubeDeps.ContainerManager, err = cm.NewContainerManager(
|
kubeDeps.ContainerManager, err = cm.NewContainerManager(
|
||||||
|
@ -131,9 +131,6 @@ func ValidateKubeletConfiguration(kc *kubeletconfig.KubeletConfiguration, featur
|
|||||||
if kc.ServerTLSBootstrap && !localFeatureGate.Enabled(features.RotateKubeletServerCertificate) {
|
if kc.ServerTLSBootstrap && !localFeatureGate.Enabled(features.RotateKubeletServerCertificate) {
|
||||||
allErrors = append(allErrors, fmt.Errorf("invalid configuration: serverTLSBootstrap %v requires feature gate RotateKubeletServerCertificate", kc.ServerTLSBootstrap))
|
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 {
|
for _, nodeTaint := range kc.RegisterWithTaints {
|
||||||
if err := utiltaints.CheckTaintValidation(nodeTaint); err != nil {
|
if err := utiltaints.CheckTaintValidation(nodeTaint); err != nil {
|
||||||
@ -152,9 +149,7 @@ func ValidateKubeletConfiguration(kc *kubeletconfig.KubeletConfiguration, featur
|
|||||||
default:
|
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}))
|
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 {
|
switch kc.TopologyManagerScope {
|
||||||
case kubeletconfig.ContainerTopologyManagerScope:
|
case kubeletconfig.ContainerTopologyManagerScope:
|
||||||
case kubeletconfig.PodTopologyManagerScope:
|
case kubeletconfig.PodTopologyManagerScope:
|
||||||
|
@ -333,15 +333,6 @@ func TestValidateKubeletConfiguration(t *testing.T) {
|
|||||||
},
|
},
|
||||||
errMsg: "invalid configuration: serverTLSBootstrap true requires feature gate RotateKubeletServerCertificate",
|
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",
|
name: "invalid TopologyManagerPolicy",
|
||||||
configure: func(conf *kubeletconfig.KubeletConfiguration) *kubeletconfig.KubeletConfiguration {
|
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\"]",
|
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",
|
name: "invalid TopologyManagerScope",
|
||||||
configure: func(conf *kubeletconfig.KubeletConfiguration) *kubeletconfig.KubeletConfiguration {
|
configure: func(conf *kubeletconfig.KubeletConfiguration) *kubeletconfig.KubeletConfiguration {
|
||||||
|
@ -289,7 +289,6 @@ func NewContainerManager(mountUtil mount.Interface, cadvisorInterface cadvisor.I
|
|||||||
qosContainerManager: qosContainerManager,
|
qosContainerManager: qosContainerManager,
|
||||||
}
|
}
|
||||||
|
|
||||||
if utilfeature.DefaultFeatureGate.Enabled(kubefeatures.TopologyManager) {
|
|
||||||
cm.topologyManager, err = topologymanager.NewManager(
|
cm.topologyManager, err = topologymanager.NewManager(
|
||||||
machineInfo.Topology,
|
machineInfo.Topology,
|
||||||
nodeConfig.ExperimentalTopologyManagerPolicy,
|
nodeConfig.ExperimentalTopologyManagerPolicy,
|
||||||
@ -301,10 +300,6 @@ func NewContainerManager(mountUtil mount.Interface, cadvisorInterface cadvisor.I
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
|
||||||
cm.topologyManager = topologymanager.NewFakeManager()
|
|
||||||
}
|
|
||||||
|
|
||||||
klog.InfoS("Creating device plugin manager")
|
klog.InfoS("Creating device plugin manager")
|
||||||
cm.deviceManager, err = devicemanager.NewManagerImpl(machineInfo.Topology, cm.topologyManager)
|
cm.deviceManager, err = devicemanager.NewManagerImpl(machineInfo.Topology, cm.topologyManager)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -18,9 +18,7 @@ package cm
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"k8s.io/api/core/v1"
|
"k8s.io/api/core/v1"
|
||||||
utilfeature "k8s.io/apiserver/pkg/util/feature"
|
|
||||||
runtimeapi "k8s.io/cri-api/pkg/apis/runtime/v1"
|
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/cpumanager"
|
||||||
"k8s.io/kubernetes/pkg/kubelet/cm/memorymanager"
|
"k8s.io/kubernetes/pkg/kubelet/cm/memorymanager"
|
||||||
"k8s.io/kubernetes/pkg/kubelet/cm/topologymanager"
|
"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)
|
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
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -60,11 +57,5 @@ func (i *internalContainerLifecycleImpl) PreStopContainer(containerID string) er
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (i *internalContainerLifecycleImpl) PostStopContainer(containerID string) error {
|
func (i *internalContainerLifecycleImpl) PostStopContainer(containerID string) error {
|
||||||
if utilfeature.DefaultFeatureGate.Enabled(kubefeatures.TopologyManager) {
|
return i.topologyManager.RemoveContainer(containerID)
|
||||||
err := i.topologyManager.RemoveContainer(containerID)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
}
|
||||||
|
@ -199,8 +199,6 @@ func configureTopologyManagerInKubelet(oldCfg *kubeletconfig.KubeletConfiguratio
|
|||||||
newCfg.FeatureGates = make(map[string]bool)
|
newCfg.FeatureGates = make(map[string]bool)
|
||||||
}
|
}
|
||||||
|
|
||||||
newCfg.FeatureGates["TopologyManager"] = true
|
|
||||||
|
|
||||||
// Set the Topology Manager policy
|
// Set the Topology Manager policy
|
||||||
newCfg.TopologyManagerPolicy = policy
|
newCfg.TopologyManagerPolicy = policy
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user