From e6964dc4b4124f279c5cfc23d6690a215b854b44 Mon Sep 17 00:00:00 2001 From: dougbtv Date: Fri, 3 May 2019 09:23:43 -0400 Subject: [PATCH] [bugfix] Skipped clearing the network status annotation if the pod sandbox is not found --- multus/multus.go | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/multus/multus.go b/multus/multus.go index cb6f16ae2..b3eab05b8 100644 --- a/multus/multus.go +++ b/multus/multus.go @@ -425,6 +425,8 @@ func cmdDel(args *skel.CmdArgs, exec invoke.Exec, kubeClient k8s.KubeClient) err if args.Netns == "" { return nil } + + netnsfound := true netns, err := ns.GetNS(args.Netns) if err != nil { // if NetNs is passed down by the Cloud Orchestration Engine, or if it called multiple times @@ -432,6 +434,7 @@ func cmdDel(args *skel.CmdArgs, exec invoke.Exec, kubeClient k8s.KubeClient) err // https://github.com/kubernetes/kubernetes/issues/43014#issuecomment-287164444 _, ok := err.(ns.NSPathNotExistErr) if ok { + netnsfound = false logging.Debugf("cmdDel: WARNING netns may not exist, netns: %s, err: %s", netns, err) } else { return fmt.Errorf("failed to open netns %q: %v", netns, err) @@ -491,12 +494,16 @@ func cmdDel(args *skel.CmdArgs, exec invoke.Exec, kubeClient k8s.KubeClient) err // unset the network status annotation in apiserver, only in case Multus as kubeconfig if in.Kubeconfig != "" { - if !types.CheckSystemNamespaces(string(k8sArgs.K8S_POD_NAMESPACE), in.SystemNamespaces) { - err := k8s.SetNetworkStatus(kubeClient, k8sArgs, nil, in) - if err != nil { - // error happen but continue to delete - logging.Errorf("Multus: Err unset the networks status: %v", err) + if netnsfound { + if !types.CheckSystemNamespaces(string(k8sArgs.K8S_POD_NAMESPACE), in.SystemNamespaces) { + err := k8s.SetNetworkStatus(kubeClient, k8sArgs, nil, in) + if err != nil { + // error happen but continue to delete + logging.Errorf("Multus: Err unset the networks status: %v", err) + } } + } else { + logging.Debugf("WARNING: Unset SetNetworkStatus skipped due to netns not found.") } }