diff --git a/pkg/kubelet/cm/BUILD b/pkg/kubelet/cm/BUILD index 46421b9efb4..992eafd9c9b 100644 --- a/pkg/kubelet/cm/BUILD +++ b/pkg/kubelet/cm/BUILD @@ -31,10 +31,12 @@ go_library( }), visibility = ["//visibility:public"], deps = [ + "//pkg/features:go_default_library", "//pkg/kubelet/apis/cri:go_default_library", "//pkg/kubelet/apis/deviceplugin/v1alpha1:go_default_library", "//pkg/kubelet/apis/kubeletconfig:go_default_library", "//pkg/kubelet/cadvisor:go_default_library", + "//pkg/kubelet/cm/cpumanager:go_default_library", "//pkg/kubelet/container:go_default_library", "//pkg/kubelet/deviceplugin:go_default_library", "//pkg/kubelet/eviction/api:go_default_library", @@ -45,14 +47,13 @@ go_library( "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library", "//vendor/k8s.io/client-go/tools/record:go_default_library", ] + select({ "@io_bazel_rules_go//go/platform:linux_amd64": [ "//pkg/api:go_default_library", "//pkg/api/v1/helper/qos:go_default_library", "//pkg/api/v1/resource:go_default_library", - "//pkg/features:go_default_library", - "//pkg/kubelet/cm/cpumanager:go_default_library", "//pkg/kubelet/cm/util:go_default_library", "//pkg/kubelet/events:go_default_library", "//pkg/kubelet/metrics:go_default_library", @@ -68,7 +69,6 @@ go_library( "//vendor/github.com/opencontainers/runc/libcontainer/configs:go_default_library", "//vendor/k8s.io/apimachinery/pkg/util/errors:go_default_library", "//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library", - "//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library", ], "//conditions:default": [], }), diff --git a/pkg/kubelet/cm/container_manager_linux.go b/pkg/kubelet/cm/container_manager_linux.go index f12a27d0897..fea87a2da88 100644 --- a/pkg/kubelet/cm/container_manager_linux.go +++ b/pkg/kubelet/cm/container_manager_linux.go @@ -332,32 +332,6 @@ func (cm *containerManagerImpl) InternalContainerLifecycle() InternalContainerLi return &internalContainerLifecycleImpl{cm.cpuManager} } -// Implements InternalContainerLifecycle interface. -type internalContainerLifecycleImpl struct { - cpuManager cpumanager.Manager -} - -func (i *internalContainerLifecycleImpl) PreStartContainer(pod *v1.Pod, container *v1.Container, containerID string) error { - if utilfeature.DefaultFeatureGate.Enabled(kubefeatures.CPUManager) { - return i.cpuManager.AddContainer(pod, container, containerID) - } - return nil -} - -func (i *internalContainerLifecycleImpl) PreStopContainer(containerID string) error { - if utilfeature.DefaultFeatureGate.Enabled(kubefeatures.CPUManager) { - return i.cpuManager.RemoveContainer(containerID) - } - return nil -} - -func (i *internalContainerLifecycleImpl) PostStopContainer(containerID string) error { - if utilfeature.DefaultFeatureGate.Enabled(kubefeatures.CPUManager) { - return i.cpuManager.RemoveContainer(containerID) - } - return nil -} - // Create a cgroup container manager. func createManager(containerName string) *fs.Manager { allowAllDevices := true diff --git a/pkg/kubelet/cm/container_manager_stub.go b/pkg/kubelet/cm/container_manager_stub.go index d551ef691fe..ee5d7c73bf6 100644 --- a/pkg/kubelet/cm/container_manager_stub.go +++ b/pkg/kubelet/cm/container_manager_stub.go @@ -21,6 +21,7 @@ import ( "k8s.io/api/core/v1" internalapi "k8s.io/kubernetes/pkg/kubelet/apis/cri" + "k8s.io/kubernetes/pkg/kubelet/cm/cpumanager" kubecontainer "k8s.io/kubernetes/pkg/kubelet/container" "k8s.io/kubernetes/pkg/kubelet/status" ) @@ -75,7 +76,7 @@ func (cm *containerManagerStub) GetResources(pod *v1.Pod, container *v1.Containe } func (cm *containerManagerStub) InternalContainerLifecycle() InternalContainerLifecycle { - return nil + return &internalContainerLifecycleImpl{cpumanager.NewFakeManager()} } func NewStubContainerManager() ContainerManager { diff --git a/pkg/kubelet/cm/container_manager_unsupported.go b/pkg/kubelet/cm/container_manager_unsupported.go index 3410dd4bbb3..0602bb5de97 100644 --- a/pkg/kubelet/cm/container_manager_unsupported.go +++ b/pkg/kubelet/cm/container_manager_unsupported.go @@ -25,6 +25,7 @@ import ( "k8s.io/client-go/tools/record" internalapi "k8s.io/kubernetes/pkg/kubelet/apis/cri" "k8s.io/kubernetes/pkg/kubelet/cadvisor" + "k8s.io/kubernetes/pkg/kubelet/cm/cpumanager" kubecontainer "k8s.io/kubernetes/pkg/kubelet/container" "k8s.io/kubernetes/pkg/kubelet/status" "k8s.io/kubernetes/pkg/util/mount" @@ -80,7 +81,7 @@ func (cm *unsupportedContainerManager) GetResources(pod *v1.Pod, container *v1.C } func (cm *unsupportedContainerManager) InternalContainerLifecycle() InternalContainerLifecycle { - return nil + return &internalContainerLifecycleImpl{cpumanager.NewFakeManager()} } func NewContainerManager(_ mount.Interface, _ cadvisor.Interface, _ NodeConfig, failSwapOn bool, devicePluginEnabled bool, recorder record.EventRecorder) (ContainerManager, error) { diff --git a/pkg/kubelet/cm/internal_container_lifecycle.go b/pkg/kubelet/cm/internal_container_lifecycle.go index 141f0b891f8..f81cb45a805 100644 --- a/pkg/kubelet/cm/internal_container_lifecycle.go +++ b/pkg/kubelet/cm/internal_container_lifecycle.go @@ -18,6 +18,10 @@ package cm import ( "k8s.io/api/core/v1" + + utilfeature "k8s.io/apiserver/pkg/util/feature" + kubefeatures "k8s.io/kubernetes/pkg/features" + "k8s.io/kubernetes/pkg/kubelet/cm/cpumanager" ) type InternalContainerLifecycle interface { @@ -25,3 +29,29 @@ type InternalContainerLifecycle interface { PreStopContainer(containerID string) error PostStopContainer(containerID string) error } + +// Implements InternalContainerLifecycle interface. +type internalContainerLifecycleImpl struct { + cpuManager cpumanager.Manager +} + +func (i *internalContainerLifecycleImpl) PreStartContainer(pod *v1.Pod, container *v1.Container, containerID string) error { + if utilfeature.DefaultFeatureGate.Enabled(kubefeatures.CPUManager) { + return i.cpuManager.AddContainer(pod, container, containerID) + } + return nil +} + +func (i *internalContainerLifecycleImpl) PreStopContainer(containerID string) error { + if utilfeature.DefaultFeatureGate.Enabled(kubefeatures.CPUManager) { + return i.cpuManager.RemoveContainer(containerID) + } + return nil +} + +func (i *internalContainerLifecycleImpl) PostStopContainer(containerID string) error { + if utilfeature.DefaultFeatureGate.Enabled(kubefeatures.CPUManager) { + return i.cpuManager.RemoveContainer(containerID) + } + return nil +}