diff --git a/cmd/kubelet/app/plugins.go b/cmd/kubelet/app/plugins.go index 18e078599b..76736350e4 100644 --- a/cmd/kubelet/app/plugins.go +++ b/cmd/kubelet/app/plugins.go @@ -92,7 +92,7 @@ func ProbeNetworkPlugins(pluginDir string) []network.NetworkPlugin { // for each existing plugin, add to the list allPlugins = append(allPlugins, exec.ProbeNetworkPlugins(pluginDir)...) allPlugins = append(allPlugins, cni.ProbeNetworkPlugins(pluginDir)...) - allPlugins = append(allPlugins, kubenet.NewPlugin()) + allPlugins = append(allPlugins, kubenet.NewPlugin(pluginDir)) return allPlugins } diff --git a/pkg/kubelet/network/kubenet/kubenet_linux.go b/pkg/kubelet/network/kubenet/kubenet_linux.go index db22b3afd7..785e3fd21b 100644 --- a/pkg/kubelet/network/kubenet/kubenet_linux.go +++ b/pkg/kubelet/network/kubenet/kubenet_linux.go @@ -77,20 +77,23 @@ type kubenetNetworkPlugin struct { hairpinMode componentconfig.HairpinMode hostPortMap map[hostport]closeable iptables utiliptables.Interface + // vendorDir is passed by kubelet network-plugin-dir parameter. + // kubenet will search for cni binaries in DefaultCNIDir first, then continue to vendorDir. + vendorDir string } -func NewPlugin() network.NetworkPlugin { +func NewPlugin(networkPluginDir string) network.NetworkPlugin { protocol := utiliptables.ProtocolIpv4 execer := utilexec.New() dbus := utildbus.New() iptInterface := utiliptables.New(execer, dbus, protocol) - return &kubenetNetworkPlugin{ podIPs: make(map[kubecontainer.ContainerID]string), hostPortMap: make(map[hostport]closeable), MTU: 1460, //TODO: don't hardcode this execer: utilexec.New(), iptables: iptInterface, + vendorDir: networkPluginDir, } } @@ -98,7 +101,7 @@ func (plugin *kubenetNetworkPlugin) Init(host network.Host, hairpinMode componen plugin.host = host plugin.hairpinMode = hairpinMode plugin.cniConfig = &libcni.CNIConfig{ - Path: []string{DefaultCNIDir}, + Path: []string{DefaultCNIDir, plugin.vendorDir}, } if link, err := findMinMTU(); err == nil { diff --git a/pkg/kubelet/network/kubenet/kubenet_unsupported.go b/pkg/kubelet/network/kubenet/kubenet_unsupported.go index d2408bc25f..e41eaeeb38 100644 --- a/pkg/kubelet/network/kubenet/kubenet_unsupported.go +++ b/pkg/kubelet/network/kubenet/kubenet_unsupported.go @@ -30,7 +30,7 @@ type kubenetNetworkPlugin struct { network.NoopNetworkPlugin } -func NewPlugin() network.NetworkPlugin { +func NewPlugin(networkPluginDir string) network.NetworkPlugin { return &kubenetNetworkPlugin{} }