From 03958f50496052462b2376d0ca742036877d9a9d Mon Sep 17 00:00:00 2001 From: Dawn Chen Date: Tue, 4 Nov 2014 14:26:21 -0800 Subject: [PATCH] Restart network container when container's configure is changed. Fix #2099 --- pkg/kubelet/kubelet.go | 8 ++++++++ pkg/kubelet/kubelet_test.go | 16 ++++++++++------ 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/pkg/kubelet/kubelet.go b/pkg/kubelet/kubelet.go index 65d444c8126..159b2145117 100644 --- a/pkg/kubelet/kubelet.go +++ b/pkg/kubelet/kubelet.go @@ -588,6 +588,14 @@ func (kl *Kubelet) syncPod(pod *api.BoundPod, dockerContainers dockertools.Docke continue } killedContainers[containerID] = empty{} + + // Also kill associated network container + if netContainer, found, _ := dockerContainers.FindPodContainer(podFullName, uuid, networkContainerName); found { + if err := kl.killContainer(netContainer); err != nil { + glog.V(1).Infof("Failed to kill network container %s: %v", netContainer.ID, err) + continue + } + } } // Check RestartPolicy for container diff --git a/pkg/kubelet/kubelet_test.go b/pkg/kubelet/kubelet_test.go index 899df92d5dd..827a25a0833 100644 --- a/pkg/kubelet/kubelet_test.go +++ b/pkg/kubelet/kubelet_test.go @@ -559,15 +559,17 @@ func TestSyncPodBadHash(t *testing.T) { t.Errorf("unexpected error: %v", err) } - verifyCalls(t, fakeDocker, []string{"list", "stop", "list", "create", "start"}) + verifyCalls(t, fakeDocker, []string{"list", "stop", "stop", "list", "create", "start"}) // A map interation is used to delete containers, so must not depend on // order here. expectedToStop := map[string]bool{ "1234": true, + "9876": true, } - if len(fakeDocker.Stopped) != 1 || - !expectedToStop[fakeDocker.Stopped[0]] { + if len(fakeDocker.Stopped) != 2 || + (!expectedToStop[fakeDocker.Stopped[0]] && + !expectedToStop[fakeDocker.Stopped[1]]) { t.Errorf("Wrong containers were stopped: %v", fakeDocker.Stopped) } } @@ -607,15 +609,17 @@ func TestSyncPodUnhealthy(t *testing.T) { t.Errorf("unexpected error: %v", err) } - verifyCalls(t, fakeDocker, []string{"list", "stop", "list", "create", "start"}) + verifyCalls(t, fakeDocker, []string{"list", "stop", "stop", "list", "create", "start"}) // A map interation is used to delete containers, so must not depend on // order here. expectedToStop := map[string]bool{ "1234": true, + "9876": true, } - if len(fakeDocker.Stopped) != 1 || - !expectedToStop[fakeDocker.Stopped[0]] { + if len(fakeDocker.Stopped) != 2 || + (!expectedToStop[fakeDocker.Stopped[0]] && + expectedToStop[fakeDocker.Stopped[0]]) { t.Errorf("Wrong containers were stopped: %v", fakeDocker.Stopped) } }