diff --git a/pkg/kubelet/image_manager.go b/pkg/kubelet/image_manager.go index 658f0f54a9f..4aa13c318fc 100644 --- a/pkg/kubelet/image_manager.go +++ b/pkg/kubelet/image_manager.go @@ -39,6 +39,9 @@ type imageManager interface { // enough space as per the garbage collection policy. GarbageCollect() error + // Start async garbage collection of images. + Start() error + // TODO(vmarmol): Have this subsume pulls as well. } @@ -104,15 +107,10 @@ func newImageManager(dockerClient dockertools.DockerInterface, cadvisorInterface nodeRef: nodeRef, } - err := im.start() - if err != nil { - return nil, fmt.Errorf("failed to start image manager: %v", err) - } - return im, nil } -func (im *realImageManager) start() error { +func (im *realImageManager) Start() error { // Initial detection make detected time "unknown" in the past. var zero time.Time err := im.detectImages(zero) diff --git a/pkg/kubelet/kubelet.go b/pkg/kubelet/kubelet.go index bde538b75a3..b3c04ade5c8 100644 --- a/pkg/kubelet/kubelet.go +++ b/pkg/kubelet/kubelet.go @@ -600,6 +600,12 @@ func (kl *Kubelet) Run(updates <-chan PodUpdate) { glog.Infof("Running in container %q", kl.resourceContainer) } + err := kl.imageManager.Start() + if err != nil { + kl.recorder.Eventf(kl.nodeRef, "imageManagerFailed", "Failed to start ImageManager %v", err) + glog.Errorf("Failed to start ImageManager, images may not be garbage collected: %v", err) + } + go kl.syncNodeStatus() // Run the system oom watcher forever. go util.Until(kl.runOOMWatcher, time.Second, util.NeverStop)