Change:
<!-- This form is for bug reports and feature requests ONLY! If you're looking for help check and the . If this may be security issue, please disclose it privately via --Is this a BUG REPORT or FEATURE REQUEST?: What happened: PR introduced a new kubelet plugin registration mechanism. It is not flag gated. What you expected to happen: Since this feature is alpha, it should be flag gated and disabled by default (opt-in). How to reproduce it (as minimally and precisely as possible): Anything else we need to know?: Environment: Kubernetes version (use ): Cloud provider or hardware configuration: OS (e.g. from /etc/os-release): Kernel (e.g. ): Install tools: Others: CC
[MILESTONENOTIFIER] Milestone Issue Needs Attention Action required: During code slush, issues in the milestone should be in progress. If this issue is not being actively worked on, please remove it from the milestone. If it is being worked on, please add the label so it can be tracked with other in-flight issues. Note: This issue is marked as , and must be updated every 3 days during code slush. Example update: <details<summaryIssue Labels</summary- : Issue will be escalated to these SIGs if needed. : Never automatically move issue out of a release milestone; continually escalate to contributor and SIG through all available channels. : Fixes a bug discovered during the current release. </details<details<summaryHelp</summary<ul<li<a href=""Additional instructions</a</li<li<a href=""Commands for setting labels</a</li</ul</details

Discussion:
// Allow subpath environment variable substitution // Only applicable if the VolumeSubpath feature is also enabled VolumeSubpathEnvExpansion utilfeature.Feature = "VolumeSubpathEnvExpansion" <ins> // owner: @vikaschoudhary16 // alpha: v1.11 // // // Enable probe based plugin watcher utility for discovering Kubelet plugins KubeletPluginsWatcher utilfeature.Feature = "KubeletPluginsWatcher" </ins> ) func init() {

BalanceAttachedNodeVolumes:                  {Default: false, PreRelease: utilfeature.Alpha}, DynamicProvisioningScheduling:               {Default: false, PreRelease: utilfeature.Alpha}, VolumeSubpathEnvExpansion:                   {Default: false, PreRelease: utilfeature.Alpha}, <ins> KubeletPluginsWatcher:                       {Default: false, PreRelease: utilfeature.Alpha}, </ins> // inherited features from generic apiserver, relisted here to get a conflict if it is changed // unintentionally on either side:

experimentalHostUserNamespaceDefaulting: utilfeature.DefaultFeatureGate.Enabled(features.ExperimentalHostUserNamespaceDefaultingGate), keepTerminatedPodVolumes:                keepTerminatedPodVolumes, nodeStatusMaxImages:                     nodeStatusMaxImages, <ins> enablePluginsWatcher:                    utilfeature.DefaultFeatureGate.Enabled(features.KubeletPluginsWatcher), </ins> } if klet.cloud != nil {

// This flag sets a maximum number of images to report in the node status. nodeStatusMaxImages int32 <ins> //  This flag indicates that kubelet should start plugin watcher utility server for discovering Kubelet plugins enablePluginsWatcher bool </ins> } func allGlobalUnicastIPs() ([]net.IP, error) {

glog.Errorf("Failed to create directory %q: %v", ContainerLogsDir, err) } } <del> // Start the plugin watcher if err := kl.pluginWatcher.Start(); err != nil { return fmt.Errorf("failed to start Plugin Watcher. err: %v", err) </del> <ins> 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) } </ins> } // Start the image manager.