Merge pull request #21337 from vishh/ensure-runtime-cgroups

Auto commit by PR queue bot
This commit is contained in:
k8s-merge-robot 2016-02-26 16:52:14 -08:00
commit 2bca7c5287

View File

@ -24,6 +24,7 @@ import (
"os/exec" "os/exec"
"strconv" "strconv"
"strings" "strings"
"sync"
"time" "time"
"github.com/golang/glog" "github.com/golang/glog"
@ -74,11 +75,13 @@ func newSystemCgroups(containerName string) *systemContainer {
} }
type containerManagerImpl struct { type containerManagerImpl struct {
sync.RWMutex
cadvisorInterface cadvisor.Interface cadvisorInterface cadvisor.Interface
mountUtil mount.Interface mountUtil mount.Interface
NodeConfig NodeConfig
// External containers being managed. // External containers being managed.
systemContainers []*systemContainer systemContainers []*systemContainer
periodicTasks []func()
} }
var _ ContainerManager = &containerManagerImpl{} var _ ContainerManager = &containerManagerImpl{}
@ -225,12 +228,16 @@ func (cm *containerManagerImpl) setupNode() error {
} }
systemContainers = append(systemContainers, cont) systemContainers = append(systemContainers, cont)
} else { } else {
cm.periodicTasks = append(cm.periodicTasks, func() {
cont, err := getContainerNameForProcess("docker") cont, err := getContainerNameForProcess("docker")
if err != nil { if err != nil {
glog.Error(err) glog.Error(err)
} else { return
cm.RuntimeCgroupsName = cont
} }
cm.Lock()
defer cm.Unlock()
cm.RuntimeCgroupsName = cont
})
} }
} }
@ -267,12 +274,17 @@ func (cm *containerManagerImpl) setupNode() error {
} }
systemContainers = append(systemContainers, cont) systemContainers = append(systemContainers, cont)
} else { } else {
cm.periodicTasks = append(cm.periodicTasks, func() {
cont, err := getContainer(os.Getpid()) cont, err := getContainer(os.Getpid())
if err != nil { if err != nil {
glog.Error("failed to find cgroups of kubelet - %v", err) glog.Error("failed to find cgroups of kubelet - %v", err)
} else { return
cm.KubeletCgroupsName = cont
} }
cm.Lock()
defer cm.Unlock()
cm.KubeletCgroupsName = cont
})
} }
cm.systemContainers = systemContainers cm.systemContainers = systemContainers
@ -295,6 +307,8 @@ func getContainerNameForProcess(name string) (string, error) {
} }
func (cm *containerManagerImpl) GetNodeConfig() NodeConfig { func (cm *containerManagerImpl) GetNodeConfig() NodeConfig {
cm.RLock()
defer cm.RUnlock()
return cm.NodeConfig return cm.NodeConfig
} }
@ -325,6 +339,14 @@ func (cm *containerManagerImpl) Start() error {
} }
}, time.Minute, wait.NeverStop) }, time.Minute, wait.NeverStop)
go wait.Until(func() {
for _, task := range cm.periodicTasks {
if task != nil {
task()
}
}
}, 5*time.Minute, wait.NeverStop)
return nil return nil
} }