k8s.io/kubernetes@v1.29.3/pkg/features/kube_features.go (about)

     1  /*
     2  Copyright 2017 The Kubernetes Authors.
     3  
     4  Licensed under the Apache License, Version 2.0 (the "License");
     5  you may not use this file except in compliance with the License.
     6  You may obtain a copy of the License at
     7  
     8      http://www.apache.org/licenses/LICENSE-2.0
     9  
    10  Unless required by applicable law or agreed to in writing, software
    11  distributed under the License is distributed on an "AS IS" BASIS,
    12  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    13  See the License for the specific language governing permissions and
    14  limitations under the License.
    15  */
    16  
    17  package features
    18  
    19  import (
    20  	apiextensionsfeatures "k8s.io/apiextensions-apiserver/pkg/features"
    21  	"k8s.io/apimachinery/pkg/util/runtime"
    22  	genericfeatures "k8s.io/apiserver/pkg/features"
    23  	utilfeature "k8s.io/apiserver/pkg/util/feature"
    24  	"k8s.io/component-base/featuregate"
    25  )
    26  
    27  const (
    28  	// Every feature gate should add method here following this template:
    29  	//
    30  	// // owner: @username
    31  	// // kep: https://kep.k8s.io/NNN
    32  	// // alpha: v1.X
    33  	// MyFeature featuregate.Feature = "MyFeature"
    34  	//
    35  	// Feature gates should be listed in alphabetical, case-sensitive
    36  	// (upper before any lower case character) order. This reduces the risk
    37  	// of code conflicts because changes are more likely to be scattered
    38  	// across the file.
    39  
    40  	// owner: @ttakahashi21 @mkimuram
    41  	// kep: https://kep.k8s.io/3294
    42  	// alpha: v1.26
    43  	//
    44  	// Enable usage of Provision of PVCs from snapshots in other namespaces
    45  	CrossNamespaceVolumeDataSource featuregate.Feature = "CrossNamespaceVolumeDataSource"
    46  
    47  	// owner: @thockin
    48  	// deprecated: v1.29
    49  	//
    50  	// Enables Service.status.ingress.loadBanace to be set on
    51  	// services of types other than LoadBalancer.
    52  	AllowServiceLBStatusOnNonLB featuregate.Feature = "AllowServiceLBStatusOnNonLB"
    53  
    54  	// owner: @bswartz
    55  	// alpha: v1.18
    56  	// beta: v1.24
    57  	//
    58  	// Enables usage of any object for volume data source in PVCs
    59  	AnyVolumeDataSource featuregate.Feature = "AnyVolumeDataSource"
    60  
    61  	// owner: @nabokihms
    62  	// alpha: v1.26
    63  	// beta: v1.27
    64  	// GA: v1.28
    65  	//
    66  	// Enables API to get self subject attributes after authentication.
    67  	APISelfSubjectReview featuregate.Feature = "APISelfSubjectReview"
    68  
    69  	// owner: @tallclair
    70  	// beta: v1.4
    71  	AppArmor featuregate.Feature = "AppArmor"
    72  
    73  	// owner: @danwinship
    74  	// alpha: v1.27
    75  	// beta: v1.29
    76  	//
    77  	// Enables dual-stack --node-ip in kubelet with external cloud providers
    78  	CloudDualStackNodeIPs featuregate.Feature = "CloudDualStackNodeIPs"
    79  
    80  	// owner: @ahmedtd
    81  	// alpha: v1.26
    82  	//
    83  	// Enable ClusterTrustBundle objects and Kubelet integration.
    84  	ClusterTrustBundle featuregate.Feature = "ClusterTrustBundle"
    85  
    86  	// owner: @ahmedtd
    87  	// alpha: v1.28
    88  	//
    89  	// Enable ClusterTrustBundle Kubelet projected volumes.  Depends on ClusterTrustBundle.
    90  	ClusterTrustBundleProjection featuregate.Feature = "ClusterTrustBundleProjection"
    91  
    92  	// owner: @szuecs
    93  	// alpha: v1.12
    94  	//
    95  	// Enable nodes to change CPUCFSQuotaPeriod
    96  	CPUCFSQuotaPeriod featuregate.Feature = "CustomCPUCFSQuotaPeriod"
    97  
    98  	// owner: @ConnorDoyle, @fromanirh (only for GA graduation)
    99  	// alpha: v1.8
   100  	// beta: v1.10
   101  	// GA: v1.26
   102  	//
   103  	// Alternative container-level CPU affinity policies.
   104  	CPUManager featuregate.Feature = "CPUManager"
   105  
   106  	// owner: @fromanirh
   107  	// alpha: v1.23
   108  	// beta: see below.
   109  	//
   110  	// Allow fine-tuning of cpumanager policies, experimental, alpha-quality options
   111  	// Per https://groups.google.com/g/kubernetes-sig-architecture/c/Nxsc7pfe5rw/m/vF2djJh0BAAJ
   112  	// We want to avoid a proliferation of feature gates. This feature gate:
   113  	// - will guard *a group* of cpumanager options whose quality level is alpha.
   114  	// - will never graduate to beta or stable.
   115  	// See https://groups.google.com/g/kubernetes-sig-architecture/c/Nxsc7pfe5rw/m/vF2djJh0BAAJ
   116  	// for details about the removal of this feature gate.
   117  	CPUManagerPolicyAlphaOptions featuregate.Feature = "CPUManagerPolicyAlphaOptions"
   118  
   119  	// owner: @fromanirh
   120  	// beta: v1.23
   121  	// beta: see below.
   122  	//
   123  	// Allow fine-tuning of cpumanager policies, experimental, beta-quality options
   124  	// Per https://groups.google.com/g/kubernetes-sig-architecture/c/Nxsc7pfe5rw/m/vF2djJh0BAAJ
   125  	// We want to avoid a proliferation of feature gates. This feature gate:
   126  	// - will guard *a group* of cpumanager options whose quality level is beta.
   127  	// - is thus *introduced* as beta
   128  	// - will never graduate to stable.
   129  	// See https://groups.google.com/g/kubernetes-sig-architecture/c/Nxsc7pfe5rw/m/vF2djJh0BAAJ
   130  	// for details about the removal of this feature gate.
   131  	CPUManagerPolicyBetaOptions featuregate.Feature = "CPUManagerPolicyBetaOptions"
   132  
   133  	// owner: @fromanirh
   134  	// alpha: v1.22
   135  	// beta: v1.23
   136  	//
   137  	// Allow the usage of options to fine-tune the cpumanager policies.
   138  	CPUManagerPolicyOptions featuregate.Feature = "CPUManagerPolicyOptions"
   139  
   140  	// owner: @andyzhangx
   141  	// alpha: v1.15
   142  	// beta: v1.21
   143  	// GA: v1.26
   144  	//
   145  	// Enables the Azure File in-tree driver to Azure File Driver migration feature.
   146  	CSIMigrationAzureFile featuregate.Feature = "CSIMigrationAzureFile"
   147  
   148  	// owner: @mfordjody
   149  	// alpha: v1.26
   150  	//
   151  	// Bypasses obsolete validation that GCP volumes are read-only when used in
   152  	// Deployments.
   153  	SkipReadOnlyValidationGCE featuregate.Feature = "SkipReadOnlyValidationGCE"
   154  
   155  	// owner: @trierra
   156  	// alpha: v1.23
   157  	//
   158  	// Enables the Portworx in-tree driver to Portworx migration feature.
   159  	CSIMigrationPortworx featuregate.Feature = "CSIMigrationPortworx"
   160  
   161  	// owner: @humblec
   162  	// alpha: v1.23
   163  	// deprecated: v1.28
   164  	//
   165  	// Enables the RBD in-tree driver to RBD CSI Driver  migration feature.
   166  	CSIMigrationRBD featuregate.Feature = "CSIMigrationRBD"
   167  
   168  	// owner: @humblec, @zhucan
   169  	// kep: https://kep.k8s.io/3171
   170  	// alpha: v1.25
   171  	// beta: v1.27
   172  	// GA: v1.29
   173  	// Enables SecretRef field in CSI NodeExpandVolume request.
   174  	CSINodeExpandSecret featuregate.Feature = "CSINodeExpandSecret"
   175  
   176  	// owner: @fengzixu
   177  	// alpha: v1.21
   178  	//
   179  	// Enables kubelet to detect CSI volume condition and send the event of the abnormal volume to the corresponding pod that is using it.
   180  	CSIVolumeHealth featuregate.Feature = "CSIVolumeHealth"
   181  
   182  	// owner: @seans3
   183  	// kep: http://kep.k8s.io/4006
   184  	// alpha: v1.29
   185  	//
   186  	// Enables StreamTranslator proxy to handle WebSockets upgrade requests for the
   187  	// version of the RemoteCommand subprotocol that supports the "close" signal.
   188  	TranslateStreamCloseWebsocketRequests featuregate.Feature = "TranslateStreamCloseWebsocketRequests"
   189  
   190  	// owner: @nckturner
   191  	// kep:  http://kep.k8s.io/2699
   192  	// alpha: v1.27
   193  	// Enable webhooks in cloud controller manager
   194  	CloudControllerManagerWebhook featuregate.Feature = "CloudControllerManagerWebhook"
   195  
   196  	// owner: @adrianreber
   197  	// kep: https://kep.k8s.io/2008
   198  	// alpha: v1.25
   199  	//
   200  	// Enables container Checkpoint support in the kubelet
   201  	ContainerCheckpoint featuregate.Feature = "ContainerCheckpoint"
   202  
   203  	// owner: @bhcleek @wzshiming
   204  	// GA: v1.25
   205  	//
   206  	// Normalize HttpGet URL and Header passing for lifecycle handlers with probers.
   207  	ConsistentHTTPGetHandlers featuregate.Feature = "ConsistentHTTPGetHandlers"
   208  
   209  	// owner: @helayoty
   210  	// beta: v1.28
   211  	// Set the scheduled time as an annotation in the job.
   212  	CronJobsScheduledAnnotation featuregate.Feature = "CronJobsScheduledAnnotation"
   213  
   214  	// owner: @thockin
   215  	// deprecated: v1.28
   216  	//
   217  	// Changes when the default value of PodSpec.containers[].ports[].hostPort
   218  	// is assigned.  The default is to only set a default value in Pods.
   219  	// Enabling this means a default will be assigned even to embeddedPodSpecs
   220  	// (e.g. in a Deployment), which is the historical default.
   221  	DefaultHostNetworkHostPortsInPodTemplates featuregate.Feature = "DefaultHostNetworkHostPortsInPodTemplates"
   222  
   223  	// owner: @elezar
   224  	// kep: http://kep.k8s.io/4009
   225  	// alpha: v1.28
   226  	// beta: v1.29
   227  	//
   228  	// Add support for CDI Device IDs in the Device Plugin API.
   229  	DevicePluginCDIDevices featuregate.Feature = "DevicePluginCDIDevices"
   230  
   231  	// owner: @andrewsykim
   232  	// alpha: v1.22
   233  	// beta: v1.29
   234  	//
   235  	// Disable any functionality in kube-apiserver, kube-controller-manager and kubelet related to the `--cloud-provider` component flag.
   236  	DisableCloudProviders featuregate.Feature = "DisableCloudProviders"
   237  
   238  	// owner: @andrewsykim
   239  	// alpha: v1.23
   240  	// beta: v1.29
   241  	//
   242  	// Disable in-tree functionality in kubelet to authenticate to cloud provider container registries for image pull credentials.
   243  	DisableKubeletCloudCredentialProviders featuregate.Feature = "DisableKubeletCloudCredentialProviders"
   244  
   245  	// owner: @HirazawaUi
   246  	// kep: http://kep.k8s.io/4004
   247  	// alpha: v1.29
   248  	// DisableNodeKubeProxyVersion disable the status.nodeInfo.kubeProxyVersion field of v1.Node
   249  	DisableNodeKubeProxyVersion featuregate.Feature = "DisableNodeKubeProxyVersion"
   250  
   251  	// owner: @pohly
   252  	// kep: http://kep.k8s.io/3063
   253  	// alpha: v1.26
   254  	//
   255  	// Enables support for resources with custom parameters and a lifecycle
   256  	// that is independent of a Pod.
   257  	DynamicResourceAllocation featuregate.Feature = "DynamicResourceAllocation"
   258  
   259  	// owner: @harche
   260  	// kep: http://kep.k8s.io/3386
   261  	// alpha: v1.25
   262  	//
   263  	// Allows using event-driven PLEG (pod lifecycle event generator) through kubelet
   264  	// which avoids frequent relisting of containers which helps optimize performance.
   265  	EventedPLEG featuregate.Feature = "EventedPLEG"
   266  
   267  	// owner: @andrewsykim @SergeyKanzhelev
   268  	// GA: v1.20
   269  	//
   270  	// Ensure kubelet respects exec probe timeouts. Feature gate exists in-case existing workloads
   271  	// may depend on old behavior where exec probe timeouts were ignored.
   272  	// Lock to default and remove after v1.22 based on user feedback that should be reflected in KEP #1972 update
   273  	ExecProbeTimeout featuregate.Feature = "ExecProbeTimeout"
   274  
   275  	// owner: @gjkim42
   276  	// kep: https://kep.k8s.io/2595
   277  	// alpha: v1.22
   278  	// beta: v1.26
   279  	// GA: v1.28
   280  	//
   281  	// Enables apiserver and kubelet to allow up to 32 DNSSearchPaths and up to 2048 DNSSearchListChars.
   282  	ExpandedDNSConfig featuregate.Feature = "ExpandedDNSConfig"
   283  
   284  	// owner: @pweil-
   285  	// alpha: v1.5
   286  	// deprecated: v1.28
   287  	//
   288  	// This flag used to be needed for dockershim CRI and currently does nothing.
   289  	ExperimentalHostUserNamespaceDefaultingGate featuregate.Feature = "ExperimentalHostUserNamespaceDefaulting"
   290  
   291  	// owner: @bobbypage
   292  	// alpha: v1.20
   293  	// beta:  v1.21
   294  	// Adds support for kubelet to detect node shutdown and gracefully terminate pods prior to the node being shutdown.
   295  	GracefulNodeShutdown featuregate.Feature = "GracefulNodeShutdown"
   296  
   297  	// owner: @wzshiming
   298  	// alpha: v1.23
   299  	// beta:  v1.24
   300  	// Make the kubelet use shutdown configuration based on pod priority values for graceful shutdown.
   301  	GracefulNodeShutdownBasedOnPodPriority featuregate.Feature = "GracefulNodeShutdownBasedOnPodPriority"
   302  
   303  	// owner: @arjunrn @mwielgus @josephburnett @sanposhiho
   304  	// kep: https://kep.k8s.io/1610
   305  	// alpha: v1.20
   306  	// beta:  v1.27
   307  	//
   308  	// Add support for the HPA to scale based on metrics from individual containers
   309  	// in target pods
   310  	HPAContainerMetrics featuregate.Feature = "HPAContainerMetrics"
   311  
   312  	// owner: @dxist
   313  	// alpha: v1.16
   314  	//
   315  	// Enables support of HPA scaling to zero pods when an object or custom metric is configured.
   316  	HPAScaleToZero featuregate.Feature = "HPAScaleToZero"
   317  
   318  	// owner: @deepakkinni @xing-yang
   319  	// kep: https://kep.k8s.io/2680
   320  	// alpha: v1.23
   321  	//
   322  	// Honor Persistent Volume Reclaim Policy when it is "Delete" irrespective of PV-PVC
   323  	// deletion ordering.
   324  	HonorPVReclaimPolicy featuregate.Feature = "HonorPVReclaimPolicy"
   325  
   326  	// owner: @leakingtapan
   327  	// alpha: v1.21
   328  	//
   329  	// Disables the AWS EBS in-tree driver.
   330  	InTreePluginAWSUnregister featuregate.Feature = "InTreePluginAWSUnregister"
   331  
   332  	// owner: @andyzhangx
   333  	// alpha: v1.21
   334  	//
   335  	// Disables the Azure Disk in-tree driver.
   336  	InTreePluginAzureDiskUnregister featuregate.Feature = "InTreePluginAzureDiskUnregister"
   337  
   338  	// owner: @andyzhangx
   339  	// alpha: v1.21
   340  	//
   341  	// Disables the Azure File in-tree driver.
   342  	InTreePluginAzureFileUnregister featuregate.Feature = "InTreePluginAzureFileUnregister"
   343  
   344  	// owner: @Jiawei0227
   345  	// alpha: v1.21
   346  	//
   347  	// Disables the GCE PD in-tree driver.
   348  	InTreePluginGCEUnregister featuregate.Feature = "InTreePluginGCEUnregister"
   349  
   350  	// owner: @adisky
   351  	// alpha: v1.21
   352  	//
   353  	// Disables the OpenStack Cinder in-tree driver.
   354  	InTreePluginOpenStackUnregister featuregate.Feature = "InTreePluginOpenStackUnregister"
   355  
   356  	// owner: @trierra
   357  	// alpha: v1.23
   358  	//
   359  	// Disables the Portworx in-tree driver.
   360  	InTreePluginPortworxUnregister featuregate.Feature = "InTreePluginPortworxUnregister"
   361  
   362  	// owner: @humblec
   363  	// alpha: v1.23
   364  	// deprecated: v1.28
   365  	//
   366  	// Disables the RBD in-tree driver.
   367  	InTreePluginRBDUnregister featuregate.Feature = "InTreePluginRBDUnregister"
   368  
   369  	// owner: @divyenpatel
   370  	// alpha: v1.21
   371  	//
   372  	// Disables the vSphere in-tree driver.
   373  	InTreePluginvSphereUnregister featuregate.Feature = "InTreePluginvSphereUnregister"
   374  
   375  	// owner: @danwinship
   376  	// kep: https://kep.k8s.io/3178
   377  	// alpha: v1.25
   378  	// beta: v1.27
   379  	// stable: v1.28
   380  	//
   381  	// Causes kubelet to no longer create legacy IPTables rules
   382  	IPTablesOwnershipCleanup featuregate.Feature = "IPTablesOwnershipCleanup"
   383  
   384  	// owner: @mimowo
   385  	// kep: https://kep.k8s.io/3850
   386  	// alpha: v1.28
   387  	// beta: v1.29
   388  	//
   389  	// Allows users to specify counting of failed pods per index.
   390  	JobBackoffLimitPerIndex featuregate.Feature = "JobBackoffLimitPerIndex"
   391  
   392  	// owner: @mimowo
   393  	// kep: https://kep.k8s.io/3329
   394  	// alpha: v1.25
   395  	// beta: v1.26
   396  	//
   397  	// Allow users to specify handling of pod failures based on container exit codes
   398  	// and pod conditions.
   399  	JobPodFailurePolicy featuregate.Feature = "JobPodFailurePolicy"
   400  
   401  	// owner: @kannon92
   402  	// kep : https://kep.k8s.io/3939
   403  	// alpha: v1.28
   404  	// beta: v1.29
   405  	//
   406  	// Allow users to specify recreating pods of a job only when
   407  	// pods have fully terminated.
   408  	JobPodReplacementPolicy featuregate.Feature = "JobPodReplacementPolicy"
   409  	// owner: @alculquicondor
   410  	// alpha: v1.23
   411  	// beta: v1.24
   412  	//
   413  	// Track the number of pods with Ready condition in the Job status.
   414  	JobReadyPods featuregate.Feature = "JobReadyPods"
   415  
   416  	// owner: @marquiz
   417  	// kep: http://kep.k8s.io/4033
   418  	// alpha: v1.28
   419  	//
   420  	// Enable detection of the kubelet cgroup driver configuration option from
   421  	// the CRI.  The CRI runtime also needs to support this feature in which
   422  	// case the kubelet will ignore the cgroupDriver (--cgroup-driver)
   423  	// configuration option. If runtime doesn't support it, the kubelet will
   424  	// fallback to using it's cgroupDriver option.
   425  	KubeletCgroupDriverFromCRI featuregate.Feature = "KubeletCgroupDriverFromCRI"
   426  
   427  	// owner: @AkihiroSuda
   428  	// alpha: v1.22
   429  	//
   430  	// Enables support for running kubelet in a user namespace.
   431  	// The user namespace has to be created before running kubelet.
   432  	// All the node components such as CRI need to be running in the same user namespace.
   433  	KubeletInUserNamespace featuregate.Feature = "KubeletInUserNamespace"
   434  
   435  	// owner: @dashpole, @ffromani (only for GA graduation)
   436  	// alpha: v1.13
   437  	// beta: v1.15
   438  	// GA: v1.28
   439  	//
   440  	// Enables the kubelet's pod resources grpc endpoint
   441  	KubeletPodResources featuregate.Feature = "KubeletPodResources"
   442  
   443  	// owner: @moshe010
   444  	// alpha: v1.27
   445  	//
   446  	// Enable POD resources API to return resources allocated by Dynamic Resource Allocation
   447  	KubeletPodResourcesDynamicResources featuregate.Feature = "KubeletPodResourcesDynamicResources"
   448  
   449  	// owner: @moshe010
   450  	// alpha: v1.27
   451  	//
   452  	// Enable POD resources API with Get method
   453  	KubeletPodResourcesGet featuregate.Feature = "KubeletPodResourcesGet"
   454  
   455  	// owner: @ffromani
   456  	// alpha: v1.21
   457  	// beta: v1.23
   458  	// GA: v1.28
   459  	// Enable POD resources API to return allocatable resources
   460  	KubeletPodResourcesGetAllocatable featuregate.Feature = "KubeletPodResourcesGetAllocatable"
   461  
   462  	// KubeletSeparateDiskGC enables Kubelet to garbage collection images/containers on different filesystems
   463  	// owner: @kannon92
   464  	// kep: https://kep.k8s.io/4191
   465  	// alpha: v1.29
   466  	KubeletSeparateDiskGC featuregate.Feature = "KubeletSeparateDiskGC"
   467  
   468  	// owner: @sallyom
   469  	// kep: https://kep.k8s.io/2832
   470  	// alpha: v1.25
   471  	// beta: v1.27
   472  	//
   473  	// Add support for distributed tracing in the kubelet
   474  	KubeletTracing featuregate.Feature = "KubeletTracing"
   475  
   476  	// owner: @alexanderConstantinescu
   477  	// kep: http://kep.k8s.io/3836
   478  	// alpha: v1.28
   479  	//
   480  	// Implement connection draining for terminating nodes for
   481  	// `externalTrafficPolicy: Cluster` services.
   482  	KubeProxyDrainingTerminatingNodes featuregate.Feature = "KubeProxyDrainingTerminatingNodes"
   483  
   484  	// owner: @zshihang
   485  	// kep: http://kep.k8s.io/2800
   486  	// alpha: v1.26
   487  	// beta: v1.27
   488  	//
   489  	// Enables tracking of secret-based service account tokens usage.
   490  	LegacyServiceAccountTokenTracking featuregate.Feature = "LegacyServiceAccountTokenTracking"
   491  
   492  	// owner: @yt2985
   493  	// kep: http://kep.k8s.io/2800
   494  	// alpha: v1.28
   495  	// beta: v1.29
   496  	//
   497  	// Enables cleaning up of secret-based service account tokens.
   498  	LegacyServiceAccountTokenCleanUp featuregate.Feature = "LegacyServiceAccountTokenCleanUp"
   499  
   500  	// owner: @RobertKrawitz
   501  	// alpha: v1.15
   502  	//
   503  	// Allow use of filesystems for ephemeral storage monitoring.
   504  	// Only applies if LocalStorageCapacityIsolation is set.
   505  	LocalStorageCapacityIsolationFSQuotaMonitoring featuregate.Feature = "LocalStorageCapacityIsolationFSQuotaMonitoring"
   506  
   507  	// owner: @damemi
   508  	// alpha: v1.21
   509  	// beta: v1.22
   510  	//
   511  	// Enables scaling down replicas via logarithmic comparison of creation/ready timestamps
   512  	LogarithmicScaleDown featuregate.Feature = "LogarithmicScaleDown"
   513  
   514  	// owner: @sanposhiho
   515  	// kep: https://kep.k8s.io/3633
   516  	// alpha: v1.29
   517  	//
   518  	// Enables the MatchLabelKeys and MismatchLabelKeys in PodAffinity and PodAntiAffinity.
   519  	MatchLabelKeysInPodAffinity featuregate.Feature = "MatchLabelKeysInPodAffinity"
   520  
   521  	// owner: @denkensk
   522  	// kep: https://kep.k8s.io/3243
   523  	// alpha: v1.25
   524  	// beta: v1.27
   525  	//
   526  	// Enable MatchLabelKeys in PodTopologySpread.
   527  	MatchLabelKeysInPodTopologySpread featuregate.Feature = "MatchLabelKeysInPodTopologySpread"
   528  
   529  	// owner: @krmayankk
   530  	// alpha: v1.24
   531  	//
   532  	// Enables maxUnavailable for StatefulSet
   533  	MaxUnavailableStatefulSet featuregate.Feature = "MaxUnavailableStatefulSet"
   534  
   535  	// owner: @cynepco3hahue(alukiano) @cezaryzukowski @k-wiatrzyk
   536  	// alpha: v1.21
   537  	// beta: v1.22
   538  	// Allows setting memory affinity for a container based on NUMA topology
   539  	MemoryManager featuregate.Feature = "MemoryManager"
   540  
   541  	// owner: @xiaoxubeii
   542  	// kep: https://kep.k8s.io/2570
   543  	// alpha: v1.22
   544  	//
   545  	// Enables kubelet to support memory QoS with cgroups v2.
   546  	MemoryQoS featuregate.Feature = "MemoryQoS"
   547  
   548  	// owner: @sanposhiho
   549  	// kep: https://kep.k8s.io/3022
   550  	// alpha: v1.24
   551  	// beta: v1.25
   552  	//
   553  	// Enable MinDomains in Pod Topology Spread.
   554  	MinDomainsInPodTopologySpread featuregate.Feature = "MinDomainsInPodTopologySpread"
   555  
   556  	// owner: @danwinship
   557  	// kep: http://kep.k8s.io/3453
   558  	// alpha: v1.26
   559  	// beta: v1.27
   560  	//
   561  	// Enables new performance-improving code in kube-proxy iptables mode
   562  	MinimizeIPTablesRestore featuregate.Feature = "MinimizeIPTablesRestore"
   563  
   564  	// owner: @aojea
   565  	// kep: https://kep.k8s.io/1880
   566  	// alpha: v1.27
   567  	//
   568  	// Enables the dynamic configuration of Service IP ranges
   569  	MultiCIDRServiceAllocator featuregate.Feature = "MultiCIDRServiceAllocator"
   570  
   571  	// owner: @jsafrane
   572  	// kep: https://kep.k8s.io/3756
   573  	// alpha: v1.25 (as part of SELinuxMountReadWriteOncePod)
   574  	// beta: v1.27
   575  	// Robust VolumeManager reconstruction after kubelet restart.
   576  	NewVolumeManagerReconstruction featuregate.Feature = "NewVolumeManagerReconstruction"
   577  
   578  	// owner: @danwinship
   579  	// kep: https://kep.k8s.io/3866
   580  	// alpha: v1.29
   581  	//
   582  	// Allows running kube-proxy with `--mode nftables`.
   583  	NFTablesProxyMode featuregate.Feature = "NFTablesProxyMode"
   584  
   585  	// owner: @aravindhp @LorbusChris
   586  	// kep: http://kep.k8s.io/2271
   587  	// alpha: v1.27
   588  	//
   589  	// Enables querying logs of node services using the /logs endpoint
   590  	NodeLogQuery featuregate.Feature = "NodeLogQuery"
   591  
   592  	// owner: @xing-yang @sonasingh46
   593  	// kep: https://kep.k8s.io/2268
   594  	// alpha: v1.24
   595  	// beta: v1.26
   596  	// GA: v1.28
   597  	//
   598  	// Allow pods to failover to a different node in case of non graceful node shutdown
   599  	NodeOutOfServiceVolumeDetach featuregate.Feature = "NodeOutOfServiceVolumeDetach"
   600  
   601  	// owner: @iholder101
   602  	// alpha: v1.22
   603  	// beta1: v1.28. For more info, please look at the KEP: https://kep.k8s.io/2400.
   604  	//
   605  	// Permits kubelet to run with swap enabled
   606  	NodeSwap featuregate.Feature = "NodeSwap"
   607  
   608  	// owner: @mortent, @atiratree, @ravig
   609  	// kep: http://kep.k8s.io/3018
   610  	// alpha: v1.26
   611  	// beta: v1.27
   612  	//
   613  	// Enables PDBUnhealthyPodEvictionPolicy for PodDisruptionBudgets
   614  	PDBUnhealthyPodEvictionPolicy featuregate.Feature = "PDBUnhealthyPodEvictionPolicy"
   615  
   616  	// owner: @RomanBednar
   617  	// kep: https://kep.k8s.io/3762
   618  	// alpha: v1.28
   619  	// beta: v1.29
   620  	//
   621  	// Adds a new field to persistent volumes which holds a timestamp of when the volume last transitioned its phase.
   622  	PersistentVolumeLastPhaseTransitionTime featuregate.Feature = "PersistentVolumeLastPhaseTransitionTime"
   623  
   624  	// owner: @haircommander
   625  	// kep: https://kep.k8s.io/2364
   626  	// alpha: v1.23
   627  	//
   628  	// Configures the Kubelet to use the CRI to populate pod and container stats, instead of supplimenting with stats from cAdvisor.
   629  	// Requires the CRI implementation supports supplying the required stats.
   630  	PodAndContainerStatsFromCRI featuregate.Feature = "PodAndContainerStatsFromCRI"
   631  
   632  	// owner: @ahg-g
   633  	// alpha: v1.21
   634  	// beta: v1.22
   635  	//
   636  	// Enables controlling pod ranking on replicaset scale-down.
   637  	PodDeletionCost featuregate.Feature = "PodDeletionCost"
   638  
   639  	// owner: @mimowo
   640  	// kep: https://kep.k8s.io/3329
   641  	// alpha: v1.25
   642  	// beta: v1.26
   643  	//
   644  	// Enables support for appending a dedicated pod condition indicating that
   645  	// the pod is being deleted due to a disruption.
   646  	PodDisruptionConditions featuregate.Feature = "PodDisruptionConditions"
   647  
   648  	// owner: @danielvegamyhre
   649  	// kep: https://kep.k8s.io/4017
   650  	// beta: v1.28
   651  	//
   652  	// Set pod completion index as a pod label for Indexed Jobs.
   653  	PodIndexLabel featuregate.Feature = "PodIndexLabel"
   654  
   655  	// owner: @ddebroy, @kannon92
   656  	// alpha: v1.25
   657  	// beta: v1.29
   658  	//
   659  	// Enables reporting of PodReadyToStartContainersCondition condition in pod status after pod
   660  	// sandbox creation and network configuration completes successfully
   661  	PodReadyToStartContainersCondition featuregate.Feature = "PodReadyToStartContainersCondition"
   662  
   663  	// owner: @wzshiming
   664  	// kep: http://kep.k8s.io/2681
   665  	// alpha: v1.28
   666  	// beta: v1.29
   667  	//
   668  	// Adds pod.status.hostIPs and downward API
   669  	PodHostIPs featuregate.Feature = "PodHostIPs"
   670  
   671  	// owner: @AxeZhan
   672  	// kep: http://kep.k8s.io/3960
   673  	// alpha: v1.29
   674  	//
   675  	// Enables SleepAction in container lifecycle hooks
   676  	PodLifecycleSleepAction featuregate.Feature = "PodLifecycleSleepAction"
   677  
   678  	// owner: @Huang-Wei
   679  	// kep: https://kep.k8s.io/3521
   680  	// alpha: v1.26
   681  	// beta: v1.27
   682  	//
   683  	// Enable users to specify when a Pod is ready for scheduling.
   684  	PodSchedulingReadiness featuregate.Feature = "PodSchedulingReadiness"
   685  
   686  	// owner: @jessfraz
   687  	// alpha: v1.12
   688  	//
   689  	// Enables control over ProcMountType for containers.
   690  	ProcMountType featuregate.Feature = "ProcMountType"
   691  
   692  	// owner: @andrewsykim
   693  	// kep: https://kep.k8s.io/1669
   694  	// alpha: v1.22
   695  	// beta: v1.26
   696  	// GA: v1.28
   697  	//
   698  	// Enable kube-proxy to handle terminating ednpoints when externalTrafficPolicy=Local
   699  	ProxyTerminatingEndpoints featuregate.Feature = "ProxyTerminatingEndpoints"
   700  
   701  	// owner: @sjenning
   702  	// alpha: v1.11
   703  	//
   704  	// Allows resource reservations at the QoS level preventing pods at lower QoS levels from
   705  	// bursting into resources requested at higher QoS levels (memory only for now)
   706  	QOSReserved featuregate.Feature = "QOSReserved"
   707  
   708  	// owner: @chrishenzie
   709  	// kep: https://kep.k8s.io/2485
   710  	// alpha: v1.22
   711  	// beta: v1.27
   712  	// GA: v1.29
   713  	//
   714  	// Enables usage of the ReadWriteOncePod PersistentVolume access mode.
   715  	ReadWriteOncePod featuregate.Feature = "ReadWriteOncePod"
   716  
   717  	// owner: @gnufied
   718  	// kep: https://kep.k8s.io/1790
   719  	// alpha: v1.23
   720  	//
   721  	// Allow users to recover from volume expansion failure
   722  	RecoverVolumeExpansionFailure featuregate.Feature = "RecoverVolumeExpansionFailure"
   723  
   724  	// owner: @mikedanese
   725  	// alpha: v1.7
   726  	// beta: v1.12
   727  	//
   728  	// Gets a server certificate for the kubelet from the Certificate Signing
   729  	// Request API instead of generating one self signed and auto rotates the
   730  	// certificate as expiration approaches.
   731  	RotateKubeletServerCertificate featuregate.Feature = "RotateKubeletServerCertificate"
   732  
   733  	// owner: @kiashok
   734  	// kep: https://kep.k8s.io/4216
   735  	// alpha: v1.29
   736  	//
   737  	// Adds support to pull images based on the runtime class specified.
   738  	RuntimeClassInImageCriAPI featuregate.Feature = "RuntimeClassInImageCriApi"
   739  
   740  	// owner: @danielvegamyhre
   741  	// kep: https://kep.k8s.io/2413
   742  	// beta: v1.27
   743  	//
   744  	// Allows mutating spec.completions for Indexed job when done in tandem with
   745  	// spec.parallelism. Specifically, spec.completions is mutable iff spec.completions
   746  	// equals to spec.parallelism before and after the update.
   747  	ElasticIndexedJob featuregate.Feature = "ElasticIndexedJob"
   748  
   749  	// owner: @sanposhiho
   750  	// kep: http://kep.k8s.io/4247
   751  	// beta: v1.28
   752  	//
   753  	// Enables the scheduler's enhancement called QueueingHints,
   754  	// which benefits to reduce the useless requeueing.
   755  	SchedulerQueueingHints featuregate.Feature = "SchedulerQueueingHints"
   756  
   757  	// owner: @mtardy
   758  	// alpha: v1.0
   759  	//
   760  	// Putting this admission plugin behind a feature gate is part of the
   761  	// deprecation process. For details about the removal see:
   762  	// https://github.com/kubernetes/kubernetes/issues/111516
   763  	SecurityContextDeny featuregate.Feature = "SecurityContextDeny"
   764  
   765  	// owner: @atosatto @yuanchen8911
   766  	// kep: http://kep.k8s.io/3902
   767  	// beta: v1.29
   768  	//
   769  	// Decouples Taint Eviction Controller, performing taint-based Pod eviction, from Node Lifecycle Controller.
   770  	SeparateTaintEvictionController featuregate.Feature = "SeparateTaintEvictionController"
   771  
   772  	// owner: @munnerz
   773  	// kep: http://kep.k8s.io/4193
   774  	// alpha: v1.29
   775  	//
   776  	// Controls whether JTIs (UUIDs) are embedded into generated service account tokens, and whether these JTIs are
   777  	// recorded into the audit log for future requests made by these tokens.
   778  	ServiceAccountTokenJTI featuregate.Feature = "ServiceAccountTokenJTI"
   779  
   780  	// owner: @munnerz
   781  	// kep: http://kep.k8s.io/4193
   782  	// alpha: v1.29
   783  	//
   784  	// Controls whether the apiserver supports binding service account tokens to Node objects.
   785  	ServiceAccountTokenNodeBinding featuregate.Feature = "ServiceAccountTokenNodeBinding"
   786  
   787  	// owner: @munnerz
   788  	// kep: http://kep.k8s.io/4193
   789  	// alpha: v1.29
   790  	//
   791  	// Controls whether the apiserver will validate Node claims in service account tokens.
   792  	ServiceAccountTokenNodeBindingValidation featuregate.Feature = "ServiceAccountTokenNodeBindingValidation"
   793  
   794  	// owner: @munnerz
   795  	// kep: http://kep.k8s.io/4193
   796  	// alpha: v1.29
   797  	//
   798  	// Controls whether the apiserver embeds the node name and uid for the associated node when issuing
   799  	// service account tokens bound to Pod objects.
   800  	ServiceAccountTokenPodNodeInfo featuregate.Feature = "ServiceAccountTokenPodNodeInfo"
   801  
   802  	// owner: @xuzhenglun
   803  	// kep: http://kep.k8s.io/3682
   804  	// alpha: v1.27
   805  	// beta: v1.28
   806  	// stable: v1.29
   807  	//
   808  	// Subdivide the NodePort range for dynamic and static port allocation.
   809  	ServiceNodePortStaticSubrange featuregate.Feature = "ServiceNodePortStaticSubrange"
   810  
   811  	// owner: @gjkim42 @SergeyKanzhelev @matthyx @tzneal
   812  	// kep: http://kep.k8s.io/753
   813  	// alpha: v1.28
   814  	//
   815  	// Introduces sidecar containers, a new type of init container that starts
   816  	// before other containers but remains running for the full duration of the
   817  	// pod's lifecycle and will not block pod termination.
   818  	SidecarContainers featuregate.Feature = "SidecarContainers"
   819  
   820  	// owner: @derekwaynecarr
   821  	// alpha: v1.20
   822  	// beta: v1.22
   823  	//
   824  	// Enables kubelet support to size memory backed volumes
   825  	SizeMemoryBackedVolumes featuregate.Feature = "SizeMemoryBackedVolumes"
   826  
   827  	// owner: @alexanderConstantinescu
   828  	// kep: http://kep.k8s.io/3458
   829  	// beta: v1.27
   830  	//
   831  	// Enables less load balancer re-configurations by the service controller
   832  	// (KCCM) as an effect of changing node state.
   833  	StableLoadBalancerNodeSet featuregate.Feature = "StableLoadBalancerNodeSet"
   834  
   835  	// owner: @mattcary
   836  	// alpha: v1.22
   837  	// beta: v1.27
   838  	//
   839  	// Enables policies controlling deletion of PVCs created by a StatefulSet.
   840  	StatefulSetAutoDeletePVC featuregate.Feature = "StatefulSetAutoDeletePVC"
   841  
   842  	// owner: @psch
   843  	// alpha: v1.26
   844  	// beta: v1.27
   845  	//
   846  	// Enables a StatefulSet to start from an arbitrary non zero ordinal
   847  	StatefulSetStartOrdinal featuregate.Feature = "StatefulSetStartOrdinal"
   848  
   849  	// owner: @robscott
   850  	// kep: https://kep.k8s.io/2433
   851  	// alpha: v1.21
   852  	// beta: v1.23
   853  	//
   854  	// Enables topology aware hints for EndpointSlices
   855  	TopologyAwareHints featuregate.Feature = "TopologyAwareHints"
   856  
   857  	// owner: @PiotrProkop
   858  	// kep: https://kep.k8s.io/3545
   859  	// alpha: v1.26
   860  	//
   861  	// Allow fine-tuning of topology manager policies with alpha options.
   862  	// This feature gate:
   863  	// - will guard *a group* of topology manager options whose quality level is alpha.
   864  	// - will never graduate to beta or stable.
   865  	TopologyManagerPolicyAlphaOptions featuregate.Feature = "TopologyManagerPolicyAlphaOptions"
   866  
   867  	// owner: @PiotrProkop
   868  	// kep: https://kep.k8s.io/3545
   869  	// alpha: v1.26
   870  	//
   871  	// Allow fine-tuning of topology manager policies with beta options.
   872  	// This feature gate:
   873  	// - will guard *a group* of topology manager options whose quality level is beta.
   874  	// - is thus *introduced* as beta
   875  	// - will never graduate to stable.
   876  	TopologyManagerPolicyBetaOptions featuregate.Feature = "TopologyManagerPolicyBetaOptions"
   877  
   878  	// owner: @PiotrProkop
   879  	// kep: https://kep.k8s.io/3545
   880  	// alpha: v1.26
   881  	//
   882  	// Allow the usage of options to fine-tune the topology manager policies.
   883  	TopologyManagerPolicyOptions featuregate.Feature = "TopologyManagerPolicyOptions"
   884  
   885  	// owner: @richabanker
   886  	// alpha: v1.28
   887  	//
   888  	// Proxies client to an apiserver capable of serving the request in the event of version skew.
   889  	UnknownVersionInteroperabilityProxy featuregate.Feature = "UnknownVersionInteroperabilityProxy"
   890  
   891  	// owner: @rata, @giuseppe
   892  	// kep: https://kep.k8s.io/127
   893  	// alpha: v1.25
   894  	//
   895  	// Enables user namespace support for stateless pods.
   896  	UserNamespacesSupport featuregate.Feature = "UserNamespacesSupport"
   897  
   898  	// owner: @mattcarry, @sunnylovestiramisu
   899  	// kep: https://kep.k8s.io/3751
   900  	// alpha: v1.29
   901  	//
   902  	// Enables user specified volume attributes for persistent volumes, like iops and throughput.
   903  	VolumeAttributesClass featuregate.Feature = "VolumeAttributesClass"
   904  
   905  	// owner: @cofyc
   906  	// alpha: v1.21
   907  	VolumeCapacityPriority featuregate.Feature = "VolumeCapacityPriority"
   908  
   909  	// owner: @ksubrmnn
   910  	// alpha: v1.14
   911  	//
   912  	// Allows kube-proxy to create DSR loadbalancers for Windows
   913  	WinDSR featuregate.Feature = "WinDSR"
   914  
   915  	// owner: @ksubrmnn
   916  	// alpha: v1.14
   917  	// beta: v1.20
   918  	//
   919  	// Allows kube-proxy to run in Overlay mode for Windows
   920  	WinOverlay featuregate.Feature = "WinOverlay"
   921  
   922  	// owner: @marosset
   923  	// kep: https://kep.k8s.io/3503
   924  	// alpha: v1.26
   925  	//
   926  	// Enables support for joining Windows containers to a hosts' network namespace.
   927  	WindowsHostNetwork featuregate.Feature = "WindowsHostNetwork"
   928  
   929  	// owner: @kerthcet
   930  	// kep: https://kep.k8s.io/3094
   931  	// alpha: v1.25
   932  	// beta: v1.26
   933  	//
   934  	// Allow users to specify whether to take nodeAffinity/nodeTaint into consideration when
   935  	// calculating pod topology spread skew.
   936  	NodeInclusionPolicyInPodTopologySpread featuregate.Feature = "NodeInclusionPolicyInPodTopologySpread"
   937  
   938  	// owner: @jsafrane
   939  	// kep: https://kep.k8s.io/1710
   940  	// alpha: v1.25
   941  	// beta: v1.27
   942  	// Speed up container startup by mounting volumes with the correct SELinux label
   943  	// instead of changing each file on the volumes recursively.
   944  	// Initial implementation focused on ReadWriteOncePod volumes.
   945  	SELinuxMountReadWriteOncePod featuregate.Feature = "SELinuxMountReadWriteOncePod"
   946  
   947  	// owner: @vinaykul
   948  	// kep: http://kep.k8s.io/1287
   949  	// alpha: v1.27
   950  	//
   951  	// Enables In-Place Pod Vertical Scaling
   952  	InPlacePodVerticalScaling featuregate.Feature = "InPlacePodVerticalScaling"
   953  
   954  	// owner: @Sh4d1,@RyanAoh
   955  	// kep: http://kep.k8s.io/1860
   956  	// alpha: v1.29
   957  	// LoadBalancerIPMode enables the IPMode field in the LoadBalancerIngress status of a Service
   958  	LoadBalancerIPMode featuregate.Feature = "LoadBalancerIPMode"
   959  
   960  	// owner: @haircommander
   961  	// kep: http://kep.k8s.io/4210
   962  	// alpha: v1.29
   963  	// ImageMaximumGCAge enables the Kubelet configuration field of the same name, allowing an admin
   964  	// to specify the age after which an image will be garbage collected.
   965  	ImageMaximumGCAge featuregate.Feature = "ImageMaximumGCAge"
   966  
   967  	// owner: @saschagrunert
   968  	// alpha: v1.28
   969  	//
   970  	// Enables user namespace support for Pod Security Standards. Enabling this
   971  	// feature will modify all Pod Security Standard rules to allow setting:
   972  	// spec[.*].securityContext.[runAsNonRoot,runAsUser]
   973  	// This feature gate should only be enabled if all nodes in the cluster
   974  	// support the user namespace feature and have it enabled. The feature gate
   975  	// will not graduate or be enabled by default in future Kubernetes
   976  	// releases.
   977  	UserNamespacesPodSecurityStandards featuregate.Feature = "UserNamespacesPodSecurityStandards"
   978  )
   979  
   980  func init() {
   981  	runtime.Must(utilfeature.DefaultMutableFeatureGate.Add(defaultKubernetesFeatureGates))
   982  }
   983  
   984  // defaultKubernetesFeatureGates consists of all known Kubernetes-specific feature keys.
   985  // To add a new feature, define a key for it above and add it here. The features will be
   986  // available throughout Kubernetes binaries.
   987  //
   988  // Entries are separated from each other with blank lines to avoid sweeping gofmt changes
   989  // when adding or removing one entry.
   990  var defaultKubernetesFeatureGates = map[featuregate.Feature]featuregate.FeatureSpec{
   991  	CrossNamespaceVolumeDataSource: {Default: false, PreRelease: featuregate.Alpha},
   992  
   993  	AllowServiceLBStatusOnNonLB: {Default: false, PreRelease: featuregate.Deprecated}, // remove after 1.29
   994  
   995  	AnyVolumeDataSource: {Default: true, PreRelease: featuregate.Beta}, // on by default in 1.24
   996  
   997  	APISelfSubjectReview: {Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // GA in 1.28; remove in 1.30
   998  
   999  	AppArmor: {Default: true, PreRelease: featuregate.Beta},
  1000  
  1001  	CloudDualStackNodeIPs: {Default: true, PreRelease: featuregate.Beta},
  1002  
  1003  	ClusterTrustBundle: {Default: false, PreRelease: featuregate.Alpha},
  1004  
  1005  	ClusterTrustBundleProjection: {Default: false, PreRelease: featuregate.Alpha},
  1006  
  1007  	CPUCFSQuotaPeriod: {Default: false, PreRelease: featuregate.Alpha},
  1008  
  1009  	CPUManager: {Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // GA in 1.26
  1010  
  1011  	CPUManagerPolicyAlphaOptions: {Default: false, PreRelease: featuregate.Alpha},
  1012  
  1013  	CPUManagerPolicyBetaOptions: {Default: true, PreRelease: featuregate.Beta},
  1014  
  1015  	CPUManagerPolicyOptions: {Default: true, PreRelease: featuregate.Beta},
  1016  
  1017  	CSIMigrationAzureFile: {Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // remove in 1.28
  1018  
  1019  	CSIMigrationPortworx: {Default: false, PreRelease: featuregate.Beta}, // Off by default (requires Portworx CSI driver)
  1020  
  1021  	CSIMigrationRBD: {Default: false, PreRelease: featuregate.Deprecated}, //  deprecated in 1.28, remove in 1.31
  1022  
  1023  	CSINodeExpandSecret: {Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // remove in 1.31
  1024  
  1025  	CSIVolumeHealth: {Default: false, PreRelease: featuregate.Alpha},
  1026  
  1027  	SkipReadOnlyValidationGCE: {Default: true, PreRelease: featuregate.Deprecated}, // remove in 1.31
  1028  
  1029  	TranslateStreamCloseWebsocketRequests: {Default: false, PreRelease: featuregate.Alpha},
  1030  
  1031  	CloudControllerManagerWebhook: {Default: false, PreRelease: featuregate.Alpha},
  1032  
  1033  	ContainerCheckpoint: {Default: false, PreRelease: featuregate.Alpha},
  1034  
  1035  	ConsistentHTTPGetHandlers: {Default: true, PreRelease: featuregate.GA},
  1036  
  1037  	CronJobsScheduledAnnotation: {Default: true, PreRelease: featuregate.Beta},
  1038  
  1039  	DefaultHostNetworkHostPortsInPodTemplates: {Default: false, PreRelease: featuregate.Deprecated},
  1040  
  1041  	DisableCloudProviders: {Default: true, PreRelease: featuregate.Beta},
  1042  
  1043  	DisableKubeletCloudCredentialProviders: {Default: true, PreRelease: featuregate.Beta},
  1044  
  1045  	DisableNodeKubeProxyVersion: {Default: false, PreRelease: featuregate.Alpha},
  1046  
  1047  	DevicePluginCDIDevices: {Default: true, PreRelease: featuregate.Beta},
  1048  
  1049  	DynamicResourceAllocation: {Default: false, PreRelease: featuregate.Alpha},
  1050  
  1051  	EventedPLEG: {Default: false, PreRelease: featuregate.Alpha},
  1052  
  1053  	ExecProbeTimeout: {Default: true, PreRelease: featuregate.GA}, // lock to default and remove after v1.22 based on KEP #1972 update
  1054  
  1055  	ExpandedDNSConfig: {Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // remove in 1.30
  1056  
  1057  	ExperimentalHostUserNamespaceDefaultingGate: {Default: false, PreRelease: featuregate.Deprecated, LockToDefault: true}, // remove in 1.30
  1058  
  1059  	GracefulNodeShutdown: {Default: true, PreRelease: featuregate.Beta},
  1060  
  1061  	GracefulNodeShutdownBasedOnPodPriority: {Default: true, PreRelease: featuregate.Beta},
  1062  
  1063  	HPAContainerMetrics: {Default: true, PreRelease: featuregate.Beta},
  1064  
  1065  	HonorPVReclaimPolicy: {Default: false, PreRelease: featuregate.Alpha},
  1066  
  1067  	InTreePluginAWSUnregister: {Default: false, PreRelease: featuregate.Alpha},
  1068  
  1069  	InTreePluginAzureDiskUnregister: {Default: false, PreRelease: featuregate.Alpha},
  1070  
  1071  	InTreePluginAzureFileUnregister: {Default: false, PreRelease: featuregate.Alpha},
  1072  
  1073  	InTreePluginGCEUnregister: {Default: false, PreRelease: featuregate.Alpha},
  1074  
  1075  	InTreePluginOpenStackUnregister: {Default: false, PreRelease: featuregate.Alpha},
  1076  
  1077  	InTreePluginPortworxUnregister: {Default: false, PreRelease: featuregate.Alpha},
  1078  
  1079  	InTreePluginRBDUnregister: {Default: false, PreRelease: featuregate.Deprecated}, // deprecated in 1.28, remove in 1.31
  1080  
  1081  	InTreePluginvSphereUnregister: {Default: false, PreRelease: featuregate.Alpha},
  1082  
  1083  	IPTablesOwnershipCleanup: {Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // remove in 1.30
  1084  
  1085  	JobBackoffLimitPerIndex: {Default: true, PreRelease: featuregate.Beta},
  1086  
  1087  	JobPodFailurePolicy: {Default: true, PreRelease: featuregate.Beta},
  1088  
  1089  	JobPodReplacementPolicy: {Default: true, PreRelease: featuregate.Beta},
  1090  
  1091  	JobReadyPods: {Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // remove in 1.31
  1092  
  1093  	KubeletCgroupDriverFromCRI: {Default: false, PreRelease: featuregate.Alpha},
  1094  
  1095  	KubeletInUserNamespace: {Default: false, PreRelease: featuregate.Alpha},
  1096  
  1097  	KubeletPodResources: {Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // GA in 1.28, remove in 1.30
  1098  
  1099  	KubeletPodResourcesDynamicResources: {Default: false, PreRelease: featuregate.Alpha},
  1100  
  1101  	KubeletPodResourcesGet: {Default: false, PreRelease: featuregate.Alpha},
  1102  
  1103  	KubeletPodResourcesGetAllocatable: {Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // GA in 1.28, remove in 1.30
  1104  
  1105  	KubeletSeparateDiskGC: {Default: false, PreRelease: featuregate.Alpha},
  1106  
  1107  	KubeletTracing: {Default: true, PreRelease: featuregate.Beta},
  1108  
  1109  	KubeProxyDrainingTerminatingNodes: {Default: false, PreRelease: featuregate.Alpha},
  1110  
  1111  	LegacyServiceAccountTokenTracking: {Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // remove in 1.30
  1112  
  1113  	LegacyServiceAccountTokenCleanUp: {Default: true, PreRelease: featuregate.Beta},
  1114  
  1115  	LocalStorageCapacityIsolationFSQuotaMonitoring: {Default: false, PreRelease: featuregate.Alpha},
  1116  
  1117  	LogarithmicScaleDown: {Default: true, PreRelease: featuregate.Beta},
  1118  
  1119  	MatchLabelKeysInPodAffinity: {Default: false, PreRelease: featuregate.Alpha},
  1120  
  1121  	MatchLabelKeysInPodTopologySpread: {Default: true, PreRelease: featuregate.Beta},
  1122  
  1123  	MaxUnavailableStatefulSet: {Default: false, PreRelease: featuregate.Alpha},
  1124  
  1125  	MemoryManager: {Default: true, PreRelease: featuregate.Beta},
  1126  
  1127  	MemoryQoS: {Default: false, PreRelease: featuregate.Alpha},
  1128  
  1129  	MinDomainsInPodTopologySpread: {Default: true, PreRelease: featuregate.Beta},
  1130  
  1131  	MinimizeIPTablesRestore: {Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // remove in 1.30
  1132  
  1133  	MultiCIDRServiceAllocator: {Default: false, PreRelease: featuregate.Alpha},
  1134  
  1135  	NewVolumeManagerReconstruction: {Default: true, PreRelease: featuregate.Beta},
  1136  
  1137  	NFTablesProxyMode: {Default: false, PreRelease: featuregate.Alpha},
  1138  
  1139  	NodeLogQuery: {Default: false, PreRelease: featuregate.Alpha},
  1140  
  1141  	NodeOutOfServiceVolumeDetach: {Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // remove in 1.31
  1142  
  1143  	NodeSwap: {Default: false, PreRelease: featuregate.Beta},
  1144  
  1145  	PDBUnhealthyPodEvictionPolicy: {Default: true, PreRelease: featuregate.Beta},
  1146  
  1147  	PersistentVolumeLastPhaseTransitionTime: {Default: true, PreRelease: featuregate.Beta},
  1148  
  1149  	PodAndContainerStatsFromCRI: {Default: false, PreRelease: featuregate.Alpha},
  1150  
  1151  	PodDeletionCost: {Default: true, PreRelease: featuregate.Beta},
  1152  
  1153  	PodDisruptionConditions: {Default: true, PreRelease: featuregate.Beta},
  1154  
  1155  	PodReadyToStartContainersCondition: {Default: true, PreRelease: featuregate.Beta},
  1156  
  1157  	PodHostIPs: {Default: true, PreRelease: featuregate.Beta},
  1158  
  1159  	PodLifecycleSleepAction: {Default: false, PreRelease: featuregate.Alpha},
  1160  
  1161  	PodSchedulingReadiness: {Default: true, PreRelease: featuregate.Beta},
  1162  
  1163  	ProcMountType: {Default: false, PreRelease: featuregate.Alpha},
  1164  
  1165  	ProxyTerminatingEndpoints: {Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // remove in 1.30
  1166  
  1167  	QOSReserved: {Default: false, PreRelease: featuregate.Alpha},
  1168  
  1169  	ReadWriteOncePod: {Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // remove in 1.31
  1170  
  1171  	RecoverVolumeExpansionFailure: {Default: false, PreRelease: featuregate.Alpha},
  1172  
  1173  	RotateKubeletServerCertificate: {Default: true, PreRelease: featuregate.Beta},
  1174  
  1175  	RuntimeClassInImageCriAPI: {Default: false, PreRelease: featuregate.Alpha},
  1176  
  1177  	ElasticIndexedJob: {Default: true, PreRelease: featuregate.Beta},
  1178  
  1179  	SchedulerQueueingHints: {Default: false, PreRelease: featuregate.Beta},
  1180  
  1181  	SecurityContextDeny: {Default: false, PreRelease: featuregate.Alpha},
  1182  
  1183  	SeparateTaintEvictionController: {Default: true, PreRelease: featuregate.Beta},
  1184  
  1185  	ServiceAccountTokenJTI: {Default: false, PreRelease: featuregate.Alpha},
  1186  
  1187  	ServiceAccountTokenPodNodeInfo: {Default: false, PreRelease: featuregate.Alpha},
  1188  
  1189  	ServiceAccountTokenNodeBinding: {Default: false, PreRelease: featuregate.Alpha},
  1190  
  1191  	ServiceAccountTokenNodeBindingValidation: {Default: false, PreRelease: featuregate.Alpha},
  1192  
  1193  	ServiceNodePortStaticSubrange: {Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // GA in 1.29; remove in 1.31
  1194  
  1195  	SidecarContainers: {Default: true, PreRelease: featuregate.Beta},
  1196  
  1197  	SizeMemoryBackedVolumes: {Default: true, PreRelease: featuregate.Beta},
  1198  
  1199  	StableLoadBalancerNodeSet: {Default: true, PreRelease: featuregate.Beta},
  1200  
  1201  	StatefulSetAutoDeletePVC: {Default: true, PreRelease: featuregate.Beta},
  1202  
  1203  	StatefulSetStartOrdinal: {Default: true, PreRelease: featuregate.Beta},
  1204  
  1205  	TopologyAwareHints: {Default: true, PreRelease: featuregate.Beta},
  1206  
  1207  	TopologyManagerPolicyAlphaOptions: {Default: false, PreRelease: featuregate.Alpha},
  1208  
  1209  	TopologyManagerPolicyBetaOptions: {Default: true, PreRelease: featuregate.Beta},
  1210  
  1211  	TopologyManagerPolicyOptions: {Default: true, PreRelease: featuregate.Beta},
  1212  
  1213  	UnknownVersionInteroperabilityProxy: {Default: false, PreRelease: featuregate.Alpha},
  1214  
  1215  	VolumeAttributesClass: {Default: false, PreRelease: featuregate.Alpha},
  1216  
  1217  	VolumeCapacityPriority: {Default: false, PreRelease: featuregate.Alpha},
  1218  
  1219  	UserNamespacesSupport: {Default: false, PreRelease: featuregate.Alpha},
  1220  
  1221  	WinDSR: {Default: false, PreRelease: featuregate.Alpha},
  1222  
  1223  	WinOverlay: {Default: true, PreRelease: featuregate.Beta},
  1224  
  1225  	WindowsHostNetwork: {Default: true, PreRelease: featuregate.Alpha},
  1226  
  1227  	NodeInclusionPolicyInPodTopologySpread: {Default: true, PreRelease: featuregate.Beta},
  1228  
  1229  	SELinuxMountReadWriteOncePod: {Default: true, PreRelease: featuregate.Beta},
  1230  
  1231  	InPlacePodVerticalScaling: {Default: false, PreRelease: featuregate.Alpha},
  1232  
  1233  	PodIndexLabel: {Default: true, PreRelease: featuregate.Beta},
  1234  
  1235  	LoadBalancerIPMode: {Default: false, PreRelease: featuregate.Alpha},
  1236  
  1237  	ImageMaximumGCAge: {Default: false, PreRelease: featuregate.Alpha},
  1238  
  1239  	UserNamespacesPodSecurityStandards: {Default: false, PreRelease: featuregate.Alpha},
  1240  
  1241  	// inherited features from generic apiserver, relisted here to get a conflict if it is changed
  1242  	// unintentionally on either side:
  1243  
  1244  	genericfeatures.AdmissionWebhookMatchConditions: {Default: true, PreRelease: featuregate.Beta},
  1245  
  1246  	genericfeatures.AggregatedDiscoveryEndpoint: {Default: true, PreRelease: featuregate.Beta},
  1247  
  1248  	genericfeatures.APIListChunking: {Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // remove in 1.32
  1249  
  1250  	genericfeatures.APIPriorityAndFairness: {Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // remove in 1.31
  1251  
  1252  	genericfeatures.APIResponseCompression: {Default: true, PreRelease: featuregate.Beta},
  1253  
  1254  	genericfeatures.KMSv1: {Default: false, PreRelease: featuregate.Deprecated},
  1255  
  1256  	genericfeatures.KMSv2: {Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // remove in 1.31
  1257  
  1258  	genericfeatures.KMSv2KDF: {Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // remove in 1.31
  1259  
  1260  	genericfeatures.ValidatingAdmissionPolicy: {Default: false, PreRelease: featuregate.Beta},
  1261  
  1262  	genericfeatures.CustomResourceValidationExpressions: {Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // remove in 1.31
  1263  
  1264  	genericfeatures.OpenAPIEnums: {Default: true, PreRelease: featuregate.Beta},
  1265  
  1266  	genericfeatures.SeparateCacheWatchRPC: {Default: true, PreRelease: featuregate.Beta},
  1267  
  1268  	genericfeatures.ServerSideApply: {Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // remove in 1.29
  1269  
  1270  	genericfeatures.ServerSideFieldValidation: {Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // remove in 1.29
  1271  
  1272  	genericfeatures.StructuredAuthorizationConfiguration: {Default: false, PreRelease: featuregate.Alpha},
  1273  
  1274  	genericfeatures.UnauthenticatedHTTP2DOSMitigation: {Default: true, PreRelease: featuregate.Beta},
  1275  
  1276  	genericfeatures.ZeroLimitedNominalConcurrencyShares: {Default: false, PreRelease: featuregate.Beta},
  1277  
  1278  	// inherited features from apiextensions-apiserver, relisted here to get a conflict if it is changed
  1279  	// unintentionally on either side:
  1280  
  1281  	apiextensionsfeatures.CRDValidationRatcheting: {Default: false, PreRelease: featuregate.Alpha},
  1282  
  1283  	// features that enable backwards compatibility but are scheduled to be removed
  1284  	// ...
  1285  	HPAScaleToZero: {Default: false, PreRelease: featuregate.Alpha},
  1286  }