From b868f421e0c20c970ca57708642e0453eb14594f Mon Sep 17 00:00:00 2001 From: Yifan Gu Date: Wed, 8 Apr 2015 18:56:58 -0700 Subject: [PATCH] kubelet: Move pod infra container image setting to dockertools. --- cmd/kubelet/app/server.go | 4 ++-- pkg/kubelet/dockertools/docker.go | 5 +++-- pkg/kubelet/dockertools/docker_test.go | 2 +- pkg/kubelet/dockertools/manager.go | 7 +++++-- pkg/kubelet/kubelet.go | 26 ++++++++++---------------- pkg/kubelet/kubelet_test.go | 13 +++++++------ pkg/kubelet/runonce_test.go | 2 +- 7 files changed, 29 insertions(+), 30 deletions(-) diff --git a/cmd/kubelet/app/server.go b/cmd/kubelet/app/server.go index 2a41c82cf6b..d5528adece3 100644 --- a/cmd/kubelet/app/server.go +++ b/cmd/kubelet/app/server.go @@ -120,7 +120,7 @@ func NewKubeletServer() *KubeletServer { Address: util.IP(net.ParseIP("0.0.0.0")), Port: ports.KubeletPort, ReadOnlyPort: ports.KubeletReadOnlyPort, - PodInfraContainerImage: kubelet.PodInfraContainerImage, + PodInfraContainerImage: dockertools.PodInfraContainerImage, RootDirectory: defaultRootDir, RegistryBurst: 10, EnableDebuggingHandlers: true, @@ -367,7 +367,7 @@ func SimpleKubelet(client *client.Client, HostnameOverride: hostname, RootDirectory: rootDir, ManifestURL: manifestURL, - PodInfraContainerImage: kubelet.PodInfraContainerImage, + PodInfraContainerImage: dockertools.PodInfraContainerImage, Port: port, Address: util.IP(net.ParseIP(address)), EnableServer: true, diff --git a/pkg/kubelet/dockertools/docker.go b/pkg/kubelet/dockertools/docker.go index ac8d25b9224..5c3b98c5cc4 100644 --- a/pkg/kubelet/dockertools/docker.go +++ b/pkg/kubelet/dockertools/docker.go @@ -40,8 +40,9 @@ import ( ) const ( - PodInfraContainerName = leaky.PodInfraContainerName - DockerPrefix = "docker://" + PodInfraContainerName = leaky.PodInfraContainerName + DockerPrefix = "docker://" + PodInfraContainerImage = "gcr.io/google_containers/pause:0.8.0" ) const ( diff --git a/pkg/kubelet/dockertools/docker_test.go b/pkg/kubelet/dockertools/docker_test.go index c40fdf11e3f..1a6143bc9e9 100644 --- a/pkg/kubelet/dockertools/docker_test.go +++ b/pkg/kubelet/dockertools/docker_test.go @@ -396,7 +396,7 @@ func TestIsImagePresent(t *testing.T) { func TestGetRunningContainers(t *testing.T) { fakeDocker := &FakeDockerClient{} fakeRecorder := &record.FakeRecorder{} - containerManager := NewDockerManager(fakeDocker, fakeRecorder) + containerManager := NewDockerManager(fakeDocker, fakeRecorder, PodInfraContainerImage) tests := []struct { containers map[string]*docker.Container inputIDs []string diff --git a/pkg/kubelet/dockertools/manager.go b/pkg/kubelet/dockertools/manager.go index 4e6042690db..5be562cdabc 100644 --- a/pkg/kubelet/dockertools/manager.go +++ b/pkg/kubelet/dockertools/manager.go @@ -41,13 +41,16 @@ import ( type DockerManager struct { client DockerInterface recorder record.EventRecorder + // TODO(yifan): PodInfraContainerImage can be unexported once + // we move createPodInfraContainer into dockertools. + PodInfraContainerImage string } // Ensures DockerManager implements ConatinerRunner. var _ kubecontainer.ContainerRunner = new(DockerManager) -func NewDockerManager(client DockerInterface, recorder record.EventRecorder) *DockerManager { - return &DockerManager{client: client, recorder: recorder} +func NewDockerManager(client DockerInterface, recorder record.EventRecorder, podInfraContainerImage string) *DockerManager { + return &DockerManager{client: client, recorder: recorder, PodInfraContainerImage: podInfraContainerImage} } // GetKubeletDockerContainerLogs returns logs of a specific container. By diff --git a/pkg/kubelet/kubelet.go b/pkg/kubelet/kubelet.go index 5f5de897551..3e353ba01bf 100644 --- a/pkg/kubelet/kubelet.go +++ b/pkg/kubelet/kubelet.go @@ -201,7 +201,7 @@ func NewMainKubelet( return nil, fmt.Errorf("failed to initialize image manager: %v", err) } statusManager := newStatusManager(kubeClient) - containerManager := dockertools.NewDockerManager(dockerClient, recorder) + containerManager := dockertools.NewDockerManager(dockerClient, recorder, podInfraContainerImage) klet := &Kubelet{ hostname: hostname, @@ -209,7 +209,6 @@ func NewMainKubelet( kubeClient: kubeClient, rootDirectory: rootDirectory, resyncInterval: resyncInterval, - podInfraContainerImage: podInfraContainerImage, containerRefManager: kubecontainer.NewRefManager(), readinessManager: kubecontainer.NewReadinessManager(), runner: dockertools.NewDockerContainerCommandRunner(dockerClient), @@ -277,15 +276,14 @@ type nodeLister interface { // Kubelet is the main kubelet implementation. type Kubelet struct { - hostname string - dockerClient dockertools.DockerInterface - dockerCache dockertools.DockerCache - kubeClient client.Interface - rootDirectory string - podInfraContainerImage string - podWorkers *podWorkers - resyncInterval time.Duration - sourcesReady SourcesReadyFn + hostname string + dockerClient dockertools.DockerInterface + dockerCache dockertools.DockerCache + kubeClient client.Interface + rootDirectory string + podWorkers *podWorkers + resyncInterval time.Duration + sourcesReady SourcesReadyFn podManager podManager @@ -854,10 +852,6 @@ func (kl *Kubelet) killContainerByID(ID string) error { return err } -const ( - PodInfraContainerImage = "gcr.io/google_containers/pause:0.8.0" -) - // Determined whether the specified pod is allowed to use host networking func allowHostNetwork(pod *api.Pod) (bool, error) { podSource, err := getPodSource(pod) @@ -891,7 +885,7 @@ func (kl *Kubelet) createPodInfraContainer(pod *api.Pod) (dockertools.DockerID, container := &api.Container{ Name: dockertools.PodInfraContainerName, - Image: kl.podInfraContainerImage, + Image: kl.containerManager.PodInfraContainerImage, Ports: ports, } ref, err := kubecontainer.GenerateContainerRef(pod, container) diff --git a/pkg/kubelet/kubelet_test.go b/pkg/kubelet/kubelet_test.go index 6bd5036e6ab..1ed8bac090f 100644 --- a/pkg/kubelet/kubelet_test.go +++ b/pkg/kubelet/kubelet_test.go @@ -113,7 +113,7 @@ func newTestKubelet(t *testing.T) *TestKubelet { podManager, fakeMirrorClient := newFakePodManager() kubelet.podManager = podManager kubelet.containerRefManager = kubecontainer.NewRefManager() - kubelet.containerManager = dockertools.NewDockerManager(fakeDocker, fakeRecorder) + kubelet.containerManager = dockertools.NewDockerManager(fakeDocker, fakeRecorder, dockertools.PodInfraContainerImage) return &TestKubelet{kubelet, fakeDocker, mockCadvisor, fakeKubeClient, waitGroup, fakeMirrorClient} } @@ -539,7 +539,7 @@ func TestSyncPodsCreatesNetAndContainer(t *testing.T) { kubelet := testKubelet.kubelet fakeDocker := testKubelet.fakeDocker waitGroup := testKubelet.waitGroup - kubelet.podInfraContainerImage = "custom_image_name" + kubelet.containerManager.PodInfraContainerImage = "custom_image_name" fakeDocker.ContainerList = []docker.APIContainers{} pods := []api.Pod{ { @@ -594,7 +594,7 @@ func TestSyncPodsCreatesNetAndContainerPullsImage(t *testing.T) { waitGroup := testKubelet.waitGroup puller := kubelet.dockerPuller.(*dockertools.FakeDockerPuller) puller.HasImages = []string{} - kubelet.podInfraContainerImage = "custom_image_name" + kubelet.containerManager.PodInfraContainerImage = "custom_image_name" fakeDocker.ContainerList = []docker.APIContainers{} pods := []api.Pod{ { @@ -1653,7 +1653,7 @@ func TestSyncPodsWithPullPolicy(t *testing.T) { waitGroup := testKubelet.waitGroup puller := kubelet.dockerPuller.(*dockertools.FakeDockerPuller) puller.HasImages = []string{"existing_one", "want:latest"} - kubelet.podInfraContainerImage = "custom_image_name" + kubelet.containerManager.PodInfraContainerImage = "custom_image_name" fakeDocker.ContainerList = []docker.APIContainers{} pods := []api.Pod{ @@ -2728,13 +2728,14 @@ func TestPortForward(t *testing.T) { var port uint16 = 5000 stream := &fakeReadWriteCloser{} + podInfraContainerImage := "POD" infraContainerID := "infra" - kubelet.podInfraContainerImage = "POD" + kubelet.containerManager.PodInfraContainerImage = podInfraContainerImage fakeDocker.ContainerList = []docker.APIContainers{ { ID: infraContainerID, - Names: []string{"/k8s_" + kubelet.podInfraContainerImage + "_" + podName + "_" + podNamespace + "_12345678_42"}, + Names: []string{"/k8s_" + podInfraContainerImage + "_" + podName + "_" + podNamespace + "_12345678_42"}, }, { ID: containerID, diff --git a/pkg/kubelet/runonce_test.go b/pkg/kubelet/runonce_test.go index 5a9ab3d2b2d..c7ad3dc86c8 100644 --- a/pkg/kubelet/runonce_test.go +++ b/pkg/kubelet/runonce_test.go @@ -145,7 +145,7 @@ func TestRunOnce(t *testing.T) { t: t, } kb.dockerPuller = &dockertools.FakeDockerPuller{} - kb.containerManager = dockertools.NewDockerManager(kb.dockerClient, kb.recorder) + kb.containerManager = dockertools.NewDockerManager(kb.dockerClient, kb.recorder, dockertools.PodInfraContainerImage) pods := []api.Pod{ {