From 29c6a3b572ec387ac3321b67019e8c94e6afd2dd Mon Sep 17 00:00:00 2001 From: Harry Zhang Date: Mon, 26 Sep 2016 10:18:06 -0400 Subject: [PATCH] Enabel custom infracontainer image Modify api protoc for infra --- pkg/kubelet/dockershim/docker_sandbox.go | 9 +++++++-- pkg/kubelet/dockershim/docker_service.go | 4 +++- pkg/kubelet/kubelet.go | 2 +- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/pkg/kubelet/dockershim/docker_sandbox.go b/pkg/kubelet/dockershim/docker_sandbox.go index 125eef34f7e..aea24ca7bb5 100644 --- a/pkg/kubelet/dockershim/docker_sandbox.go +++ b/pkg/kubelet/dockershim/docker_sandbox.go @@ -45,9 +45,14 @@ const ( // Note: docker doesn't use LogDirectory (yet). func (ds *dockerService) RunPodSandbox(config *runtimeApi.PodSandboxConfig) (string, error) { // Step 1: Pull the image for the sandbox. - // TODO: How should we handle pulling custom pod infra container image - // (with credentials)? image := defaultSandboxImage + podSandboxImage := ds.podSandboxImage + if len(podSandboxImage) != 0 { + image = podSandboxImage + } + + // NOTE: To use a custom sandbox image in a private repository, users need to configure the nodes with credentials properly. + // see: http://kubernetes.io/docs/user-guide/images/#configuring-nodes-to-authenticate-to-a-private-repository if err := ds.client.PullImage(image, dockertypes.AuthConfig{}, dockertypes.ImagePullOptions{}); err != nil { return "", fmt.Errorf("unable to pull image for the sandbox container: %v", err) } diff --git a/pkg/kubelet/dockershim/docker_service.go b/pkg/kubelet/dockershim/docker_service.go index 3db96741ba9..7c4f541f41a 100644 --- a/pkg/kubelet/dockershim/docker_service.go +++ b/pkg/kubelet/dockershim/docker_service.go @@ -54,10 +54,11 @@ const ( var internalLabelKeys []string = []string{containerTypeLabelKey, sandboxIDLabelKey} // NOTE: Anything passed to DockerService should be eventually handled in another way when we switch to running the shim as a different process. -func NewDockerService(client dockertools.DockerInterface, seccompProfileRoot string) DockerLegacyService { +func NewDockerService(client dockertools.DockerInterface, seccompProfileRoot string, podSandboxImage string) DockerLegacyService { return &dockerService{ seccompProfileRoot: seccompProfileRoot, client: dockertools.NewInstrumentedDockerInterface(client), + podSandboxImage: podSandboxImage, } } @@ -80,6 +81,7 @@ type DockerLegacyService interface { type dockerService struct { seccompProfileRoot string client dockertools.DockerInterface + podSandboxImage string } // Version returns the runtime name, runtime version and runtime API version diff --git a/pkg/kubelet/kubelet.go b/pkg/kubelet/kubelet.go index e91aefaf278..9040a831665 100644 --- a/pkg/kubelet/kubelet.go +++ b/pkg/kubelet/kubelet.go @@ -507,7 +507,7 @@ func NewMainKubelet(kubeCfg *componentconfig.KubeletConfiguration, kubeDeps *Kub case "cri": // Use the new CRI shim for docker. This is need for testing the // docker integration through CRI, and may be removed in the future. - dockerService := dockershim.NewDockerService(klet.dockerClient, kubeCfg.SeccompProfileRoot) + dockerService := dockershim.NewDockerService(klet.dockerClient, kubeCfg.SeccompProfileRoot, kubeCfg.PodInfraContainerImage) klet.containerRuntime, err = kuberuntime.NewKubeGenericRuntimeManager( kubecontainer.FilterEventRecorder(kubeDeps.Recorder), klet.livenessManager,