...
1
16
17 package cm
18
19 import (
20 "k8s.io/api/core/v1"
21 runtimeapi "k8s.io/cri-api/pkg/apis/runtime/v1"
22 "k8s.io/kubernetes/pkg/kubelet/cm/cpumanager"
23 "k8s.io/kubernetes/pkg/kubelet/cm/memorymanager"
24 "k8s.io/kubernetes/pkg/kubelet/cm/topologymanager"
25 )
26
27 type InternalContainerLifecycle interface {
28 PreCreateContainer(pod *v1.Pod, container *v1.Container, containerConfig *runtimeapi.ContainerConfig) error
29 PreStartContainer(pod *v1.Pod, container *v1.Container, containerID string) error
30 PostStopContainer(containerID string) error
31 }
32
33
34 type internalContainerLifecycleImpl struct {
35 cpuManager cpumanager.Manager
36 memoryManager memorymanager.Manager
37 topologyManager topologymanager.Manager
38 }
39
40 func (i *internalContainerLifecycleImpl) PreStartContainer(pod *v1.Pod, container *v1.Container, containerID string) error {
41 if i.cpuManager != nil {
42 i.cpuManager.AddContainer(pod, container, containerID)
43 }
44
45 if i.memoryManager != nil {
46 i.memoryManager.AddContainer(pod, container, containerID)
47 }
48
49 i.topologyManager.AddContainer(pod, container, containerID)
50
51 return nil
52 }
53
54 func (i *internalContainerLifecycleImpl) PostStopContainer(containerID string) error {
55 return i.topologyManager.RemoveContainer(containerID)
56 }
57
View as plain text