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 }