kubelet: Move pod infra container image setting to dockertools.

This commit is contained in:
Yifan Gu 2015-04-08 18:56:58 -07:00
parent ca6f1a1bc7
commit b868f421e0
7 changed files with 29 additions and 30 deletions

View File

@ -120,7 +120,7 @@ func NewKubeletServer() *KubeletServer {
Address: util.IP(net.ParseIP("0.0.0.0")), Address: util.IP(net.ParseIP("0.0.0.0")),
Port: ports.KubeletPort, Port: ports.KubeletPort,
ReadOnlyPort: ports.KubeletReadOnlyPort, ReadOnlyPort: ports.KubeletReadOnlyPort,
PodInfraContainerImage: kubelet.PodInfraContainerImage, PodInfraContainerImage: dockertools.PodInfraContainerImage,
RootDirectory: defaultRootDir, RootDirectory: defaultRootDir,
RegistryBurst: 10, RegistryBurst: 10,
EnableDebuggingHandlers: true, EnableDebuggingHandlers: true,
@ -367,7 +367,7 @@ func SimpleKubelet(client *client.Client,
HostnameOverride: hostname, HostnameOverride: hostname,
RootDirectory: rootDir, RootDirectory: rootDir,
ManifestURL: manifestURL, ManifestURL: manifestURL,
PodInfraContainerImage: kubelet.PodInfraContainerImage, PodInfraContainerImage: dockertools.PodInfraContainerImage,
Port: port, Port: port,
Address: util.IP(net.ParseIP(address)), Address: util.IP(net.ParseIP(address)),
EnableServer: true, EnableServer: true,

View File

@ -42,6 +42,7 @@ import (
const ( const (
PodInfraContainerName = leaky.PodInfraContainerName PodInfraContainerName = leaky.PodInfraContainerName
DockerPrefix = "docker://" DockerPrefix = "docker://"
PodInfraContainerImage = "gcr.io/google_containers/pause:0.8.0"
) )
const ( const (

View File

@ -396,7 +396,7 @@ func TestIsImagePresent(t *testing.T) {
func TestGetRunningContainers(t *testing.T) { func TestGetRunningContainers(t *testing.T) {
fakeDocker := &FakeDockerClient{} fakeDocker := &FakeDockerClient{}
fakeRecorder := &record.FakeRecorder{} fakeRecorder := &record.FakeRecorder{}
containerManager := NewDockerManager(fakeDocker, fakeRecorder) containerManager := NewDockerManager(fakeDocker, fakeRecorder, PodInfraContainerImage)
tests := []struct { tests := []struct {
containers map[string]*docker.Container containers map[string]*docker.Container
inputIDs []string inputIDs []string

View File

@ -41,13 +41,16 @@ import (
type DockerManager struct { type DockerManager struct {
client DockerInterface client DockerInterface
recorder record.EventRecorder recorder record.EventRecorder
// TODO(yifan): PodInfraContainerImage can be unexported once
// we move createPodInfraContainer into dockertools.
PodInfraContainerImage string
} }
// Ensures DockerManager implements ConatinerRunner. // Ensures DockerManager implements ConatinerRunner.
var _ kubecontainer.ContainerRunner = new(DockerManager) var _ kubecontainer.ContainerRunner = new(DockerManager)
func NewDockerManager(client DockerInterface, recorder record.EventRecorder) *DockerManager { func NewDockerManager(client DockerInterface, recorder record.EventRecorder, podInfraContainerImage string) *DockerManager {
return &DockerManager{client: client, recorder: recorder} return &DockerManager{client: client, recorder: recorder, PodInfraContainerImage: podInfraContainerImage}
} }
// GetKubeletDockerContainerLogs returns logs of a specific container. By // GetKubeletDockerContainerLogs returns logs of a specific container. By

View File

@ -201,7 +201,7 @@ func NewMainKubelet(
return nil, fmt.Errorf("failed to initialize image manager: %v", err) return nil, fmt.Errorf("failed to initialize image manager: %v", err)
} }
statusManager := newStatusManager(kubeClient) statusManager := newStatusManager(kubeClient)
containerManager := dockertools.NewDockerManager(dockerClient, recorder) containerManager := dockertools.NewDockerManager(dockerClient, recorder, podInfraContainerImage)
klet := &Kubelet{ klet := &Kubelet{
hostname: hostname, hostname: hostname,
@ -209,7 +209,6 @@ func NewMainKubelet(
kubeClient: kubeClient, kubeClient: kubeClient,
rootDirectory: rootDirectory, rootDirectory: rootDirectory,
resyncInterval: resyncInterval, resyncInterval: resyncInterval,
podInfraContainerImage: podInfraContainerImage,
containerRefManager: kubecontainer.NewRefManager(), containerRefManager: kubecontainer.NewRefManager(),
readinessManager: kubecontainer.NewReadinessManager(), readinessManager: kubecontainer.NewReadinessManager(),
runner: dockertools.NewDockerContainerCommandRunner(dockerClient), runner: dockertools.NewDockerContainerCommandRunner(dockerClient),
@ -282,7 +281,6 @@ type Kubelet struct {
dockerCache dockertools.DockerCache dockerCache dockertools.DockerCache
kubeClient client.Interface kubeClient client.Interface
rootDirectory string rootDirectory string
podInfraContainerImage string
podWorkers *podWorkers podWorkers *podWorkers
resyncInterval time.Duration resyncInterval time.Duration
sourcesReady SourcesReadyFn sourcesReady SourcesReadyFn
@ -854,10 +852,6 @@ func (kl *Kubelet) killContainerByID(ID string) error {
return err return err
} }
const (
PodInfraContainerImage = "gcr.io/google_containers/pause:0.8.0"
)
// Determined whether the specified pod is allowed to use host networking // Determined whether the specified pod is allowed to use host networking
func allowHostNetwork(pod *api.Pod) (bool, error) { func allowHostNetwork(pod *api.Pod) (bool, error) {
podSource, err := getPodSource(pod) podSource, err := getPodSource(pod)
@ -891,7 +885,7 @@ func (kl *Kubelet) createPodInfraContainer(pod *api.Pod) (dockertools.DockerID,
container := &api.Container{ container := &api.Container{
Name: dockertools.PodInfraContainerName, Name: dockertools.PodInfraContainerName,
Image: kl.podInfraContainerImage, Image: kl.containerManager.PodInfraContainerImage,
Ports: ports, Ports: ports,
} }
ref, err := kubecontainer.GenerateContainerRef(pod, container) ref, err := kubecontainer.GenerateContainerRef(pod, container)

View File

@ -113,7 +113,7 @@ func newTestKubelet(t *testing.T) *TestKubelet {
podManager, fakeMirrorClient := newFakePodManager() podManager, fakeMirrorClient := newFakePodManager()
kubelet.podManager = podManager kubelet.podManager = podManager
kubelet.containerRefManager = kubecontainer.NewRefManager() 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} return &TestKubelet{kubelet, fakeDocker, mockCadvisor, fakeKubeClient, waitGroup, fakeMirrorClient}
} }
@ -539,7 +539,7 @@ func TestSyncPodsCreatesNetAndContainer(t *testing.T) {
kubelet := testKubelet.kubelet kubelet := testKubelet.kubelet
fakeDocker := testKubelet.fakeDocker fakeDocker := testKubelet.fakeDocker
waitGroup := testKubelet.waitGroup waitGroup := testKubelet.waitGroup
kubelet.podInfraContainerImage = "custom_image_name" kubelet.containerManager.PodInfraContainerImage = "custom_image_name"
fakeDocker.ContainerList = []docker.APIContainers{} fakeDocker.ContainerList = []docker.APIContainers{}
pods := []api.Pod{ pods := []api.Pod{
{ {
@ -594,7 +594,7 @@ func TestSyncPodsCreatesNetAndContainerPullsImage(t *testing.T) {
waitGroup := testKubelet.waitGroup waitGroup := testKubelet.waitGroup
puller := kubelet.dockerPuller.(*dockertools.FakeDockerPuller) puller := kubelet.dockerPuller.(*dockertools.FakeDockerPuller)
puller.HasImages = []string{} puller.HasImages = []string{}
kubelet.podInfraContainerImage = "custom_image_name" kubelet.containerManager.PodInfraContainerImage = "custom_image_name"
fakeDocker.ContainerList = []docker.APIContainers{} fakeDocker.ContainerList = []docker.APIContainers{}
pods := []api.Pod{ pods := []api.Pod{
{ {
@ -1653,7 +1653,7 @@ func TestSyncPodsWithPullPolicy(t *testing.T) {
waitGroup := testKubelet.waitGroup waitGroup := testKubelet.waitGroup
puller := kubelet.dockerPuller.(*dockertools.FakeDockerPuller) puller := kubelet.dockerPuller.(*dockertools.FakeDockerPuller)
puller.HasImages = []string{"existing_one", "want:latest"} puller.HasImages = []string{"existing_one", "want:latest"}
kubelet.podInfraContainerImage = "custom_image_name" kubelet.containerManager.PodInfraContainerImage = "custom_image_name"
fakeDocker.ContainerList = []docker.APIContainers{} fakeDocker.ContainerList = []docker.APIContainers{}
pods := []api.Pod{ pods := []api.Pod{
@ -2728,13 +2728,14 @@ func TestPortForward(t *testing.T) {
var port uint16 = 5000 var port uint16 = 5000
stream := &fakeReadWriteCloser{} stream := &fakeReadWriteCloser{}
podInfraContainerImage := "POD"
infraContainerID := "infra" infraContainerID := "infra"
kubelet.podInfraContainerImage = "POD" kubelet.containerManager.PodInfraContainerImage = podInfraContainerImage
fakeDocker.ContainerList = []docker.APIContainers{ fakeDocker.ContainerList = []docker.APIContainers{
{ {
ID: infraContainerID, ID: infraContainerID,
Names: []string{"/k8s_" + kubelet.podInfraContainerImage + "_" + podName + "_" + podNamespace + "_12345678_42"}, Names: []string{"/k8s_" + podInfraContainerImage + "_" + podName + "_" + podNamespace + "_12345678_42"},
}, },
{ {
ID: containerID, ID: containerID,

View File

@ -145,7 +145,7 @@ func TestRunOnce(t *testing.T) {
t: t, t: t,
} }
kb.dockerPuller = &dockertools.FakeDockerPuller{} 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{ pods := []api.Pod{
{ {