From 4fe13c2a994babf3cc3da6f59980b7de9833700f Mon Sep 17 00:00:00 2001 From: "chenjun.cj" Date: Fri, 22 Feb 2019 11:45:57 +0800 Subject: [PATCH] sync CNI config in goroutine --- pkg/kubelet/dockershim/network/cni/BUILD | 1 + pkg/kubelet/dockershim/network/cni/cni.go | 13 ++++++++++--- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/pkg/kubelet/dockershim/network/cni/BUILD b/pkg/kubelet/dockershim/network/cni/BUILD index 8691c7344f..8813215ff8 100644 --- a/pkg/kubelet/dockershim/network/cni/BUILD +++ b/pkg/kubelet/dockershim/network/cni/BUILD @@ -20,6 +20,7 @@ go_library( "//pkg/kubelet/container:go_default_library", "//pkg/kubelet/dockershim/network:go_default_library", "//pkg/util/bandwidth:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library", "//vendor/github.com/containernetworking/cni/libcni:go_default_library", "//vendor/github.com/containernetworking/cni/pkg/types:go_default_library", "//vendor/k8s.io/klog:go_default_library", diff --git a/pkg/kubelet/dockershim/network/cni/cni.go b/pkg/kubelet/dockershim/network/cni/cni.go index 77546a0974..af5bb74def 100644 --- a/pkg/kubelet/dockershim/network/cni/cni.go +++ b/pkg/kubelet/dockershim/network/cni/cni.go @@ -24,9 +24,11 @@ import ( "sort" "strings" "sync" + "time" "github.com/containernetworking/cni/libcni" cnitypes "github.com/containernetworking/cni/pkg/types" + "k8s.io/apimachinery/pkg/util/wait" "k8s.io/klog" kubeletconfig "k8s.io/kubernetes/pkg/kubelet/apis/config" runtimeapi "k8s.io/kubernetes/pkg/kubelet/apis/cri/runtime/v1alpha2" @@ -38,6 +40,10 @@ import ( const ( CNIPluginName = "cni" + + // defaultSyncConfigPeriod is the default period to sync CNI config + // TODO: consider making this value configurable or to be a more appropriate value. + defaultSyncConfigPeriod = time.Second * 5 ) type cniNetworkPlugin struct { @@ -194,6 +200,10 @@ func (plugin *cniNetworkPlugin) Init(host network.Host, hairpinMode kubeletconfi plugin.host = host plugin.syncNetworkConfig() + + // start a goroutine to sync network config from confDir periodically to detect network config updates in every 5 seconds + go wait.Forever(plugin.syncNetworkConfig, defaultSyncConfigPeriod) + return nil } @@ -264,9 +274,6 @@ func (plugin *cniNetworkPlugin) Name() string { } func (plugin *cniNetworkPlugin) Status() error { - // sync network config from confDir periodically to detect network config updates - plugin.syncNetworkConfig() - // Can't set up pods if we don't have any CNI network configs yet return plugin.checkInitialized() }