diff --git a/pkg/features/kube_features.go b/pkg/features/kube_features.go index 65250c499d4..c152b9caa97 100644 --- a/pkg/features/kube_features.go +++ b/pkg/features/kube_features.go @@ -304,6 +304,13 @@ const ( // Allow subpath environment variable substitution // Only applicable if the VolumeSubpath feature is also enabled VolumeSubpathEnvExpansion utilfeature.Feature = "VolumeSubpathEnvExpansion" + + // owner: @vikaschoudhary16 + // alpha: v1.11 + // + // + // Enable probe based plugin watcher utility for discovering Kubelet plugins + KubeletPluginsWatcher utilfeature.Feature = "KubeletPluginsWatcher" ) func init() { @@ -356,6 +363,7 @@ var defaultKubernetesFeatureGates = map[utilfeature.Feature]utilfeature.FeatureS BalanceAttachedNodeVolumes: {Default: false, PreRelease: utilfeature.Alpha}, DynamicProvisioningScheduling: {Default: false, PreRelease: utilfeature.Alpha}, VolumeSubpathEnvExpansion: {Default: false, PreRelease: utilfeature.Alpha}, + KubeletPluginsWatcher: {Default: false, PreRelease: utilfeature.Alpha}, // inherited features from generic apiserver, relisted here to get a conflict if it is changed // unintentionally on either side: diff --git a/pkg/kubelet/kubelet.go b/pkg/kubelet/kubelet.go index 8567f34e9d4..4b94359117e 100644 --- a/pkg/kubelet/kubelet.go +++ b/pkg/kubelet/kubelet.go @@ -540,6 +540,7 @@ func NewMainKubelet(kubeCfg *kubeletconfiginternal.KubeletConfiguration, experimentalHostUserNamespaceDefaulting: utilfeature.DefaultFeatureGate.Enabled(features.ExperimentalHostUserNamespaceDefaultingGate), keepTerminatedPodVolumes: keepTerminatedPodVolumes, nodeStatusMaxImages: nodeStatusMaxImages, + enablePluginsWatcher: utilfeature.DefaultFeatureGate.Enabled(features.KubeletPluginsWatcher), } if klet.cloud != nil { @@ -1172,6 +1173,9 @@ type Kubelet struct { // This flag sets a maximum number of images to report in the node status. nodeStatusMaxImages int32 + + // This flag indicates that kubelet should start plugin watcher utility server for discovering Kubelet plugins + enablePluginsWatcher bool } func allGlobalUnicastIPs() ([]net.IP, error) { @@ -1285,10 +1289,11 @@ func (kl *Kubelet) initializeModules() error { glog.Errorf("Failed to create directory %q: %v", ContainerLogsDir, err) } } - - // Start the plugin watcher - if err := kl.pluginWatcher.Start(); err != nil { - return fmt.Errorf("failed to start Plugin Watcher. err: %v", err) + if kl.enablePluginsWatcher { + // Start the plugin watcher + if err := kl.pluginWatcher.Start(); err != nil { + return fmt.Errorf("failed to start Plugin Watcher. err: %v", err) + } } // Start the image manager.