Skip to content

Commit 24aab3d

Browse files
committed
Update feature gates page
The feature gates was not well sync'ed with the upstream implementation. This PR resynchronizes the tables based on cross-verification against upstream source code. It also fixes some nits such as a feature was not placed in the right table or the entries are not strictly sorted.
1 parent 6530f1d commit 24aab3d

File tree

1 file changed

+47
-32
lines changed

1 file changed

+47
-32
lines changed

content/en/docs/reference/command-line-tools-reference/feature-gates.md

Lines changed: 47 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,6 @@ different Kubernetes components.
6464
| `AnyVolumeDataSource` | `false` | Alpha | 1.18 | 1.23 |
6565
| `AnyVolumeDataSource` | `true` | Beta | 1.24 | |
6666
| `AppArmor` | `true` | Beta | 1.4 | |
67-
| `ContainerCheckpoint` | `false` | Alpha | 1.25 | |
6867
| `CPUManager` | `false` | Alpha | 1.8 | 1.9 |
6968
| `CPUManager` | `true` | Beta | 1.10 | |
7069
| `CPUManagerPolicyAlphaOptions` | `false` | Alpha | 1.23 | |
@@ -82,6 +81,7 @@ different Kubernetes components.
8281
| `CSIMigrationvSphere` | `true` | Beta | 1.25 | |
8382
| `CSINodeExpandSecret` | `false` | Alpha | 1.25 | |
8483
| `CSIVolumeHealth` | `false` | Alpha | 1.21 | |
84+
| `ContainerCheckpoint` | `false` | Alpha | 1.25 | |
8585
| `ContextualLogging` | `false` | Alpha | 1.24 | |
8686
| `CustomCPUCFSQuotaPeriod` | `false` | Alpha | 1.12 | |
8787
| `CustomResourceValidationExpressions` | `false` | Alpha | 1.23 | 1.24 |
@@ -90,8 +90,6 @@ different Kubernetes components.
9090
| `DelegateFSGroupToCSIDriver` | `true` | Beta | 1.23 | |
9191
| `DevicePlugins` | `false` | Alpha | 1.8 | 1.9 |
9292
| `DevicePlugins` | `true` | Beta | 1.10 | |
93-
| `DisableAcceleratorUsageMetrics` | `false` | Alpha | 1.19 | 1.19 |
94-
| `DisableAcceleratorUsageMetrics` | `true` | Beta | 1.20 | |
9593
| `DisableCloudProviders` | `false` | Alpha | 1.22 | |
9694
| `DisableKubeletCloudCredentialProviders` | `false` | Alpha | 1.23 | |
9795
| `DownwardAPIHugePages` | `false` | Alpha | 1.20 | 1.20 |
@@ -101,15 +99,15 @@ different Kubernetes components.
10199
| `EndpointSliceTerminatingCondition` | `true` | Beta | 1.22 | |
102100
| `ExpandedDNSConfig` | `false` | Alpha | 1.22 | |
103101
| `ExperimentalHostUserNamespaceDefaulting` | `false` | Beta | 1.5 | |
102+
| `GRPCContainerProbe` | `false` | Alpha | 1.23 | 1.23 |
103+
| `GRPCContainerProbe` | `true` | Beta | 1.24 | |
104104
| `GracefulNodeShutdown` | `false` | Alpha | 1.20 | 1.20 |
105105
| `GracefulNodeShutdown` | `true` | Beta | 1.21 | |
106106
| `GracefulNodeShutdownBasedOnPodPriority` | `false` | Alpha | 1.23 | 1.23 |
107107
| `GracefulNodeShutdownBasedOnPodPriority` | `true` | Beta | 1.24 | |
108-
| `GRPCContainerProbe` | `false` | Alpha | 1.23 | 1.23 |
109-
| `GRPCContainerProbe` | `true` | Beta | 1.24 | |
110-
| `HonorPVReclaimPolicy` | `false` | Alpha | 1.23 | |
111108
| `HPAContainerMetrics` | `false` | Alpha | 1.20 | |
112109
| `HPAScaleToZero` | `false` | Alpha | 1.16 | |
110+
| `HonorPVReclaimPolicy` | `false` | Alpha | 1.23 | |
113111
| `InTreePluginAWSUnregister` | `false` | Alpha | 1.21 | |
114112
| `InTreePluginAzureDiskUnregister` | `false` | Alpha | 1.21 | |
115113
| `InTreePluginAzureFileUnregister` | `false` | Alpha | 1.21 | |
@@ -118,12 +116,13 @@ different Kubernetes components.
118116
| `InTreePluginPortworxUnregister` | `false` | Alpha | 1.23 | |
119117
| `InTreePluginRBDUnregister` | `false` | Alpha | 1.23 | |
120118
| `InTreePluginvSphereUnregister` | `false` | Alpha | 1.21 | |
119+
| `IPTablesOwnershipCleanup` | `false` | Alpha | 1.25 | |
121120
| `JobMutableNodeSchedulingDirectives` | `true` | Beta | 1.23 | |
121+
| `JobPodFailurePolicy` | `false` | Alpha | 1.25 | - |
122122
| `JobReadyPods` | `false` | Alpha | 1.23 | 1.23 |
123123
| `JobReadyPods` | `true` | Beta | 1.24 | |
124124
| `JobTrackingWithFinalizers` | `false` | Alpha | 1.22 | 1.22 |
125-
| `JobTrackingWithFinalizers` | `true` | Beta | 1.23 | 1.23 |
126-
| `JobTrackingWithFinalizers` | `false` | Beta | 1.24 | |
125+
| `JobTrackingWithFinalizers` | `true` | Beta | 1.23 | |
127126
| `KubeletCredentialProviders` | `false` | Alpha | 1.20 | 1.23 |
128127
| `KubeletCredentialProviders` | `true` | Beta | 1.24 | |
129128
| `KubeletInUserNamespace` | `false` | Alpha | 1.22 | |
@@ -132,7 +131,9 @@ different Kubernetes components.
132131
| `KubeletPodResourcesGetAllocatable` | `false` | Alpha | 1.21 | 1.22 |
133132
| `KubeletPodResourcesGetAllocatable` | `true` | Beta | 1.23 | |
134133
| `KubeletTracing` | `false` | Alpha | 1.25 | |
135-
| `LocalStorageCapacityIsolationFSQuotaMonitoring` | `false` | Alpha | 1.15 | |
134+
| `LegacyServiceAccountTokenNoAutoGeneration` | `true` | Beta | 1.24 | |
135+
| `LocalStorageCapacityIsolationFSQuotaMonitoring` | `false` | Alpha | 1.15 | 1.24 |
136+
| `LocalStorageCapacityIsolationFSQuotaMonitoring` | `true` | Beta | 1.25 | |
136137
| `LogarithmicScaleDown` | `false` | Alpha | 1.21 | 1.21 |
137138
| `LogarithmicScaleDown` | `true` | Beta | 1.22 | |
138139
| `MatchLabelKeysInPodTopologySpread` | `false` | Alpha | 1.25 | |
@@ -141,23 +142,23 @@ different Kubernetes components.
141142
| `MemoryManager` | `true` | Beta | 1.22 | |
142143
| `MemoryQoS` | `false` | Alpha | 1.22 | |
143144
| `MinDomainsInPodTopologySpread` | `false` | Alpha | 1.24 | 1.24 |
144-
| `MinDomainsInPodTopologySpread` | `true` | Beta | 1.25 | |
145+
| `MinDomainsInPodTopologySpread` | `false` | Beta | 1.25 | |
145146
| `MixedProtocolLBService` | `false` | Alpha | 1.20 | 1.23 |
146147
| `MixedProtocolLBService` | `true` | Beta | 1.24 | |
148+
| `MultiCIDRRangeAllocator` | `false` | Alpha | 1.25 | |
147149
| `NetworkPolicyStatus` | `false` | Alpha | 1.24 | |
148150
| `NodeInclusionPolicyInPodTopologySpread` | `false` | Alpha | 1.25 | |
149-
| `NodeSwap` | `false` | Alpha | 1.22 | |
150151
| `NodeOutOfServiceVolumeDetach` | `false` | Alpha | 1.24 | |
152+
| `NodeSwap` | `false` | Alpha | 1.22 | |
151153
| `OpenAPIEnums` | `false` | Alpha | 1.23 | 1.23 |
152154
| `OpenAPIEnums` | `true` | Beta | 1.24 | |
153155
| `OpenAPIV3` | `false` | Alpha | 1.23 | 1.23 |
154156
| `OpenAPIV3` | `true` | Beta | 1.24 | |
155157
| `PodAndContainerStatsFromCRI` | `false` | Alpha | 1.23 | |
156158
| `PodDeletionCost` | `false` | Alpha | 1.21 | 1.21 |
157159
| `PodDeletionCost` | `true` | Beta | 1.22 | |
160+
| `PodDisruptionConditions` | `false` | Alpha | 1.25 | - |
158161
| `PodHasNetworkCondition` | `false` | Alpha | 1.25 | |
159-
| `PodSecurity` | `false` | Alpha | 1.22 | 1.22 |
160-
| `PodSecurity` | `true` | Beta | 1.23 | |
161162
| `ProbeTerminationGracePeriod` | `false` | Alpha | 1.21 | 1.21 |
162163
| `ProbeTerminationGracePeriod` | `false` | Beta | 1.22 | 1.24 |
163164
| `ProbeTerminationGracePeriod` | `true` | Beta | 1.25 | |
@@ -168,16 +169,18 @@ different Kubernetes components.
168169
| `RecoverVolumeExpansionFailure` | `false` | Alpha | 1.23 | |
169170
| `RemainingItemCount` | `false` | Alpha | 1.15 | 1.15 |
170171
| `RemainingItemCount` | `true` | Beta | 1.16 | |
172+
| `RetroactiveDefaultStorageClass` | `false` | Alpha | 1.25 | |
171173
| `RotateKubeletServerCertificate` | `false` | Alpha | 1.7 | 1.11 |
172174
| `RotateKubeletServerCertificate` | `true` | Beta | 1.12 | |
175+
| `SELinuxMountReadWriteOncePod` | `false` | Alpha | 1.25 | |
173176
| `SeccompDefault` | `false` | Alpha | 1.22 | 1.24 |
174177
| `SeccompDefault` | `true` | Beta | 1.25 | |
175178
| `ServerSideFieldValidation` | `false` | Alpha | 1.23 | 1.24 |
176179
| `ServerSideFieldValidation` | `true` | Beta | 1.25 | |
177-
| `ServiceInternalTrafficPolicy` | `false` | Alpha | 1.21 | 1.21 |
178-
| `ServiceInternalTrafficPolicy` | `true` | Beta | 1.22 | |
179180
| `ServiceIPStaticSubrange` | `false` | Alpha | 1.24 | 1.24 |
180181
| `ServiceIPStaticSubrange` | `true` | Beta | 1.25 | |
182+
| `ServiceInternalTrafficPolicy` | `false` | Alpha | 1.21 | 1.21 |
183+
| `ServiceInternalTrafficPolicy` | `true` | Beta | 1.22 | |
181184
| `SizeMemoryBackedVolumes` | `false` | Alpha | 1.20 | 1.21 |
182185
| `SizeMemoryBackedVolumes` | `true` | Beta | 1.22 | |
183186
| `StatefulSetAutoDeletePVC` | `false` | Alpha | 1.22 | |
@@ -189,6 +192,7 @@ different Kubernetes components.
189192
| `TopologyAwareHints` | `true` | Beta | 1.24 | |
190193
| `TopologyManager` | `false` | Alpha | 1.16 | 1.17 |
191194
| `TopologyManager` | `true` | Beta | 1.18 | |
195+
| `UserNamespacesStatelessPodsSupport` | `false` | Alpha | 1.25 | |
192196
| `VolumeCapacityPriority` | `false` | Alpha | 1.21 | - |
193197
| `WinDSR` | `false` | Alpha | 1.14 | |
194198
| `WinOverlay` | `false` | Alpha | 1.14 | 1.19 |
@@ -223,12 +227,6 @@ different Kubernetes components.
223227
| `BoundServiceAccountTokenVolume` | `false` | Alpha | 1.13 | 1.20 |
224228
| `BoundServiceAccountTokenVolume` | `true` | Beta | 1.21 | 1.21 |
225229
| `BoundServiceAccountTokenVolume` | `true` | GA | 1.22 | - |
226-
| `ConfigurableFSGroupPolicy` | `false` | Alpha | 1.18 | 1.19 |
227-
| `ConfigurableFSGroupPolicy` | `true` | Beta | 1.20 | 1.22 |
228-
| `ConfigurableFSGroupPolicy` | `true` | GA | 1.23 | - |
229-
| `ControllerManagerLeaderMigration` | `false` | Alpha | 1.21 | 1.21 |
230-
| `ControllerManagerLeaderMigration` | `true` | Beta | 1.22 | 1.23 |
231-
| `ControllerManagerLeaderMigration` | `true` | GA | 1.24 | - |
232230
| `CRIContainerLogRotation` | `false` | Alpha | 1.10 | 1.10 |
233231
| `CRIContainerLogRotation` | `true` | Beta | 1.11 | 1.20 |
234232
| `CRIContainerLogRotation` | `true` | GA | 1.21 | - |
@@ -288,6 +286,12 @@ different Kubernetes components.
288286
| `CSIVolumeFSGroupPolicy` | `true` | GA | 1.23 | |
289287
| `CSRDuration` | `true` | Beta | 1.22 | 1.23 |
290288
| `CSRDuration` | `true` | GA | 1.24 | - |
289+
| `ConfigurableFSGroupPolicy` | `false` | Alpha | 1.18 | 1.19 |
290+
| `ConfigurableFSGroupPolicy` | `true` | Beta | 1.20 | 1.22 |
291+
| `ConfigurableFSGroupPolicy` | `true` | GA | 1.23 | - |
292+
| `ControllerManagerLeaderMigration` | `false` | Alpha | 1.21 | 1.21 |
293+
| `ControllerManagerLeaderMigration` | `true` | Beta | 1.22 | 1.23 |
294+
| `ControllerManagerLeaderMigration` | `true` | GA | 1.24 | - |
291295
| `CronJobControllerV2` | `false` | Alpha | 1.20 | 1.20 |
292296
| `CronJobControllerV2` | `true` | Beta | 1.21 | 1.21 |
293297
| `CronJobControllerV2` | `true` | GA | 1.22 | - |
@@ -317,6 +321,9 @@ different Kubernetes components.
317321
| `DefaultPodTopologySpread` | `false` | Alpha | 1.19 | 1.19 |
318322
| `DefaultPodTopologySpread` | `true` | Beta | 1.20 | 1.23 |
319323
| `DefaultPodTopologySpread` | `true` | GA | 1.24 | - |
324+
| `DisableAcceleratorUsageMetrics` | `false` | Alpha | 1.19 | 1.19 |
325+
| `DisableAcceleratorUsageMetrics` | `true` | Beta | 1.20 | 1.24 |
326+
| `DisableAcceleratorUsageMetrics` | `true` | Beta | 1.25 |- |
320327
| `DryRun` | `false` | Alpha | 1.12 | 1.12 |
321328
| `DryRun` | `true` | Beta | 1.13 | 1.18 |
322329
| `DryRun` | `true` | GA | 1.19 | - |
@@ -376,12 +383,12 @@ different Kubernetes components.
376383
| `HugePages` | `true` | GA | 1.14 | - |
377384
| `HyperVContainer` | `false` | Alpha | 1.10 | 1.19 |
378385
| `HyperVContainer` | `false` | Deprecated | 1.20 | - |
379-
| `IdentifyPodOS` | `false` | Alpha | 1.23 | 1.23 |
380-
| `IdentifyPodOS` | `true` | Beta | 1.24 | 1.24 |
381-
| `IdentifyPodOS` | `true` | GA | 1.25 | - |
382386
| `IPv6DualStack` | `false` | Alpha | 1.15 | 1.20 |
383387
| `IPv6DualStack` | `true` | Beta | 1.21 | 1.22 |
384388
| `IPv6DualStack` | `true` | GA | 1.23 | - |
389+
| `IdentifyPodOS` | `false` | Alpha | 1.23 | 1.23 |
390+
| `IdentifyPodOS` | `true` | Beta | 1.24 | 1.24 |
391+
| `IdentifyPodOS` | `true` | GA | 1.25 | - |
385392
| `ImmutableEphemeralVolumes` | `false` | Alpha | 1.18 | 1.18 |
386393
| `ImmutableEphemeralVolumes` | `true` | Beta | 1.19 | 1.20 |
387394
| `ImmutableEphemeralVolumes` | `true` | GA | 1.21 | |
@@ -393,7 +400,6 @@ different Kubernetes components.
393400
| `IngressClassNamespacedParams` | `true` | GA | 1.23 | - |
394401
| `Initializers` | `false` | Alpha | 1.7 | 1.13 |
395402
| `Initializers` | - | Deprecated | 1.14 | - |
396-
| `JobPodFailurePolicy` | `false` | Alpha | 1.25 | - |
397403
| `KubeletConfigFile` | `false` | Alpha | 1.8 | 1.9 |
398404
| `KubeletConfigFile` | - | Deprecated | 1.10 | - |
399405
| `KubeletPluginsWatcher` | `false` | Alpha | 1.11 | 1.11 |
@@ -402,7 +408,6 @@ different Kubernetes components.
402408
| `LegacyNodeRoleBehavior` | `false` | Alpha | 1.16 | 1.18 |
403409
| `LegacyNodeRoleBehavior` | `true` | Beta | 1.19 | 1.20 |
404410
| `LegacyNodeRoleBehavior` | `false` | GA | 1.21 | - |
405-
| `LegacyServiceAccountTokenNoAutoGeneration` | `true` | Beta | 1.24 | |
406411
| `LocalStorageCapacityIsolation` | `false` | Alpha | 1.7 | 1.9 |
407412
| `LocalStorageCapacityIsolation` | `true` | Beta | 1.10 | 1.24 |
408413
| `LocalStorageCapacityIsolation` | `true` | GA | 1.25 | - |
@@ -436,7 +441,6 @@ different Kubernetes components.
436441
| `PodDisruptionBudget` | `false` | Alpha | 1.3 | 1.4 |
437442
| `PodDisruptionBudget` | `true` | Beta | 1.5 | 1.20 |
438443
| `PodDisruptionBudget` | `true` | GA | 1.21 | - |
439-
| `PodDisruptionConditions` | `false` | Alpha | 1.25 | - |
440444
| `PodOverhead` | `false` | Alpha | 1.16 | 1.17 |
441445
| `PodOverhead` | `true` | Beta | 1.18 | 1.23 |
442446
| `PodOverhead` | `true` | GA | 1.24 | - |
@@ -446,6 +450,9 @@ different Kubernetes components.
446450
| `PodReadinessGates` | `false` | Alpha | 1.11 | 1.11 |
447451
| `PodReadinessGates` | `true` | Beta | 1.12 | 1.13 |
448452
| `PodReadinessGates` | `true` | GA | 1.14 | - |
453+
| `PodSecurity` | `false` | Alpha | 1.22 | 1.22 |
454+
| `PodSecurity` | `true` | Beta | 1.23 | 1.24 |
455+
| `PodSecurity` | `true` | GA | 1.25 | |
449456
| `PodShareProcessNamespace` | `false` | Alpha | 1.10 | 1.11 |
450457
| `PodShareProcessNamespace` | `true` | Beta | 1.12 | 1.16 |
451458
| `PodShareProcessNamespace` | `true` | GA | 1.17 | - |
@@ -940,6 +947,9 @@ Each feature gate is designed for enabling/disabling a specific feature:
940947
- `HyperVContainer`: Enable
941948
[Hyper-V isolation](https://docs.microsoft.com/en-us/virtualization/windowscontainers/manage-containers/hyperv-container)
942949
for Windows containers.
950+
- `IPv6DualStack`: Enable [dual stack](/docs/concepts/services-networking/dual-stack/)
951+
support for IPv6.
952+
- `IPTablesOwnershipCleanup`: This causes kubelet to no longer create legacy IPTables rules.
943953
- `IdentifyPodOS`: Allows the Pod OS field to be specified. This helps in identifying
944954
the OS of the pod authoritatively during the API server admission time.
945955
In Kubernetes {{< skew currentVersion >}}, the allowed values for the `pod.spec.os.name`
@@ -969,11 +979,10 @@ Each feature gate is designed for enabling/disabling a specific feature:
969979
and volume controllers.
970980
- `InTreePluginvSphereUnregister`: Stops registering the vSphere in-tree plugin in kubelet
971981
and volume controllers.
972-
- `IPv6DualStack`: Enable [dual stack](/docs/concepts/services-networking/dual-stack/)
973-
support for IPv6.
974982
- `JobMutableNodeSchedulingDirectives`: Allows updating node scheduling directives in
975983
the pod template of [Job](/docs/concepts/workloads/controllers/job).
976-
- `JobPodFailurePolicy`: Allow users to specify handling of pod failures based on container exit codes and pod conditions.
984+
- `JobPodFailurePolicy`: Allow users to specify handling of pod failures based on container
985+
exit codes and pod conditions.
977986
- `JobReadyPods`: Enables tracking the number of Pods that have a `Ready`
978987
[condition](/docs/concepts/workloads/pods/pod-lifecycle/#pod-conditions).
979988
The count of `Ready` pods is recorded in the
@@ -1041,6 +1050,7 @@ Each feature gate is designed for enabling/disabling a specific feature:
10411050
- `MountContainers`: Enable using utility containers on host as the volume mounter.
10421051
- `MountPropagation`: Enable sharing volume mounted by one container to other containers or pods.
10431052
For more details, please see [mount propagation](/docs/concepts/storage/volumes/#mount-propagation).
1053+
- `MultiCIDRRangeAllocator`: Enables the MultiCIDR range allocator.
10441054
- `NamespaceDefaultLabelName`: Configure the API Server to set an immutable
10451055
{{< glossary_tooltip text="label" term_id="label" >}} `kubernetes.io/metadata.name`
10461056
on all namespaces, containing the namespace name.
@@ -1124,6 +1134,7 @@ Each feature gate is designed for enabling/disabling a specific feature:
11241134
the input Pod's cpu and memory limits. The intent is to break ties between
11251135
nodes with same scores.
11261136
- `ResourceQuotaScopeSelectors`: Enable resource quota scope selectors.
1137+
- `RetroactiveDefaultStorageClass`: Allow assigning StorageClass to unbound PVCs retroactively.
11271138
- `RootCAConfigMap`: Configure the `kube-controller-manager` to publish a
11281139
{{< glossary_tooltip text="ConfigMap" term_id="configmap" >}} named `kube-root-ca.crt`
11291140
to every namespace. This ConfigMap contains a CA bundle used for verifying connections
@@ -1140,10 +1151,13 @@ Each feature gate is designed for enabling/disabling a specific feature:
11401151
processes of containers.
11411152
- `RuntimeClass`: Enable the [RuntimeClass](/docs/concepts/containers/runtime-class/) feature
11421153
for selecting container runtime configurations.
1143-
- `ScheduleDaemonSetPods`: Enable DaemonSet Pods to be scheduled by the default scheduler
1144-
instead of the DaemonSet controller.
11451154
- `SCTPSupport`: Enables the _SCTP_ `protocol` value in Pod, Service,
11461155
Endpoints, EndpointSlice, and NetworkPolicy definitions.
1156+
- `SELinuxMountReadWriteOncePod`: Speed up container startup by mounting volumes with the correct
1157+
SELinux label instead of changing each file on the volumes recursively. The initial implementation
1158+
focused on ReadWriteOncePod volumes.
1159+
- `ScheduleDaemonSetPods`: Enable DaemonSet Pods to be scheduled by the default scheduler
1160+
instead of the DaemonSet controller.
11471161
- `SeccompDefault`: Enables the use of `RuntimeDefault` as the default seccomp profile
11481162
for all workloads.
11491163
The seccomp profile is specified in the `securityContext` of a Pod and/or a Container.
@@ -1233,6 +1247,7 @@ Each feature gate is designed for enabling/disabling a specific feature:
12331247
- `TopologyManager`: Enable a mechanism to coordinate fine-grained hardware resource
12341248
assignments for different components in Kubernetes. See
12351249
[Control Topology Management Policies on a node](/docs/tasks/administer-cluster/topology-manager/).
1250+
- `UserNamespacesStatelessPodsSupport`: Enable user namespace support for stateless Pods.
12361251
- `ValidateProxyRedirects`: This flag controls whether the API server should
12371252
validate that redirects are only followed to the same host. Only used if the
12381253
`StreamingProxyRedirects` flag is enabled.

0 commit comments

Comments
 (0)