diff --git a/pkg/kubelet/dockertools/docker_test.go b/pkg/kubelet/dockertools/docker_test.go index 3e0c6bc558d..5cc595a867f 100644 --- a/pkg/kubelet/dockertools/docker_test.go +++ b/pkg/kubelet/dockertools/docker_test.go @@ -392,7 +392,7 @@ func TestIsImagePresent(t *testing.T) { func TestGetRunningContainers(t *testing.T) { fakeDocker := &FakeDockerClient{Errors: make(map[string]error)} fakeRecorder := &record.FakeRecorder{} - containerManager := NewDockerManager(fakeDocker, fakeRecorder, PodInfraContainerImage, 0, 0) + containerManager := NewDockerManager(fakeDocker, fakeRecorder, nil, nil, PodInfraContainerImage, 0, 0) tests := []struct { containers map[string]*docker.Container inputIDs []string @@ -657,7 +657,7 @@ func TestFindContainersByPod(t *testing.T) { }, } fakeClient := &FakeDockerClient{} - containerManager := NewDockerManager(fakeClient, &record.FakeRecorder{}, PodInfraContainerImage, 0, 0) + containerManager := NewDockerManager(fakeClient, &record.FakeRecorder{}, nil, nil, PodInfraContainerImage, 0, 0) for i, test := range tests { fakeClient.ContainerList = test.containerList fakeClient.ExitedContainerList = test.exitedContainerList diff --git a/pkg/kubelet/dockertools/manager.go b/pkg/kubelet/dockertools/manager.go index 122a45ad01e..b1740f2074b 100644 --- a/pkg/kubelet/dockertools/manager.go +++ b/pkg/kubelet/dockertools/manager.go @@ -49,8 +49,11 @@ const ( // TODO: Eventually DockerManager should implement kubecontainer.Runtime // interface, and it should also add a cache to replace dockerCache. type DockerManager struct { - client DockerInterface - recorder record.EventRecorder + client DockerInterface + recorder record.EventRecorder + readinessManager *kubecontainer.ReadinessManager + containerRefManager *kubecontainer.RefManager + // TODO(yifan): PodInfraContainerImage can be unexported once // we move createPodInfraContainer into dockertools. PodInfraContainerImage string @@ -73,11 +76,20 @@ type DockerManager struct { // Ensures DockerManager implements ConatinerRunner. var _ kubecontainer.ContainerRunner = new(DockerManager) -func NewDockerManager(client DockerInterface, recorder record.EventRecorder, podInfraContainerImage string, qps float32, burst int) *DockerManager { +func NewDockerManager( + client DockerInterface, + recorder record.EventRecorder, + readinessManager *kubecontainer.ReadinessManager, + containerRefManager *kubecontainer.RefManager, + podInfraContainerImage string, + qps float32, + burst int) *DockerManager { reasonCache := stringCache{cache: lru.New(maxReasonCacheEntries)} return &DockerManager{ client: client, recorder: recorder, + readinessManager: readinessManager, + containerRefManager: containerRefManager, PodInfraContainerImage: podInfraContainerImage, reasonCache: reasonCache, Puller: newDockerPuller(client, qps, burst), diff --git a/pkg/kubelet/kubelet.go b/pkg/kubelet/kubelet.go index 3c4348b7e8e..cfaf0a569f2 100644 --- a/pkg/kubelet/kubelet.go +++ b/pkg/kubelet/kubelet.go @@ -264,7 +264,17 @@ func NewMainKubelet( return nil, fmt.Errorf("failed to initialize image manager: %v", err) } statusManager := newStatusManager(kubeClient) - containerManager := dockertools.NewDockerManager(dockerClient, recorder, podInfraContainerImage, pullQPS, pullBurst) + readinessManager := kubecontainer.NewReadinessManager() + containerRefManager := kubecontainer.NewRefManager() + containerManager := dockertools.NewDockerManager( + dockerClient, + recorder, + readinessManager, + containerRefManager, + podInfraContainerImage, + pullQPS, + pullBurst) + volumeManager := newVolumeManager() klet := &Kubelet{ @@ -273,8 +283,8 @@ func NewMainKubelet( kubeClient: kubeClient, rootDirectory: rootDirectory, resyncInterval: resyncInterval, - containerRefManager: kubecontainer.NewRefManager(), - readinessManager: kubecontainer.NewReadinessManager(), + containerRefManager: containerRefManager, + readinessManager: readinessManager, runner: containerManager, httpClient: &http.Client{}, sourcesReady: sourcesReady, diff --git a/pkg/kubelet/kubelet_test.go b/pkg/kubelet/kubelet_test.go index facb9442490..9a151c33dff 100644 --- a/pkg/kubelet/kubelet_test.go +++ b/pkg/kubelet/kubelet_test.go @@ -103,7 +103,7 @@ func newTestKubelet(t *testing.T) *TestKubelet { podManager, fakeMirrorClient := newFakePodManager() kubelet.podManager = podManager kubelet.containerRefManager = kubecontainer.NewRefManager() - kubelet.containerManager = dockertools.NewDockerManager(fakeDocker, fakeRecorder, dockertools.PodInfraContainerImage, 0, 0) + kubelet.containerManager = dockertools.NewDockerManager(fakeDocker, fakeRecorder, kubelet.readinessManager, kubelet.containerRefManager, dockertools.PodInfraContainerImage, 0, 0) kubelet.runtimeCache = kubecontainer.NewFakeRuntimeCache(kubelet.containerManager) kubelet.podWorkers = newPodWorkers( kubelet.runtimeCache, diff --git a/pkg/kubelet/pod_workers_test.go b/pkg/kubelet/pod_workers_test.go index c9199849648..9f11c3880cf 100644 --- a/pkg/kubelet/pod_workers_test.go +++ b/pkg/kubelet/pod_workers_test.go @@ -40,7 +40,8 @@ func newPod(uid, name string) *api.Pod { func createPodWorkers() (*podWorkers, map[types.UID][]string) { fakeDocker := &dockertools.FakeDockerClient{} fakeRecorder := &record.FakeRecorder{} - fakeRuntimeCache := kubecontainer.NewFakeRuntimeCache(dockertools.NewDockerManager(fakeDocker, fakeRecorder, dockertools.PodInfraContainerImage, 0, 0)) + dockerManager := dockertools.NewDockerManager(fakeDocker, fakeRecorder, nil, nil, dockertools.PodInfraContainerImage, 0, 0) + fakeRuntimeCache := kubecontainer.NewFakeRuntimeCache(dockerManager) lock := sync.Mutex{} processed := make(map[types.UID][]string) diff --git a/pkg/kubelet/runonce_test.go b/pkg/kubelet/runonce_test.go index ee7db574f5b..7489ad96f57 100644 --- a/pkg/kubelet/runonce_test.go +++ b/pkg/kubelet/runonce_test.go @@ -147,7 +147,14 @@ func TestRunOnce(t *testing.T) { t: t, } - kb.containerManager = dockertools.NewDockerManager(kb.dockerClient, kb.recorder, dockertools.PodInfraContainerImage, 0, 0) + kb.containerManager = dockertools.NewDockerManager( + kb.dockerClient, + kb.recorder, + kb.readinessManager, + kb.containerRefManager, + dockertools.PodInfraContainerImage, + 0, + 0) kb.containerManager.Puller = &dockertools.FakeDockerPuller{} pods := []*api.Pod{