...

Source file src/k8s.io/kubernetes/pkg/features/kube_features.go

Documentation: k8s.io/kubernetes/pkg/features

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

View as plain text