Skip to content

Instantly share code, notes, and snippets.

@dims
Last active December 18, 2025 23:58
Show Gist options
  • Select an option

  • Save dims/a0ecf5de51235968e12b9d6b62ac3a83 to your computer and use it in GitHub Desktop.

Select an option

Save dims/a0ecf5de51235968e12b9d6b62ac3a83 to your computer and use it in GitHub Desktop.
Feature Gates in Kubernetes master branch on Nov 9, 2025

Kubernetes Feature Gates

Feature Stage Enabled Locked Alpha Beta GA Deprecated Dependencies Links
APIResponseCompression Beta ☑️ 1.16+ 1.8-1.15 1.16+ code KEPs
APIServerIdentity Beta ☑️ 1.26+ 1.20-1.25 1.26+ code KEPs
APIServerTracing GA ☑️ 1.27+ 🔐 1.34+ 1.22-1.26 1.27-1.33 1.34+ code KEPs
APIServingWithRoutine Alpha 1.30+ code KEPs
AggregatedDiscoveryRemoveBetaType Deprecated ☑️ 1.33+ 🔐 1.35+ 1.0-1.32 1.33-1.34, 1.35+ code KEPs
AllowDNSOnlyNodeCSR Deprecated ☑️ 1.0+ 1.0-1.30 1.31+ code KEPs
AllowInsecureKubeletCertificateSigningRequests Deprecated ☑️ 1.0+ 1.0-1.30 1.31+ code KEPs
AllowOverwriteTerminationGracePeriodSeconds Deprecated ☑️ 1.0+ 🔐 1.35+ 1.0-1.31 1.32-1.34, 1.35+ code KEPs
AllowParsingUserUIDFromCertAuth Beta ☑️ 1.33+ 1.33+ code KEPs
AllowUnsafeMalformedObjectDeletion Alpha 1.32+ code KEPs
AnonymousAuthConfigurableEndpoints GA ☑️ 1.32+ 🔐 1.34+ 1.31 1.32-1.33 1.34+ code KEPs
AnyVolumeDataSource GA ☑️ 1.24+ 🔐 1.33+ 1.18-1.23 1.24-1.32 1.33+ code KEPs
AuthorizeNodeWithSelectors GA ☑️ 1.32+ 🔐 1.34+ 1.31 1.32-1.33 1.34+ • AuthorizeWithSelectors code KEPs
AuthorizePodWebsocketUpgradeCreatePermission Beta ☑️ 1.35+ 1.35+ code KEPs
AuthorizeWithSelectors GA ☑️ 1.32+ 🔐 1.34+ 1.31 1.32-1.33 1.34+ code KEPs
BtreeWatchCache GA ☑️ 1.32+ 🔐 1.33+ 1.32 1.33+ code KEPs
CBORServingAndStorage Alpha 1.32+ code KEPs
CPUManagerPolicyAlphaOptions Alpha 1.23+ code KEPs
CPUManagerPolicyBetaOptions Beta ☑️ 1.23+ 1.23+ code KEPs
CPUManagerPolicyOptions GA ☑️ 1.23+ 🔐 1.33+ 1.22 1.23-1.32 1.33+ code KEPs
CRDObservedGenerationTracking Beta 1.35+ code KEPs
CRDValidationRatcheting GA ☑️ 1.30+ 🔐 1.33+ 1.28-1.29 1.30-1.32 1.33+ code KEPs
CSIMigrationPortworx GA ☑️ 1.31+ 🔐 1.33+ 1.23-1.24 1.25-1.30, 1.31-1.32 1.33+ code KEPs
CSIServiceAccountTokenSecrets Beta ☑️ 1.35+ 1.35+ code KEPs
CSIVolumeHealth Alpha 1.21+ code KEPs
ChangeContainerStatusOnKubeletRestart Deprecated ☑️ 1.0+ 1.0-1.34 1.35+ code KEPs
ClearingNominatedNodeNameAfterBinding Beta ☑️ 1.35+ 1.34 1.35+ code KEPs
ClientsAllowCBOR Alpha 1.32+ code KEPs
ClientsPreferCBOR Alpha 1.32+ code KEPs
CloudControllerManagerWatchBasedRoutesReconciliation Alpha 1.35+ code KEPs
CloudControllerManagerWebhook Alpha 1.27+ code KEPs
ClusterTrustBundle Beta 1.27-1.32 1.33+ code KEPs
ClusterTrustBundleProjection Beta 1.29-1.32 1.33+ • ClusterTrustBundle code KEPs
ComponentFlagz Alpha 1.32+ code KEPs
ComponentStatusz Alpha 1.32+ code KEPs
ConcurrentWatchObjectDecode Beta 1.31+ code KEPs
ConsistentListFromCache GA ☑️ 1.31+ 🔐 1.34+ 1.28-1.30 1.31-1.33 1.34+ code KEPs
ConstrainedImpersonation Alpha 1.35+ code KEPs
ContainerCheckpoint Beta ☑️ 1.30+ 1.25-1.29 1.30+ code KEPs
ContainerRestartRules Beta ☑️ 1.35+ 1.34 1.35+ code KEPs
ContainerStopSignals Alpha 1.33+ code KEPs
CoordinatedLeaderElection Beta 1.31-1.32 1.33+ code KEPs
CrossNamespaceVolumeDataSource Alpha 1.26+ code KEPs
CustomCPUCFSQuotaPeriod Alpha 1.12+ code KEPs
CustomResourceFieldSelectors GA ☑️ 1.31+ 🔐 1.32+ 1.30 1.31 1.32+ code KEPs
DRAAdminAccess Beta ☑️ 1.34+ 1.32-1.33 1.34+ • DynamicResourceAllocation code KEPs
DRAConsumableCapacity Alpha 1.34+ • DynamicResourceAllocation code KEPs
DRADeviceBindingConditions Alpha 1.34+ • DRAResourceClaimDeviceStatus
• DynamicResourceAllocation
code KEPs
DRADeviceTaintRules Alpha 1.35+ • DRADeviceTaints code KEPs
DRADeviceTaints Alpha 1.33+ • DynamicResourceAllocation code KEPs
DRAExtendedResource Alpha 1.34+ • DynamicResourceAllocation code KEPs
DRAPartitionableDevices Alpha 1.33+ • DynamicResourceAllocation code KEPs
DRAPrioritizedList Beta ☑️ 1.34+ 1.33 1.34+ • DynamicResourceAllocation code KEPs
DRAResourceClaimDeviceStatus Beta ☑️ 1.33+ 1.32 1.33+ code KEPs
DRASchedulerFilterTimeout Beta ☑️ 1.34+ 1.34+ • DynamicResourceAllocation code KEPs
DeclarativeValidation Beta ☑️ 1.33+ 1.33+ code KEPs
DeclarativeValidationTakeover Beta 1.33+ • DeclarativeValidation code KEPs
DeploymentReplicaSetTerminatingReplicas Beta ☑️ 1.35+ 1.33-1.34 1.35+ code KEPs
DetectCacheInconsistency Beta ☑️ 1.34+ 1.34+ code KEPs
DisableAllocatorDualWrite GA ☑️ 1.34+ 🔐 1.35+ 1.31-1.32 1.33 1.34, 1.35+ • MultiCIDRServiceAllocator code KEPs
DisableCPUQuotaWithExclusiveCPUs Beta ☑️ 1.33+ 1.33+ code KEPs
DisableNodeKubeProxyVersion Deprecated ☑️ 1.33+ 1.29-1.30 1.31-1.32, 1.33+ code KEPs
DynamicResourceAllocation GA ☑️ 1.34+ 🔐 1.35+ 1.26-1.31 1.32-1.33 1.34, 1.35+ code KEPs
EnvFiles Beta ☑️ 1.35+ 1.34 1.35+ code KEPs
EventedPLEG Alpha 1.26+ code KEPs
ExecProbeTimeout GA ☑️ 1.20+ 🔐 1.35+ 1.20-1.34, 1.35+ code KEPs
ExternalServiceAccountTokenSigner Beta ☑️ 1.34+ 1.32-1.33 1.34+ code KEPs
GangScheduling Alpha 1.35+ • GenericWorkload code KEPs
GenericWorkload Alpha 1.35+ code KEPs
GitRepoVolumeDriver Deprecated ☑️ 1.0+ 1.0-1.32 1.33+ code KEPs
GracefulNodeShutdown Beta ☑️ 1.21+ 1.20 1.21+ code KEPs
GracefulNodeShutdownBasedOnPodPriority Beta ☑️ 1.24+ 1.23 1.24+ • GracefulNodeShutdown code KEPs
HPAConfigurableTolerance Beta ☑️ 1.35+ 1.33-1.34 1.35+ code KEPs
HPAScaleToZero Alpha 1.16+ code KEPs
HonorPVReclaimPolicy GA ☑️ 1.31+ 🔐 1.33+ 1.23-1.30 1.31-1.32 1.33+ code KEPs
HostnameOverride Beta ☑️ 1.35+ 1.34 1.35+ code KEPs
ImageMaximumGCAge GA ☑️ 1.30+ 🔐 1.35+ 1.29 1.30-1.34 1.35+ code KEPs
ImageVolume Beta ☑️ 1.35+ 1.31-1.32 1.33-1.34, 1.35+ code KEPs
InOrderInformers Beta ☑️ 1.33+ 1.33+ code KEPs
InOrderInformersBatchProcess Beta ☑️ 1.35+ 1.35+ code KEPs
InPlacePodLevelResourcesVerticalScaling Alpha 1.35+ • InPlacePodVerticalScaling
• NodeDeclaredFeatures
• PodLevelResources
code KEPs
InPlacePodVerticalScaling GA ☑️ 1.33+ 🔐 1.35+ 1.27-1.32 1.33-1.34 1.35+ code KEPs
InPlacePodVerticalScalingAllocatedStatus Deprecated 1.32 1.33+ • InPlacePodVerticalScaling code KEPs
InPlacePodVerticalScalingExclusiveCPUs Alpha 1.32+ • InPlacePodVerticalScaling code KEPs
InPlacePodVerticalScalingExclusiveMemory Alpha 1.34+ • InPlacePodVerticalScaling
• MemoryManager
code KEPs
InTreePluginPortworxUnregister Alpha 1.23+ code KEPs
InformerResourceVersion GA ☑️ 1.35+ 1.30-1.34 1.35+ code KEPs
JobBackoffLimitPerIndex GA ☑️ 1.29+ 🔐 1.33+ 1.28 1.29-1.32 1.33+ code KEPs
JobManagedBy GA ☑️ 1.32+ 🔐 1.35+ 1.30-1.31 1.32-1.34 1.35+ code KEPs
JobPodReplacementPolicy GA ☑️ 1.29+ 🔐 1.34+ 1.28 1.29-1.33 1.34+ code KEPs
JobSuccessPolicy GA ☑️ 1.31+ 🔐 1.33+ 1.30 1.31-1.32 1.33+ code KEPs
KMSv1 Deprecated ☑️ 1.0+ 1.0-1.27 1.28, 1.29+ code KEPs
KubeletCgroupDriverFromCRI GA ☑️ 1.31+ 🔐 1.34+ 1.28-1.30 1.31-1.33 1.34+ code KEPs
KubeletCrashLoopBackOffMax Beta ☑️ 1.35+ 1.32-1.34 1.35+ code KEPs
KubeletEnsureSecretPulledImages Beta ☑️ 1.35+ 1.33-1.34 1.35+ code KEPs
KubeletFineGrainedAuthz Beta ☑️ 1.33+ 1.32 1.33+ code KEPs
KubeletInUserNamespace Alpha 1.22+ code KEPs
KubeletPSI Beta ☑️ 1.34+ 1.33 1.34+ code KEPs
KubeletPodResourcesDynamicResources Beta ☑️ 1.34+ 1.27-1.33 1.34+ code KEPs
KubeletPodResourcesGet Beta ☑️ 1.34+ 1.27-1.33 1.34+ code KEPs
KubeletPodResourcesListUseActivePods Deprecated ☑️ 1.34+ 1.0-1.33 1.34+ code KEPs
KubeletRegistrationGetOnExistsOnly Deprecated ☑️ 1.0+ 1.0-1.31 1.32+ code KEPs
KubeletSeparateDiskGC Beta ☑️ 1.31+ 1.29-1.30 1.31+ code KEPs
KubeletServiceAccountTokenForCredentialProviders Beta ☑️ 1.34+ 1.33 1.34+ code KEPs
KubeletTracing GA ☑️ 1.27+ 🔐 1.34+ 1.25-1.26 1.27-1.33 1.34+ code KEPs
ListFromCacheSnapshot Beta ☑️ 1.34+ 1.33 1.34+ code KEPs
LocalStorageCapacityIsolationFSQuotaMonitoring Beta 1.15-1.30 1.31+ code KEPs
LogarithmicScaleDown GA ☑️ 1.22+ 🔐 1.31+ 1.21 1.22-1.30 1.31+ code KEPs
MatchLabelKeysInPodAffinity GA ☑️ 1.31+ 🔐 1.33+ 1.29-1.30 1.31-1.32 1.33+ code KEPs
MatchLabelKeysInPodTopologySpread Beta ☑️ 1.27+ 1.25-1.26 1.27+ code KEPs
MatchLabelKeysInPodTopologySpreadSelectorMerge Beta ☑️ 1.34+ 1.34+ • MatchLabelKeysInPodTopologySpread code KEPs
MaxUnavailableStatefulSet Beta ☑️ 1.35+ 1.24-1.34 1.35+ code KEPs
MemoryManager GA ☑️ 1.22+ 🔐 1.32+ 1.21 1.22-1.31 1.32+ code KEPs
MemoryQoS Alpha 1.22+ code KEPs
MultiCIDRServiceAllocator GA ☑️ 1.33+ 🔐 1.34+ 1.27-1.30 1.31-1.32 1.33, 1.34+ code KEPs
MutableCSINodeAllocatableCount Beta ☑️ 1.35+ 1.33 1.34, 1.35+ code KEPs
MutablePVNodeAffinity Alpha 1.35+ code KEPs
MutablePodResourcesForSuspendedJobs Alpha 1.35+ code KEPs
MutableSchedulingDirectivesForSuspendedJobs Alpha 1.35+ code KEPs
MutatingAdmissionPolicy Beta 1.32-1.33 1.34+ code KEPs
NFTablesProxyMode GA ☑️ 1.31+ 🔐 1.33+ 1.29-1.30 1.31-1.32 1.33+ code KEPs
NodeDeclaredFeatures Alpha 1.35+ code KEPs
NodeInclusionPolicyInPodTopologySpread GA ☑️ 1.26+ 🔐 1.33+ 1.25 1.26-1.32 1.33+ code KEPs
NodeLogQuery Beta 1.27-1.29 1.30+ code KEPs
NodeSwap GA ☑️ 1.30+ 🔐 1.34+ 1.22-1.27 1.28-1.29, 1.30-1.33 1.34+ code KEPs
NominatedNodeNameForExpectation Beta ☑️ 1.35+ 1.34 1.35+ code KEPs
OpenAPIEnums Beta ☑️ 1.24+ 1.23 1.24+ code KEPs
OpportunisticBatching Beta ☑️ 1.35+ 1.35+ code KEPs
OrderedNamespaceDeletion GA ☑️ 1.33+ 🔐 1.34+ 1.30-1.32, 1.33 1.34+ code KEPs
PodAndContainerStatsFromCRI Alpha 1.23+ code KEPs
PodCertificateRequest Beta 1.34 1.35+ • AuthorizeNodeWithSelectors code KEPs
PodDeletionCost Beta ☑️ 1.22+ 1.21 1.22+ code KEPs
PodLevelResources Beta ☑️ 1.34+ 1.32-1.33 1.34+ code KEPs
PodLifecycleSleepAction GA ☑️ 1.30+ 🔐 1.34+ 1.29 1.30-1.33 1.34+ code KEPs
PodLifecycleSleepActionAllowZero GA ☑️ 1.33+ 🔐 1.34+ 1.32 1.33 1.34+ • PodLifecycleSleepAction code KEPs
PodLogsQuerySplitStreams Alpha 1.32+ code KEPs
PodObservedGenerationTracking GA ☑️ 1.34+ 🔐 1.35+ 1.33 1.34 1.35+ code KEPs
PodReadyToStartContainersCondition Beta ☑️ 1.29+ 1.28 1.29+ code KEPs
PodSchedulingReadiness GA ☑️ 1.27+ 🔐 1.30+ 1.26 1.27-1.29 1.30+ code KEPs
PodTopologyLabelsAdmission Beta ☑️ 1.35+ 1.33-1.34 1.35+ code KEPs
PortForwardWebsockets Beta ☑️ 1.31+ 1.30 1.31+ code KEPs
PreferSameTrafficDistribution GA ☑️ 1.34+ 🔐 1.35+ 1.33 1.34 1.35+ code KEPs
PreventStaticPodAPIReferences Beta ☑️ 1.34+ 1.34+ code KEPs
ProcMountType Beta ☑️ 1.33+ 1.12-1.30 1.31-1.32, 1.33+ • UserNamespacesSupport code KEPs
QOSReserved Alpha 1.11+ code KEPs
RecoverVolumeExpansionFailure GA ☑️ 1.32+ 🔐 1.34+ 1.23-1.31 1.32-1.33 1.34+ code KEPs
RecursiveReadOnlyMounts GA ☑️ 1.31+ 🔐 1.33+ 1.30 1.31-1.32 1.33+ code KEPs
ReduceDefaultCrashLoopBackOffDecay Alpha 1.33+ code KEPs
RelaxedDNSSearchValidation GA ☑️ 1.33+ 🔐 1.34+ 1.32 1.33 1.34+ code KEPs
RelaxedEnvironmentVariableValidation GA ☑️ 1.32+ 🔐 1.34+ 1.30-1.31 1.32-1.33 1.34+ code KEPs
RelaxedServiceNameValidation Alpha 1.34+ code KEPs
ReloadKubeletServerCertificateFile Beta ☑️ 1.31+ 1.31+ code KEPs
RemoteRequestHeaderUID Beta ☑️ 1.33+ 1.32 1.33+ code KEPs
ResilientWatchCacheInitialization GA ☑️ 1.31+ 🔐 1.34+ 1.31-1.33 1.34+ code KEPs
ResourceHealthStatus Alpha 1.31+ • DynamicResourceAllocation code KEPs
RestartAllContainersOnContainerExits Alpha 1.35+ • ContainerRestartRules
• NodeDeclaredFeatures
code KEPs
RetryGenerateName GA ☑️ 1.31+ 🔐 1.32+ 1.30 1.31 1.32+ code KEPs
RotateKubeletServerCertificate Beta ☑️ 1.12+ 1.7-1.11 1.12+ code KEPs
RuntimeClassInImageCriApi Alpha 1.29+ code KEPs
SELinuxChangePolicy Beta ☑️ 1.33+ 1.32 1.33+ code KEPs
SELinuxMount Beta 1.30-1.32 1.33+ code KEPs
SELinuxMountReadWriteOncePod Beta ☑️ 1.28+ 1.25-1.26 1.27, 1.28+ code KEPs
SchedulerAsyncAPICalls Beta ☑️ 1.35+ 1.34, 1.35+ code KEPs
SchedulerAsyncPreemption Beta ☑️ 1.33+ 1.32 1.33+ code KEPs
SchedulerPopFromBackoffQ Beta ☑️ 1.33+ 1.33+ code KEPs
SchedulerQueueingHints GA ☑️ 1.32+ 🔐 1.34+ 1.28-1.31, 1.32-1.33 1.34+ code KEPs
SeparateCacheWatchRPC Deprecated ☑️ 1.28+ 1.28-1.32 1.33+ code KEPs
SeparateTaintEvictionController GA ☑️ 1.29+ 🔐 1.34+ 1.29-1.33 1.34+ code KEPs
ServiceAccountNodeAudienceRestriction Beta ☑️ 1.33+ 1.32, 1.33+ code KEPs
ServiceAccountTokenJTI GA ☑️ 1.30+ 🔐 1.32+ 1.29 1.30-1.31 1.32+ code KEPs
ServiceAccountTokenNodeBinding GA ☑️ 1.31+ 🔐 1.33+ 1.29-1.30 1.31-1.32 1.33+ • ServiceAccountTokenNodeBindingValidation code KEPs
ServiceAccountTokenNodeBindingValidation GA ☑️ 1.30+ 🔐 1.32+ 1.29 1.30-1.31 1.32+ code KEPs
ServiceAccountTokenPodNodeInfo GA ☑️ 1.30+ 🔐 1.32+ 1.29 1.30-1.31 1.32+ code KEPs
ServiceTrafficDistribution GA ☑️ 1.31+ 🔐 1.33+ 1.30 1.31-1.32 1.33+ code KEPs
SidecarContainers GA ☑️ 1.29+ 🔐 1.33+ 1.28 1.29-1.32 1.33+ code KEPs
SizeBasedListCostEstimate Beta ☑️ 1.34+ 1.34+ code KEPs
StatefulSetSemanticRevisionComparison Beta ☑️ 1.0+ 1.0+ code KEPs
StorageCapacityScoring Alpha 1.33+ code KEPs
StorageNamespaceIndex Deprecated ☑️ 1.30+ 1.30-1.32 1.33+ code KEPs
StorageVersionAPI Alpha 1.20+ • APIServerIdentity code KEPs
StorageVersionHash Beta ☑️ 1.15+ 1.14 1.15+ code KEPs
StorageVersionMigrator Beta 1.30-1.34 1.35+ code KEPs
StreamingCollectionEncodingToJSON GA ☑️ 1.33+ 🔐 1.34+ 1.33 1.34+ code KEPs
StreamingCollectionEncodingToProtobuf GA ☑️ 1.33+ 🔐 1.34+ 1.33 1.34+ code KEPs
StrictIPCIDRValidation Alpha 1.33+ code KEPs
StructuredAuthenticationConfiguration GA ☑️ 1.30+ 🔐 1.34+ 1.29 1.30-1.33 1.34+ code KEPs
StructuredAuthenticationConfigurationEgressSelector Beta ☑️ 1.34+ 1.34+ • StructuredAuthenticationConfiguration code KEPs
StructuredAuthenticationConfigurationJWKSMetrics Beta ☑️ 1.35+ 1.35+ • StructuredAuthenticationConfiguration code KEPs
StructuredAuthorizationConfiguration GA ☑️ 1.30+ 🔐 1.32+ 1.29 1.30-1.31 1.32+ code KEPs
SupplementalGroupsPolicy GA ☑️ 1.33+ 🔐 1.35+ 1.31-1.32 1.33-1.34 1.35+ code KEPs
SystemdWatchdog GA ☑️ 1.32+ 🔐 1.35+ 1.32-1.34 1.35+ code KEPs
TaintTolerationComparisonOperators Alpha 1.35+ code KEPs
TokenRequestServiceAccountUIDValidation Beta ☑️ 1.34+ 1.34+ code KEPs
TopologyAwareHints GA ☑️ 1.24+ 🔐 1.33+ 1.21-1.22 1.23, 1.24-1.32 1.33+ code KEPs
TopologyManagerPolicyAlphaOptions Alpha 1.26+ code KEPs
TopologyManagerPolicyBetaOptions Beta ☑️ 1.28+ 1.26-1.27, 1.28+ code KEPs
TopologyManagerPolicyOptions GA ☑️ 1.28+ 1.26-1.27 1.28-1.31 1.32+ code KEPs
TranslateStreamCloseWebsocketRequests Beta ☑️ 1.30+ 1.29 1.30+ code KEPs
UnauthenticatedHTTP2DOSMitigation Beta ☑️ 1.29+ 1.25-1.28, 1.29+ code KEPs
UnknownVersionInteroperabilityProxy Alpha 1.28+ • APIServerIdentity code KEPs
UserNamespacesHostNetworkSupport Alpha 1.35+ • UserNamespacesSupport code KEPs
UserNamespacesSupport Beta ☑️ 1.33+ 1.25-1.29 1.30-1.32, 1.33+ code KEPs
VolumeAttributesClass GA ☑️ 1.34+ 1.29-1.30 1.31-1.33 1.34+ code KEPs
VolumeLimitScaling Alpha 1.35+ code KEPs
WatchCacheInitializationPostStartHook Beta 1.31+ code KEPs
WatchFromStorageWithoutResourceVersion Deprecated 🔐 1.33+ 1.27-1.32 1.33+ code KEPs
WatchList Beta ☑️ 1.32+ 1.27-1.31 1.32, 1.33, 1.34+ code KEPs
WatchListClient Beta ☑️ 1.35+ 1.30-1.34, 1.35+ code KEPs
WinDSR GA ☑️ 1.33+ 🔐 1.34+ 1.14-1.32 1.33 1.34+ code KEPs
WinOverlay GA ☑️ 1.20+ 🔐 1.34+ 1.14-1.19 1.20-1.33 1.34+ code KEPs
WindowsCPUAndMemoryAffinity Alpha 1.32+ • MemoryManager code KEPs
WindowsGracefulNodeShutdown Beta ☑️ 1.34+ 1.32-1.33 1.34+ • GracefulNodeShutdown code KEPs
WindowsHostNetwork Deprecated 1.26-1.32 1.33+ code KEPs

Legend

Symbol Meaning
☑️ Enabled by default (in Enabled column: version when first enabled)
🔐 Locked to default, cannot be changed (in Locked column: version when first locked)
1.X+ Feature is in this state from version 1.X onwards

Statistics

Stage Count Percentage
Alpha 52 24.4%
Beta 84 39.4%
GA 62 29.1%
Deprecated 15 7.0%
Total 213 100%
// copy to the bottom of the file - pkg/features/kube_features_test.go
func TestGenerateMarkDownOfAllKubeFeaturesRegistered(t *testing.T) {
var sb strings.Builder
sb.WriteString("| Feature | Alpha | Beta | GA | Deprecated | Links |\n")
sb.WriteString("|---------|-------|------|----|----|----|\n")
// Extract keys from the map
keys := make([]string, 0, len(defaultVersionedKubernetesFeatureGates))
for key := range defaultVersionedKubernetesFeatureGates {
keys = append(keys, string(key))
}
sort.Strings(keys)
for _, feature := range keys {
specs := defaultVersionedKubernetesFeatureGates[featuregate.Feature(feature)]
alpha, beta, ga, deprecated := "", "", "", ""
for _, spec := range specs {
switch spec.PreRelease {
case featuregate.Alpha:
if len(alpha) > 0 {
alpha += ", "
}
alpha += spec.Version.String()
if spec.Default {
alpha += " :ballot_box_with_check:"
}
if spec.LockToDefault {
alpha += " :closed_lock_with_key:"
}
case featuregate.Beta:
if len(beta) > 0 {
beta += ", "
}
beta += spec.Version.String()
if spec.Default {
beta += " :ballot_box_with_check:"
}
if spec.LockToDefault {
beta += " :closed_lock_with_key:"
}
case featuregate.GA:
if len(ga) > 0 {
ga += ", "
}
ga += spec.Version.String()
if spec.Default {
ga += " :ballot_box_with_check:"
}
if spec.LockToDefault {
ga += " :closed_lock_with_key:"
}
case featuregate.Deprecated:
depVer := spec.Version.String()
if spec.Default {
depVer += " :ballot_box_with_check:"
} else {
depVer += " :red_circle:"
}
if spec.LockToDefault {
depVer += " :closed_lock_with_key:"
}
if len(deprecated) > 0 {
deprecated += ", "
deprecated += depVer
} else {
deprecated = depVer
}
}
}
link_to_code := fmt.Sprintf("[code](https://cs.k8s.io/?q=%%5Cb%s%%5Cb&i=nope&files=&excludeFiles=CHANGELOG&repos=kubernetes/kubernetes)", feature)
link_to_enhancements := fmt.Sprintf("[KEPs](https://cs.k8s.io/?q=%%5Cb%s%%5Cb&i=nope&files=&excludeFiles=CHANGELOG&repos=kubernetes/enhancements)", feature)
sb.WriteString(fmt.Sprintf("| %s | %s | %s | %s | %s |%s %s\n", feature, alpha, beta, ga, deprecated, link_to_code, link_to_enhancements))
}
sb.WriteString("\n\n Legend: :ballot_box_with_check: - enabled, :red_circle: - disabled\n")
sb.WriteString("\t\t:closed_lock_with_key: - locked to default\n")
fmt.Print(sb.String())
}
@aojea
Copy link

aojea commented Jan 13, 2025

Love it 🥇

@pacoxu
Copy link

pacoxu commented Jan 17, 2025

Can we sort it by last updated version?

@dims
Copy link
Author

dims commented Jan 17, 2025

@pacoxu we can generate a CSV that can then be used in excel or google sheets. Also feel free to fork this gist to experiment!

@pacoxu
Copy link

pacoxu commented Jan 21, 2025

https://docs.google.com/spreadsheets/d/1IxBtCeWOI8qWjF5jauT7pzfKwJssEhHErS4L6VcHgnU/edit?usp=sharing

I created one like this and updated status of some KEPs with @carlory.

  • We mainly update SIG-Node and SIG-Storage KEPs.

@pacoxu
Copy link

pacoxu commented Jan 22, 2025

We have updated all keps that has no update after v1.26 now.

https://docs.google.com/spreadsheets/d/1IxBtCeWOI8qWjF5jauT7pzfKwJssEhHErS4L6VcHgnU/edit?gid=1555406139#gid=1555406139

I divide it into 3 pages

  • not update after v1.22
  • updated between 1.23 and v1.29:
    • v1.23-v1.28
    • v1.29
  • updated after v1.30

@BenTheElder
Copy link

After 1.33 there will be no alpha + enabled (WindowsHostNetwork was removed and we have a presubmit check now)

@dims
Copy link
Author

dims commented Apr 10, 2025

@BenTheElder let me regenerate the data now that we cut rc.0

@dims
Copy link
Author

dims commented Apr 11, 2025

@BenTheElder we still have WindowsHostNetwork, defaulted to false and deprecated.

	WindowsHostNetwork: {
		{Version: version.MustParse("1.26"), Default: false, PreRelease: featuregate.Alpha},
		{Version: version.MustParse("1.33"), Default: false, PreRelease: featuregate.Deprecated},
	},

https://github.com/kubernetes/kubernetes/blob/88dfcb225d41326113990e87b11137641c121a32/pkg/features/kube_features.go#L1863-L1866

@BenTheElder
Copy link

@BenTheElder we still have WindowsHostNetwork, defaulted to false and deprecated.

Er right, but not alpha+default enabled. Should've noticed that earlier scrolling this table :-)

@BenTheElder
Copy link

Very neat use of the versioned FeatureGates info , something like this would be pretty cool on kubernetes.io

@pacoxu
Copy link

pacoxu commented Apr 11, 2025

@BenTheElder we still have WindowsHostNetwork, defaulted to false and deprecated.

	WindowsHostNetwork: {
		{Version: version.MustParse("1.26"), Default: false, PreRelease: featuregate.Alpha},
		{Version: version.MustParse("1.33"), Default: false, PreRelease: featuregate.Deprecated},
	},

https://github.com/kubernetes/kubernetes/blob/88dfcb225d41326113990e87b11137641c121a32/pkg/features/kube_features.go#L1863-L1866

In the PR, the logic of this FG are totally removed: this is not like a traditional deprecation.

@BenTheElder
Copy link

@pacoxu oof, lets take this to slack or the PR and follow up there

I'm also reaching out to the compat version folks about this table, @siyuanfoundation mentioned there's a tracking issue to implement something similar in the kubernetes docs using the feature gate yaml

@dims
Copy link
Author

dims commented Nov 29, 2025

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment