From 296e44cc081dd208fe943c80f0a9124ec8b94379 Mon Sep 17 00:00:00 2001 From: feisky Date: Tue, 6 Oct 2015 21:56:00 +0800 Subject: [PATCH] Delete infra container if network plugin fails --- pkg/kubelet/dockertools/manager.go | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/pkg/kubelet/dockertools/manager.go b/pkg/kubelet/dockertools/manager.go index 7a617c55891..1305c5cd038 100644 --- a/pkg/kubelet/dockertools/manager.go +++ b/pkg/kubelet/dockertools/manager.go @@ -1832,16 +1832,24 @@ func (dm *DockerManager) SyncPod(pod *api.Pod, runningPod kubecontainer.Pod, pod if containerChanges.StartInfraContainer && (len(containerChanges.ContainersToStart) > 0) { glog.V(4).Infof("Creating pod infra container for %q", podFullName) podInfraContainerID, err = dm.createPodInfraContainer(pod) - - // Call the networking plugin - if err == nil { - err = dm.networkPlugin.SetUpPod(pod.Namespace, pod.Name, podInfraContainerID) - } if err != nil { glog.Errorf("Failed to create pod infra container: %v; Skipping pod %q", err, podFullName) return err } + // Call the networking plugin + err = dm.networkPlugin.SetUpPod(pod.Namespace, pod.Name, podInfraContainerID) + if err != nil { + glog.Errorf("Failed to create pod infra container: %v; Skipping pod %q", err, podFullName) + // Delete infra container + if delErr := dm.KillContainerInPod(kubecontainer.ContainerID{ + ID: string(podInfraContainerID), + Type: "docker"}, nil, pod); delErr != nil { + glog.Warningf("Clear infra container failed for pod %q: %v", podFullName, delErr) + } + return err + } + // Setup the host interface (FIXME: move to networkPlugin when ready) podInfraContainer, err := dm.client.InspectContainer(string(podInfraContainerID)) if err != nil {