diff --git a/multus/multus.go b/multus/multus.go index 9927ae2fc..6bd8a6bdb 100644 --- a/multus/multus.go +++ b/multus/multus.go @@ -308,6 +308,24 @@ func cmdDel(args *skel.CmdArgs, exec invoke.Exec, kubeClient k8s.KubeClient) err return err } + if args.Netns == "" { + return nil + } + netns, err := ns.GetNS(args.Netns) + if err != nil { + if err != nil { + // if NetNs is passed down by the CEO, or if it called multiple times + // so don't return an error if the device is already removed. + // https://github.com/kubernetes/kubernetes/issues/43014#issuecomment-287164444 + _, ok := err.(ns.NSPathNotExistErr) + if ok { + return nil + } + return fmt.Errorf("failed to open netns %q: %v", netns, err) + } + } + defer netns.Close() + k8sArgs, err := k8s.GetK8sArgs(args) if err != nil { return logging.Errorf("Multus: Err in getting k8s args: %v", err)