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