mirror of https://github.com/k3s-io/k3s
Merge pull request #52977 from yanxuean/improvecgroup
Automatic merge from submit-queue (batch tested with PRs 54837, 55970, 55912, 55898, 52977). If you want to cherry-pick this change to another branch, please follow the instructions <a href="https://github.com/kubernetes/community/blob/master/contributors/devel/cherry-picks.md">here</a>. Improve kubelet cgroup **What this PR does / why we need it**: 1.Use arg cgroupRoot,not nodeConfig.CgroupRoot Using both arg cgroupRoot and nodeConfig.CgroupRoot is confused in function NewQOSContainerManager 2.improve cgroupmanager in qosContainerManager 3. improve arg "cgroupRoot" type in NewQOSContainerManager **Which issue this PR fixes** *(optional, in `fixes #<issue number>(, fixes #<issue_number>, ...)` format, will close that issue when PR gets merged)*: fixes # **Special notes for your reviewer**: **Release note**: ```release-note ```pull/6/head
commit
c60b35bcd3
|
@ -113,7 +113,7 @@ type containerManagerImpl struct {
|
||||||
qosContainers QOSContainersInfo
|
qosContainers QOSContainersInfo
|
||||||
// Tasks that are run periodically
|
// Tasks that are run periodically
|
||||||
periodicTasks []func()
|
periodicTasks []func()
|
||||||
// holds all the mounted cgroup subsystems
|
// Holds all the mounted cgroup subsystems
|
||||||
subsystems *CgroupSubsystems
|
subsystems *CgroupSubsystems
|
||||||
nodeInfo *v1.Node
|
nodeInfo *v1.Node
|
||||||
// Interface for cgroup management
|
// Interface for cgroup management
|
||||||
|
@ -245,7 +245,7 @@ func NewContainerManager(mountUtil mount.Interface, cadvisorInterface cadvisor.I
|
||||||
}
|
}
|
||||||
glog.Infof("Creating Container Manager object based on Node Config: %+v", nodeConfig)
|
glog.Infof("Creating Container Manager object based on Node Config: %+v", nodeConfig)
|
||||||
|
|
||||||
qosContainerManager, err := NewQOSContainerManager(subsystems, cgroupRoot, nodeConfig)
|
qosContainerManager, err := NewQOSContainerManager(subsystems, cgroupRoot, nodeConfig, cgroupManager)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
|
@ -56,21 +56,21 @@ type qosContainerManagerImpl struct {
|
||||||
cgroupManager CgroupManager
|
cgroupManager CgroupManager
|
||||||
activePods ActivePodsFunc
|
activePods ActivePodsFunc
|
||||||
getNodeAllocatable func() v1.ResourceList
|
getNodeAllocatable func() v1.ResourceList
|
||||||
cgroupRoot string
|
cgroupRoot CgroupName
|
||||||
qosReserved map[v1.ResourceName]int64
|
qosReserved map[v1.ResourceName]int64
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewQOSContainerManager(subsystems *CgroupSubsystems, cgroupRoot string, nodeConfig NodeConfig) (QOSContainerManager, error) {
|
func NewQOSContainerManager(subsystems *CgroupSubsystems, cgroupRoot string, nodeConfig NodeConfig, cgroupManager CgroupManager) (QOSContainerManager, error) {
|
||||||
if !nodeConfig.CgroupsPerQOS {
|
if !nodeConfig.CgroupsPerQOS {
|
||||||
return &qosContainerManagerNoop{
|
return &qosContainerManagerNoop{
|
||||||
cgroupRoot: CgroupName(nodeConfig.CgroupRoot),
|
cgroupRoot: CgroupName(cgroupRoot),
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
return &qosContainerManagerImpl{
|
return &qosContainerManagerImpl{
|
||||||
subsystems: subsystems,
|
subsystems: subsystems,
|
||||||
cgroupManager: NewCgroupManager(subsystems, nodeConfig.CgroupDriver),
|
cgroupManager: cgroupManager,
|
||||||
cgroupRoot: cgroupRoot,
|
cgroupRoot: CgroupName(cgroupRoot),
|
||||||
qosReserved: nodeConfig.ExperimentalQOSReserved,
|
qosReserved: nodeConfig.ExperimentalQOSReserved,
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
@ -81,7 +81,7 @@ func (m *qosContainerManagerImpl) GetQOSContainersInfo() QOSContainersInfo {
|
||||||
|
|
||||||
func (m *qosContainerManagerImpl) Start(getNodeAllocatable func() v1.ResourceList, activePods ActivePodsFunc) error {
|
func (m *qosContainerManagerImpl) Start(getNodeAllocatable func() v1.ResourceList, activePods ActivePodsFunc) error {
|
||||||
cm := m.cgroupManager
|
cm := m.cgroupManager
|
||||||
rootContainer := m.cgroupRoot
|
rootContainer := string(m.cgroupRoot)
|
||||||
if !cm.Exists(CgroupName(rootContainer)) {
|
if !cm.Exists(CgroupName(rootContainer)) {
|
||||||
return fmt.Errorf("root container %s doesn't exist", rootContainer)
|
return fmt.Errorf("root container %s doesn't exist", rootContainer)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue