特性门控
本页详述了管理员可以在不同的 Kubernetes 组件上指定的各种特性门控。
关于特性各个阶段的说明,请参见特性阶段。
概述
特性门控是描述 Kubernetes 特性的一组键值对。你可以在 Kubernetes 的各个组件中使用
--feature-gates 标志来启用或禁用这些特性。
每个 Kubernetes 组件都支持启用或禁用与该组件相关的一组特性门控。
使用 -h 参数来查看所有组件支持的完整特性门控。
要为诸如 kubelet 之类的组件设置特性门控,请使用 --feature-gates 参数,
并向其传递一个特性设置键值对列表:
--feature-gates=...,GracefulNodeShutdown=true
下表总结了在不同的 Kubernetes 组件上可以设置的特性门控。
- 引入特性或更改其发布阶段后,"开始(Since)" 列将包含 Kubernetes 版本。
- "结束(Until)" 列(如果不为空)包含最后一个 Kubernetes 版本,你仍可以在其中使用特性门控。
- 如果某个特性处于 Alpha 或 Beta 状态,你可以在 Alpha 和 Beta 特性门控表中找到该特性。
- 如果某个特性处于稳定状态, 你可以在已毕业和废弃特性门控表中找到该特性的所有阶段。
- 已毕业和废弃特性门控表还列出了废弃的和已被移除的特性。
说明:
有关已移除的原有特性门控的参考信息, 请参阅已移除的特性门控。
Alpha 和 Beta 状态的特性门控
| 特性 | 默认值 | 阶段 | 自从 | 直到 | 
|---|---|---|---|---|
| AllowParsingUserUIDFromCertAuth | false | Alpha | 1.33 | – | 
| AllowUnsafeMalformedObjectDeletion | false | Alpha | 1.32 | – | 
| AnonymousAuthConfigurableEndpoints | false | Alpha | 1.31 | – | 
| APIResponseCompression | false | Alpha | 1.7 | 1.15 | 
| APIResponseCompression | true | Beta | 1.16 | – | 
| APIServerIdentity | false | Alpha | 1.20 | 1.25 | 
| APIServerIdentity | true | Beta | 1.26 | – | 
| APIServingWithRoutine | false | Alpha | 1.30 | – | 
| AuthorizeNodeWithSelectors | false | Alpha | 1.31 | – | 
| AuthorizeWithSelectors | false | Alpha | 1.31 | – | 
| CBORServingAndStorage | false | Alpha | 1.32 | – | 
| CloudControllerManagerWebhook | false | Alpha | 1.27 | – | 
| ClusterTrustBundle | false | Alpha | 1.27 | 1.32 | 
| ClusterTrustBundle | false | Beta | 1.33 | – | 
| ClusterTrustBundleProjection | false | Alpha | 1.29 | 1.32 | 
| ClusterTrustBundleProjection | false | Beta | 1.33 | – | 
| ComponentFlagz | false | Alpha | 1.32 | – | 
| ComponentSLIs | false | Alpha | 1.26 | 1.26 | 
| ComponentSLIs | true | Beta | 1.27 | – | 
| ComponentStatusz | false | Alpha | 1.32 | – | 
| ConcurrentWatchObjectDecode | false | Beta | 1.31 | – | 
| ConsistentListFromCache | false | Alpha | 1.28 | 1.30 | 
| ConsistentListFromCache | true | Beta | 1.31 | – | 
| ContainerCheckpoint | false | Alpha | 1.25 | 1.29 | 
| ContainerCheckpoint | true | Beta | 1.30 | – | 
| ContainerStopSignals | false | Alpha | 1.33 | – | 
| ContextualLogging | false | Alpha | 1.24 | – | 
| ContextualLogging | true | Beta | 1.30 | – | 
| CoordinatedLeaderElection | false | Alpha | 1.31 | 1.32 | 
| CoordinatedLeaderElection | false | Beta | 1.33 | – | 
| CPUManagerPolicyAlphaOptions | false | Alpha | 1.23 | – | 
| CPUManagerPolicyBetaOptions | true | Beta | 1.23 | – | 
| CronJobsScheduledAnnotation | true | Beta | 1.28 | – | 
| CrossNamespaceVolumeDataSource | false | Alpha | 1.26 | – | 
| CSIVolumeHealth | false | Alpha | 1.21 | – | 
| CustomCPUCFSQuotaPeriod | false | Alpha | 1.12 | – | 
| CustomResourceFieldSelectors | false | Alpha | 1.30 | 1.30 | 
| CustomResourceFieldSelectors | true | Beta | 1.31 | – | 
| DeclarativeValidation | true | Beta | 1.33 | – | 
| DeclarativeValidationTakeover | false | Beta | 1.33 | – | 
| DeploymentReplicaSetTerminatingReplicas | false | Alpha | 1.33 | – | 
| DisableAllocatorDualWrite | false | Alpha | 1.31 | 1.32 | 
| DisableAllocatorDualWrite | false | Beta | 1.33 | – | 
| DRAAdminAccess | false | Alpha | 1.32 | 1.33 | 
| DRAAdminAccess | true | Beta | 1.34 | – | 
| DRADeviceTaints | false | Alpha | 1.33 | – | 
| DRAPartitionableDevices | false | Alpha | 1.33 | – | 
| DRAPrioritizedList | false | Alpha | 1.33 | – | 
| DRAPrioritizedList | true | Beta | 1.34 | – | 
| DRAResourceClaimDeviceStatus | false | Alpha | 1.32 | 1.32 | 
| DRAResourceClaimDeviceStatus | true | Beta | 1.33 | – | 
| DynamicResourceAllocation | false | Alpha | 1.30 | 1.31 | 
| DynamicResourceAllocation | false | Beta | 1.32 | – | 
| EventedPLEG | false | Alpha | 1.26 | – | 
| ExternalServiceAccountTokenSigner | false | Alpha | 1.32 | – | 
| GracefulNodeShutdown | false | Alpha | 1.20 | 1.20 | 
| GracefulNodeShutdown | true | Beta | 1.21 | – | 
| GracefulNodeShutdownBasedOnPodPriority | false | Alpha | 1.23 | 1.23 | 
| GracefulNodeShutdownBasedOnPodPriority | true | Beta | 1.24 | – | 
| HPAConfigurableTolerance | false | Alpha | 1.33 | – | 
| HPAScaleToZero | false | Alpha | 1.16 | – | 
| ImageMaximumGCAge | false | Alpha | 1.29 | 1.29 | 
| ImageMaximumGCAge | true | Beta | 1.30 | – | 
| ImageVolume | false | Alpha | 1.31 | 1.32 | 
| ImageVolume | false | Beta | 1.33 | – | 
| InformerResourceVersion | false | Alpha | 1.30 | – | 
| InPlacePodVerticalScaling | false | Alpha | 1.27 | 1.32 | 
| InPlacePodVerticalScaling | true | Beta | 1.33 | – | 
| InPlacePodVerticalScalingExclusiveCPUs | false | Alpha | 1.32 | – | 
| InTreePluginPortworxUnregister | false | Alpha | 1.23 | – | 
| JobManagedBy | false | Alpha | 1.30 | 1.31 | 
| JobManagedBy | true | Beta | 1.32 | – | 
| JobPodReplacementPolicy | false | Alpha | 1.28 | 1.28 | 
| JobPodReplacementPolicy | true | Beta | 1.29 | – | 
| KubeletCrashLoopBackOffMax | false | Alpha | 1.32 | – | 
| KubeletEnsureSecretPulledImages | false | Alpha | 1.33 | – | 
| KubeletFineGrainedAuthz | false | Alpha | 1.32 | 1.32 | 
| KubeletFineGrainedAuthz | true | Beta | 1.33 | – | 
| KubeletInUserNamespace | false | Alpha | 1.22 | – | 
| KubeletPodResourcesDynamicResources | false | Alpha | 1.27 | 1.33 | 
| KubeletPodResourcesDynamicResources | true | Beta | 1.34 | – | 
| KubeletPodResourcesGet | false | Alpha | 1.27 | – | 
| KubeletPSI | false | Alpha | 1.33 | – | 
| KubeletSeparateDiskGC | false | Alpha | 1.29 | 1.30 | 
| KubeletSeparateDiskGC | true | Beta | 1.31 | – | 
| KubeletServiceAccountTokenForCredentialProviders | false | Alpha | 1.33 | – | 
| KubeletTracing | false | Alpha | 1.25 | 1.26 | 
| KubeletTracing | true | Beta | 1.27 | – | 
| ListFromCacheSnapshot | false | Alpha | 1.33 | – | 
| LocalStorageCapacityIsolationFSQuotaMonitoring | false | Alpha | 1.15 | 1.30 | 
| LocalStorageCapacityIsolationFSQuotaMonitoring | false | Beta | 1.31 | – | 
| LoggingAlphaOptions | false | Alpha | 1.24 | – | 
| LoggingBetaOptions | true | Beta | 1.24 | – | 
| MatchLabelKeysInPodTopologySpread | false | Alpha | 1.25 | 1.26 | 
| MatchLabelKeysInPodTopologySpread | true | Beta | 1.27 | – | 
| MaxUnavailableStatefulSet | false | Alpha | 1.24 | – | 
| MemoryQoS | false | Alpha | 1.22 | – | 
| MutableCSINodeAllocatableCount | false | Alpha | 1.33 | – | 
| MutatingAdmissionPolicy | false | Alpha | 1.30 | – | 
| NodeLogQuery | false | Alpha | 1.27 | 1.29 | 
| NodeLogQuery | false | Beta | 1.30 | – | 
| NodeSwap | false | Alpha | 1.22 | 1.27 | 
| NodeSwap | false | Beta | 1.28 | 1.29 | 
| NodeSwap | true | Beta | 1.30 | – | 
| OpenAPIEnums | false | Alpha | 1.23 | 1.23 | 
| OpenAPIEnums | true | Beta | 1.24 | – | 
| OrderedNamespaceDeletion | false | Beta | 1.30 | 1.32 | 
| OrderedNamespaceDeletion | true | Beta | 1.33 | – | 
| PodAndContainerStatsFromCRI | false | Alpha | 1.23 | – | 
| PodDeletionCost | false | Alpha | 1.21 | 1.21 | 
| PodDeletionCost | true | Beta | 1.22 | – | 
| PodLevelResources | false | Alpha | 1.32 | – | 
| PodLifecycleSleepAction | false | Alpha | 1.29 | 1.29 | 
| PodLifecycleSleepAction | true | Beta | 1.30 | – | 
| PodLifecycleSleepActionAllowZero | false | Alpha | 1.32 | 1.32 | 
| PodLifecycleSleepActionAllowZero | true | Beta | 1.33 | – | 
| PodLogsQuerySplitStreams | false | Alpha | 1.32 | – | 
| PodObservedGenerationTracking | false | Alpha | 1.33 | – | 
| PodReadyToStartContainersCondition | false | Alpha | 1.28 | 1.28 | 
| PodReadyToStartContainersCondition | true | Beta | 1.29 | – | 
| PodTopologyLabelsAdmission | false | Alpha | 1.33 | – | 
| PortForwardWebsockets | false | Alpha | 1.30 | 1.30 | 
| PortForwardWebsockets | true | Beta | 1.31 | – | 
| PreferSameTrafficDistribution | false | Alpha | 1.33 | – | 
| ProcMountType | false | Alpha | 1.12 | 1.30 | 
| ProcMountType | false | Beta | 1.31 | 1.32 | 
| ProcMountType | true | Beta | 1.33 | – | 
| QOSReserved | false | Alpha | 1.11 | – | 
| RecoverVolumeExpansionFailure | false | Alpha | 1.23 | 1.31 | 
| RecoverVolumeExpansionFailure | true | Beta | 1.32 | – | 
| ReduceDefaultCrashLoopBackOffDecay | false | Alpha | 1.33 | – | 
| RelaxedDNSSearchValidation | false | Alpha | 1.32 | 1.32 | 
| RelaxedDNSSearchValidation | true | Beta | 1.33 | – | 
| RelaxedEnvironmentVariableValidation | false | Alpha | 1.30 | 1.31 | 
| RelaxedEnvironmentVariableValidation | true | Beta | 1.32 | – | 
| ReloadKubeletServerCertificateFile | true | Beta | 1.31 | – | 
| RemoteRequestHeaderUID | false | Alpha | 1.32 | – | 
| ResilientWatchCacheInitialization | true | Beta | 1.31 | – | 
| ResourceHealthStatus | false | Alpha | 1.31 | – | 
| RotateKubeletServerCertificate | false | Alpha | 1.7 | 1.11 | 
| RotateKubeletServerCertificate | true | Beta | 1.12 | – | 
| RuntimeClassInImageCriApi | false | Alpha | 1.29 | – | 
| SchedulerAsyncPreemption | false | Alpha | 1.32 | 1.32 | 
| SchedulerAsyncPreemption | true | Beta | 1.33 | – | 
| SchedulerPopFromBackoffQ | true | Beta | 1.33 | – | 
| SchedulerQueueingHints | true | Beta | 1.28 | 1.28 | 
| SchedulerQueueingHints | false | Beta | 1.29 | 1.31 | 
| SchedulerQueueingHints | true | Beta | 1.32 | – | 
| SELinuxChangePolicy | false | Alpha | 1.32 | 1.32 | 
| SELinuxChangePolicy | true | Beta | 1.33 | – | 
| SELinuxMount | false | Alpha | 1.30 | 1.32 | 
| SELinuxMount | false | Beta | 1.33 | – | 
| SELinuxMountReadWriteOncePod | false | Alpha | 1.25 | 1.26 | 
| SELinuxMountReadWriteOncePod | false | Beta | 1.27 | 1.27 | 
| SELinuxMountReadWriteOncePod | true | Beta | 1.28 | – | 
| SeparateTaintEvictionController | true | Beta | 1.29 | – | 
| ServiceAcccountNodeAudienceRestriction | false | Beta | 1.32 | 1.32 | 
| ServiceAcccountNodeAudienceRestriction | true | Beta | 1.33 | – | 
| StorageCapacityScoring | false | Alpha | 1.33 | – | 
| StorageVersionAPI | false | Alpha | 1.20 | – | 
| StorageVersionHash | false | Alpha | 1.14 | 1.14 | 
| StorageVersionHash | true | Beta | 1.15 | – | 
| StorageVersionMigrator | false | Alpha | 1.30 | – | 
| StreamingCollectionEncodingToJSON | true | Alpha | 1.33 | – | 
| StreamingCollectionEncodingToProtobuf | true | Alpha | 1.33 | – | 
| StrictIPCIDRValidation | false | Alpha | 1.33 | – | 
| StructuredAuthenticationConfiguration | false | Alpha | 1.29 | 1.29 | 
| StructuredAuthenticationConfiguration | true | Beta | 1.30 | – | 
| SupplementalGroupsPolicy | false | Alpha | 1.31 | 1.32 | 
| SupplementalGroupsPolicy | true | Beta | 1.33 | – | 
| SystemdWatchdog | true | Beta | 1.32 | – | 
| TopologyManagerPolicyAlphaOptions | false | Alpha | 1.26 | – | 
| TopologyManagerPolicyBetaOptions | false | Beta | 1.26 | 1.27 | 
| TopologyManagerPolicyBetaOptions | true | Beta | 1.28 | – | 
| TranslateStreamCloseWebsocketRequests | false | Alpha | 1.29 | 1.29 | 
| TranslateStreamCloseWebsocketRequests | true | Beta | 1.30 | – | 
| UnauthenticatedHTTP2DOSMitigation | false | Beta | 1.28 | 1.28 | 
| UnauthenticatedHTTP2DOSMitigation | true | Beta | 1.29 | – | 
| UnknownVersionInteroperabilityProxy | false | Alpha | 1.28 | – | 
| UserNamespacesPodSecurityStandards | false | Alpha | 1.29 | – | 
| UserNamespacesSupport | false | Alpha | 1.28 | 1.29 | 
| UserNamespacesSupport | false | Beta | 1.30 | 1.32 | 
| UserNamespacesSupport | true | Beta | 1.33 | – | 
| VolumeAttributesClass | false | Alpha | 1.29 | 1.30 | 
| VolumeAttributesClass | false | Beta | 1.31 | – | 
| WatchCacheInitializationPostStartHook | false | Beta | 1.31 | – | 
| WatchList | false | Alpha | 1.27 | 1.31 | 
| WatchList | true | Beta | 1.32 | 1.32 | 
| WatchList | false | Beta | 1.33 | 1.33 | 
| WatchList | true | Beta | 1.34 | – | 
| WatchListClient | false | Beta | 1.30 | – | 
| WindowsCPUAndMemoryAffinity | false | Alpha | 1.32 | – | 
| WindowsGracefulNodeShutdown | false | Alpha | 1.32 | – | 
| WinDSR | false | Alpha | 1.14 | 1.32 | 
| WinDSR | true | Beta | 1.33 | – | 
| WinOverlay | false | Alpha | 1.14 | 1.19 | 
| WinOverlay | true | Beta | 1.20 | – | 
已毕业和已废弃的特性门控
| 特性 | 默认值 | 阶段 | 自从 | 直到 | 
|---|---|---|---|---|
| AllowDNSOnlyNodeCSR | false | 已弃用 | 1.31 | – | 
| AllowInsecureKubeletCertificateSigningRequests | false | 已弃用 | 1.31 | – | 
| AllowServiceLBStatusOnNonLB | false | 已弃用 | 1.29 | – | 
| AnyVolumeDataSource | false | Alpha | 1.18 | 1.23 | 
| AnyVolumeDataSource | true | Beta | 1.24 | 1.32 | 
| AnyVolumeDataSource | true | GA | 1.33 | – | 
| APIServerTracing | false | Alpha | 1.22 | 1.26 | 
| APIServerTracing | true | Beta | 1.27 | 1.33 | 
| APIServerTracing | true | GA | 1.34 | – | 
| BtreeWatchCache | true | Beta | 1.32 | 1.32 | 
| BtreeWatchCache | true | GA | 1.33 | – | 
| CloudDualStackNodeIPs | false | Alpha | 1.27 | 1.28 | 
| CloudDualStackNodeIPs | true | Beta | 1.29 | 1.29 | 
| CloudDualStackNodeIPs | true | GA | 1.30 | – | 
| CPUManagerPolicyOptions | false | Alpha | 1.22 | 1.22 | 
| CPUManagerPolicyOptions | true | Beta | 1.23 | 1.32 | 
| CPUManagerPolicyOptions | true | GA | 1.33 | – | 
| CRDValidationRatcheting | false | Alpha | 1.28 | 1.29 | 
| CRDValidationRatcheting | true | Beta | 1.30 | 1.32 | 
| CRDValidationRatcheting | true | GA | 1.33 | – | 
| CSIMigrationPortworx | false | Alpha | 1.23 | 1.24 | 
| CSIMigrationPortworx | false | Beta | 1.25 | 1.30 | 
| CSIMigrationPortworx | true | Beta | 1.31 | 1.32 | 
| CSIMigrationPortworx | true | GA | 1.33 | – | 
| DevicePluginCDIDevices | false | Alpha | 1.28 | 1.28 | 
| DevicePluginCDIDevices | true | Beta | 1.29 | 1.30 | 
| DevicePluginCDIDevices | true | GA | 1.31 | – | 
| DisableNodeKubeProxyVersion | false | Alpha | 1.29 | 1.30 | 
| DisableNodeKubeProxyVersion | true | Beta | 1.31.0 | 1.31.0 | 
| DisableNodeKubeProxyVersion | false | 已弃用 | 1.31.1 | – | 
| DisableNodeKubeProxyVersion | false | 已弃用 | 1.32 | 1.32 | 
| DisableNodeKubeProxyVersion | true | 已弃用 | 1.33 | – | 
| ElasticIndexedJob | true | Beta | 1.27 | 1.30 | 
| ElasticIndexedJob | true | GA | 1.31 | – | 
| ExecProbeTimeout | true | GA | 1.20 | – | 
| HonorPVReclaimPolicy | false | Alpha | 1.23 | 1.30 | 
| HonorPVReclaimPolicy | true | Beta | 1.31 | 1.32 | 
| HonorPVReclaimPolicy | true | GA | 1.33 | – | 
| HPAContainerMetrics | false | Alpha | 1.20 | 1.26 | 
| HPAContainerMetrics | true | Beta | 1.27 | 1.29 | 
| HPAContainerMetrics | true | GA | 1.30 | – | 
| InPlacePodVerticalScalingAllocatedStatus | false | Alpha | 1.32 | 1.32 | 
| InPlacePodVerticalScalingAllocatedStatus | false | 已弃用 | 1.33 | – | 
| JobBackoffLimitPerIndex | false | Alpha | 1.28 | 1.28 | 
| JobBackoffLimitPerIndex | true | Beta | 1.29 | 1.32 | 
| JobBackoffLimitPerIndex | true | GA | 1.33 | – | 
| JobSuccessPolicy | false | Alpha | 1.30 | 1.30 | 
| JobSuccessPolicy | true | Beta | 1.31 | 1.32 | 
| JobSuccessPolicy | true | GA | 1.33 | – | 
| KMSv1 | true | 已弃用 | 1.28 | 1.28 | 
| KMSv1 | false | 已弃用 | 1.29 | – | 
| KubeletCgroupDriverFromCRI | false | Alpha | 1.28 | 1.30 | 
| KubeletCgroupDriverFromCRI | true | Beta | 1.31 | – | 
| KubeletCgroupDriverFromCRI | true | GA | 1.34 | – | 
| LoadBalancerIPMode | false | Alpha | 1.29 | 1.30 | 
| LoadBalancerIPMode | true | Beta | 1.30 | 1.31 | 
| LoadBalancerIPMode | true | GA | 1.32 | – | 
| LogarithmicScaleDown | false | Alpha | 1.21 | 1.21 | 
| LogarithmicScaleDown | true | Beta | 1.22 | 1.30 | 
| LogarithmicScaleDown | true | GA | 1.31 | – | 
| MatchLabelKeysInPodAffinity | false | Alpha | 1.29 | 1.30 | 
| MatchLabelKeysInPodAffinity | true | Beta | 1.31 | 1.32 | 
| MatchLabelKeysInPodAffinity | true | GA | 1.33 | – | 
| MemoryManager | false | Alpha | 1.21 | 1.21 | 
| MemoryManager | true | Beta | 1.22 | 1.31 | 
| MemoryManager | true | GA | 1.32 | – | 
| MultiCIDRServiceAllocator | false | Alpha | 1.27 | 1.30 | 
| MultiCIDRServiceAllocator | false | Beta | 1.31 | 1.32 | 
| MultiCIDRServiceAllocator | true | GA | 1.33 | – | 
| NFTablesProxyMode | false | Alpha | 1.29 | 1.30 | 
| NFTablesProxyMode | true | Beta | 1.31 | 1.32 | 
| NFTablesProxyMode | true | GA | 1.33 | – | 
| NodeInclusionPolicyInPodTopologySpread | false | Alpha | 1.25 | 1.25 | 
| NodeInclusionPolicyInPodTopologySpread | true | Beta | 1.26 | 1.32 | 
| NodeInclusionPolicyInPodTopologySpread | true | GA | 1.33 | – | 
| PodDisruptionConditions | false | Alpha | 1.25 | 1.25 | 
| PodDisruptionConditions | true | Beta | 1.26 | 1.30 | 
| PodDisruptionConditions | true | GA | 1.31 | – | 
| PodIndexLabel | true | Beta | 1.28 | 1.31 | 
| PodIndexLabel | true | GA | 1.32 | – | 
| PodSchedulingReadiness | false | Alpha | 1.26 | 1.26 | 
| PodSchedulingReadiness | true | Beta | 1.27 | 1.29 | 
| PodSchedulingReadiness | true | GA | 1.30 | – | 
| RecursiveReadOnlyMounts | false | Alpha | 1.30 | 1.30 | 
| RecursiveReadOnlyMounts | true | Beta | 1.31 | 1.32 | 
| RecursiveReadOnlyMounts | true | GA | 1.33 | – | 
| RetryGenerateName | false | Alpha | 1.30 | 1.30 | 
| RetryGenerateName | true | Beta | 1.31 | 1.31 | 
| RetryGenerateName | true | GA | 1.32 | – | 
| SeparateCacheWatchRPC | true | Beta | 1.28 | 1.32 | 
| SeparateCacheWatchRPC | false | 已弃用 | 1.33 | – | 
| ServiceAccountTokenJTI | false | Alpha | 1.29 | 1.29 | 
| ServiceAccountTokenJTI | true | Beta | 1.30 | 1.31 | 
| ServiceAccountTokenJTI | true | GA | 1.32 | – | 
| ServiceAccountTokenNodeBinding | false | Alpha | 1.29 | 1.30 | 
| ServiceAccountTokenNodeBinding | true | Beta | 1.31 | 1.32 | 
| ServiceAccountTokenNodeBinding | true | GA | 1.33 | – | 
| ServiceAccountTokenNodeBindingValidation | false | Alpha | 1.29 | 1.29 | 
| ServiceAccountTokenNodeBindingValidation | true | Beta | 1.30 | 1.31 | 
| ServiceAccountTokenNodeBindingValidation | true | GA | 1.32 | – | 
| ServiceAccountTokenPodNodeInfo | false | Alpha | 1.29 | 1.29 | 
| ServiceAccountTokenPodNodeInfo | true | Beta | 1.30 | 1.31 | 
| ServiceAccountTokenPodNodeInfo | true | GA | 1.32 | – | 
| ServiceTrafficDistribution | false | Alpha | 1.30 | 1.30 | 
| ServiceTrafficDistribution | true | Beta | 1.31 | 1.32 | 
| ServiceTrafficDistribution | true | GA | 1.33 | – | 
| SidecarContainers | false | Alpha | 1.28 | 1.28 | 
| SidecarContainers | true | Beta | 1.29 | 1.32 | 
| SidecarContainers | true | GA | 1.33 | – | 
| SizeMemoryBackedVolumes | false | Alpha | 1.20 | 1.21 | 
| SizeMemoryBackedVolumes | true | Beta | 1.22 | 1.31 | 
| SizeMemoryBackedVolumes | true | GA | 1.32 | – | 
| StatefulSetAutoDeletePVC | false | Alpha | 1.23 | 1.26 | 
| StatefulSetAutoDeletePVC | true | Beta | 1.27 | 1.31 | 
| StatefulSetAutoDeletePVC | true | GA | 1.32 | – | 
| StatefulSetStartOrdinal | false | Alpha | 1.26 | 1.26 | 
| StatefulSetStartOrdinal | true | Beta | 1.27 | 1.30 | 
| StatefulSetStartOrdinal | true | GA | 1.31 | – | 
| StorageNamespaceIndex | true | Beta | 1.30 | 1.32 | 
| StorageNamespaceIndex | true | 已弃用 | 1.33 | – | 
| StrictCostEnforcementForVAP | false | Beta | 1.30 | 1.31 | 
| StrictCostEnforcementForVAP | true | GA | 1.32 | – | 
| StrictCostEnforcementForWebhooks | false | Beta | 1.31 | 1.31 | 
| StrictCostEnforcementForWebhooks | true | GA | 1.32 | – | 
| StructuredAuthorizationConfiguration | false | Alpha | 1.29 | 1.29 | 
| StructuredAuthorizationConfiguration | true | Beta | 1.30 | 1.31 | 
| StructuredAuthorizationConfiguration | true | GA | 1.32 | – | 
| TopologyAwareHints | false | Alpha | 1.21 | 1.22 | 
| TopologyAwareHints | false | Beta | 1.23 | 1.23 | 
| TopologyAwareHints | true | Beta | 1.24 | 1.32 | 
| TopologyAwareHints | true | GA | 1.33 | – | 
| TopologyManagerPolicyOptions | false | Alpha | 1.26 | 1.27 | 
| TopologyManagerPolicyOptions | true | Beta | 1.28 | 1.31 | 
| TopologyManagerPolicyOptions | true | GA | 1.32 | – | 
| WatchFromStorageWithoutResourceVersion | false | Beta | 1.30 | 1.32 | 
| WatchFromStorageWithoutResourceVersion | false | 已弃用 | 1.33 | – | 
| WindowsHostNetwork | true | Alpha | 1.26 | 1.32 | 
| WindowsHostNetwork | false | 已弃用 | 1.33 | – | 
使用特性
特性阶段
处于 Alpha、Beta、GA 阶段的特性。
Alpha 特性代表:
- 默认禁用。
- 可能有错误,启用此特性可能会导致错误。
- 随时可能删除对此特性的支持,恕不另行通知。
- 在以后的软件版本中,API 可能会以不兼容的方式更改,恕不另行通知。
- 建议将其仅用于短期测试中,因为开启特性会增加错误的风险,并且缺乏长期支持。
Beta 特性代表:
- 通常默认启用。Beta API 组默认是被禁用的。
- 该特性已经经过良好测试。启用该特性是安全的。
- 尽管详细信息可能会更改,但不会放弃对整体特性的支持。
- 对象的架构或语义可能会在随后的 Beta 或稳定版本中以不兼容的方式更改。 当发生这种情况时,我们将提供迁移到下一版本的说明。此特性可能需要删除、编辑和重新创建 API 对象。 编辑过程可能需要慎重操作,因为这可能会导致依赖该特性的应用程序停机。
- 推荐仅用于非关键业务用途,因为在后续版本中可能会发生不兼容的更改。如果你具有多个可以独立升级的,则可以放宽此限制。
说明:
请试用 Beta 特性并提供相关反馈! 一旦特性结束 Beta 状态,我们就不太可能再对特性进行大幅修改。
General Availability(GA)特性也称为稳定特性,GA 特性代表着:
- 此特性会一直启用;你不能禁用它。
- 不再需要相应的特性门控。
- 对于许多后续版本,特性的稳定版本将出现在发行的软件中。
特性门控列表
每个特性门控均用于启用或禁用某个特定的特性:
- AllowDNSOnlyNodeCSR
- 允许 kubelet 在不提供节点 IP、仅提供 DNS 名称的情况下请求证书。 
- AllowInsecureKubeletCertificateSigningRequests
- 针对签名者为 kubelet 的 CertificateSigningRequest), 禁用节点准入检查。除非禁用此特性门控, 否则 Kubernetes 会强制要求新的 kubelet 证书的 - commonName为- system:node:$nodeName。
- AllowParsingUserUIDFromCertAuth
- 当启用此特性时,X.509 证书中的主体名称属性 - 1.3.6.1.4.1.57683.2将在证书认证过程中被解析为用户 UID。
- AllowServiceLBStatusOnNonLB
- 允许对类型为 - LoadBalancer以外的 Service 设置- .status.ingress.loadBalancer。
- AllowUnsafeMalformedObjectDeletion
- 允许集群操作员使用 list 操作来辨别受损的资源, 引入一个 - ignoreStoreReadErrorWithClusterBreakingPotential选项, 集群操作员可以设置此选项并使用 Kubernetes API 对受损的资源执行不安全的强制 delete 操作。
- AnonymousAuthConfigurableEndpoints
- 允许只对特定 API 服务器端点来配置匿名身份验证/鉴权。 
- AnyVolumeDataSource
- 允许使用任何自定义的资源来作为 PVC 中的 - dataSource。
- APIResponseCompression
- 压缩 - LIST或- GET请求的 API 响应。
- APIServerIdentity
- 使用 Lease(租约)为集群中的每个 API 服务器赋予一个 ID。 
- APIServerTracing
- 在 API 服务器中添加对分布式跟踪的支持。 更多细节参阅针对 Kubernetes 系统组件的追踪。 
- APIServingWithRoutine
- 这个特性门控可以启用一项 API 服务器性能提升:API 服务器可以使用独立的 Goroutine (由 Go 运行时管理的轻量级线程)来处理 watch 请求。 
- AuthorizeNodeWithSelectors
- 允许节点鉴权器使用细粒度选择算符鉴权。 需要启用 - AuthorizeWithSelectors。
- AuthorizeWithSelectors
- 允许授权使用字段和标签选择算符。 启用 SubjectAccessReview API 中的 - fieldSelector和- labelSelector字段, 将字段和标签选择算符信息传递给授权 Webhook, 启用授权程序 CEL 库中的- fieldSelector和- labelSelector特性, 并允许在授权 Webhook- matchConditions中检查- fieldSelector和- labelSelector字段。
- BtreeWatchCache
- 启用后,API 服务器将把传统的基于 HashMap 的 监视缓存(watch cache) 替换为基于 BTree 的实现。 这种替换可能会带来性能提升。 
- CBORServingAndStorage
- 允许将 CBOR 用作请求和响应所支持的编码方式, 同时允许将 CBOR 用作定制资源的首选存储编码方式。 
- CloudControllerManagerWebhook
- 启用在云控制器管理器中的 Webhook。 
- CloudDualStackNodeIPs
- 允许在外部云驱动中通过 - kubelet --node-ip设置双协议栈。 有关更多详细信息,请参阅配置 IPv4/IPv6 双栈。
- ClusterTrustBundle
- 启用 ClusterTrustBundle 对象和 kubelet 集成。 
- ClusterTrustBundleProjection
- ComponentFlagz
- 启用组件的 flagz 端点。 更多细节参见 zpages。 
- ComponentSLIs
- 在 kubelet、kube-scheduler、kube-proxy、kube-controller-manager、cloud-controller-manager 等 Kubernetes 组件上启用 - /metrics/slis端点,从而允许你抓取健康检查指标。
- ComponentStatusz
- 启用组件的 statusz 端点。 更多细节参见 zpages。 
- ConcurrentWatchObjectDecode
- 启用并发监视对象解码。目的是避免在安装了转换 Webhook 时造成 API 服务器的监视缓存内容不足。 
- ConsistentListFromCache
- 通过直接使用监视缓存来为 list 请求提供一致性的数据,提升 Kubernetes API 服务器的性能, 从而改善可扩展性和响应时间。为了从缓存获取一致的列表,Kubernetes 需要使用较新的 Etcd 版本(v3.4.31+ 或 v3.5.13+),这些版本包含了对监视进度请求特性的修复。 如果使用较旧的 Etcd 版本,Kubernetes 会自动检测到并回退到从 Etcd 提供一致的读取操作。 进度通知能够确保监视缓存与 Etcd 保持一致,同时减少对 Etcd 进行资源密集型仲裁读取的需求。 - 更多细节请参阅 Kubernetes 文档 get 和 list 语义。 
- ContainerCheckpoint
- 启用 kubelet - checkpointAPI。 详情见 Kubelet Checkpoint API。
- ContainerStopSignals
- 允许使用容器的 StopSignal 生命期,可用于配置自定义停止信号,借此控制容器的停止方式。 
- ContextualLogging
- 在支持上下文日志记录的 Kubernetes 组件的日志输出中启用额外的详细信息。 
- CoordinatedLeaderElection
- 启用支持 LeaseCandidate API 的行为,并且以确定性的方式为 Kubernetes 控制平面启用协调领导者选举。 
- CPUManagerPolicyAlphaOptions
- 允许对 CPU 管理器策略进行微调,针对试验性的、Alpha 质量级别的选项。 此特性门控用来保护一组质量级别为 Alpha 的 CPU 管理器选项。 此特性门控永远不会被升级为 Beta 或者稳定版本。 
- CPUManagerPolicyBetaOptions
- 允许对 CPU 管理器策略进行微调,针对试验性的、Beta 质量级别的选项。 此特性门控用来保护一组质量级别为 Beta 的 CPU 管理器选项。 此特性门控永远不会被升级为稳定版本。 
- CPUManagerPolicyOptions
- 允许微调 CPU 管理器策略。 
- CRDValidationRatcheting
- 如果资源更新的冲突部分未发生变化,则启用对自定义资源的更新以包含对 OpenAPI 模式的违规条目。 详情参见验证递进。 
- CronJobsScheduledAnnotation
- 将调度作业的时间设置为代表 CronJob 创建的作业上的一个 注解。 
- CrossNamespaceVolumeDataSource
- 启用跨名字空间卷数据源,以允许你在 PersistentVolumeClaim 的 - dataSourceRef字段中指定一个源名字空间。
- CSIMigrationPortworx
- 启用封装和转换逻辑,将卷操作从 Portworx 内嵌插件路由到 Portworx CSI 插件。需要在集群中安装并配置 Portworx CSI 插件. 
- CSIVolumeHealth
- 启用对节点上的 CSI 卷运行状况监控的支持。 
- CustomCPUCFSQuotaPeriod
- 使节点能够更改 kubelet 配置 中的 - cpuCFSQuotaPeriod。
- CustomResourceFieldSelectors
- 在 CustomResourceDefinition API 中启用 - selectableFields,以针对 list、watch 和 deletecollection 请求过滤自定义资源。
- DeclarativeValidation
- 启用树内 Kubernetes API 的声明式验证。启用后,具有声明式验证规则(使用 Go 代码中的 IDL 标签定义)的 API 将同时执行所生成的声明式验证代码和原来手工编写的验证代码。两者的结果将进行比较,任何不一致都会通过 - declarative_validation_mismatch_total指标进行报告。 返回给用户的仅是手工编写验证的结果(也就是说,实际在请求路径中起到验证作用者)。 在启用此特性门控时,原来手工编写的验证逻辑仍然是权威的验证方式,但如果同时启用了 DeclarativeValidationTakeover 特性门控, 将发生变化。此特性门控仅作用于 kube-apiserver。
- DeclarativeValidationTakeover
- 启用此特性门控后,若同时启用了 DeclarativeValidation 特性门控,具有声明式实现的验证规则将直接返回声明式验证错误,替代手工编写的验证错误。 若此特性门控被禁用(但启用了 - DeclarativeValidation),则始终返回手工编写的验证错误, 这实际上将声明式验证置于一种不匹配验证模式(mismatch validation mode),此模式仅用于监控,不影响 API 响应。 这种不匹配验证模式下,可以监控- declarative_validation_mismatch_total和- declarative_validation_panic_total指标,这是为了实现更安全的特性上线所做的实现细节,普通用户通常无需直接与之交互。此特性门控仅作用于 kube-apiserver。- 注意:尽管声明式验证旨在实现与手工编写验证等价的功能,但两者返回的错误消息的确切描述在细节上可能有所不同。 
- DeploymentReplicaSetTerminatingReplicas
- 在 Deployment 和 ReplicaSet 中启用新的状态字段 - .status.terminatingReplicas, 允许跟踪正在终止的 Pod。
- DevicePluginCDIDevices
- 启用设备插件 API 对 CDI 设备 ID 的支持。 
- DisableAllocatorDualWrite
- 你可以启用 - MultiCIDRServiceAllocator特性门控。API 服务器支持从旧的位图 ClusterIP 分配器迁移到新的 IPAddress 分配器。- API 服务器会在两个分配器上执行双重写入。此特性门控用于禁用对 ClusterIP 分配器的多余写入;如果你已经完成了机制迁移的重要阶段,可以启用此特性门控。 
- DisableNodeKubeProxyVersion
- 禁止设置 Node 的 - kubeProxyVersion字段。
- DRAAdminAccess
- 启用在 ResourceClaim 或 ResourceClaimTemplate 中对请求管理员访问权限的支持。 管理员访问权限允许访问正在使用的设备,并且可以在允许容器访问设备时启用额外的访问权限。 从 Kubernetes v1.33 开始,只有被授权在带有标签 - resource.kubernetes.io/admin-access: "true"(区分大小写)的命名空间中创建- ResourceClaim或- ResourceClaimTemplate对象的用户, 才能使用- adminAccess字段。这一机制确保了非管理员用户不会滥用此特性。从 Kubernetes v1.34 开始,此标签已更新为- resource.kubernetes.io/admin-access: "true"。- 想要此特性门控生效,你还需启用 - DynamicResourceAllocation特性门控。
- DRADeviceTaints
- 在使用动态资源分配来管理设备时, 启用为设备添加污点并选择性容忍这些污点的支持。 - 想要此特性门控生效,你还需启用 - DynamicResourceAllocation特性门控。
- DRAPartitionableDevices
- 启用在动态资源分配(DRA)中请求可分区设备的支持。 这允许驱动将多个设备广播为映射到某个物理设备的相同资源。 - 想要此特性门控生效,你还需启用 - DynamicResourceAllocation特性门控。
- DRAPrioritizedList
- 启用对优先级列表特性的支持。 这允许在 ResourceClaim 的请求中指定一个子请求的优先级列表。 - 想要此特性门控生效,你还需启用 - DynamicResourceAllocation特性门控。
- DRAResourceClaimDeviceStatus
- 启用对 ResourceClaim.status.devices 字段的支持,并允许从 DRA 驱动中设置此状态。 此特性要求启用 - DynamicResourceAllocation特性门控。
- DynamicResourceAllocation
- 启用对具有自定义参数和独立于 Pod 生命周期的资源的支持。 资源的分配由 Kubernetes 调度器根据“结构化参数”进行处理。 
- ElasticIndexedJob
- 允许通过同时改变 - spec.completions和- spec.parallelism使得- spec.completions == spec.parallelism来对带索引的 Job 执行扩容或缩容。 更多细节请参阅弹性索引 Job 文档。
- EventedPLEG
- 启用此特性后,kubelet 能够通过 CRI 扩展从容器运行时接收容器生命周期事件。 (PLEG 是 “Pod lifecycle event generator” 的缩写,即 Pod 生命周期事件生成器)。 要使用此特性,你还需要在集群中运行的每个容器运行时中启用对容器生命周期事件的支持。 如果容器运行时未宣布支持容器生命周期事件,即使你已启用了此特性门控, kubelet 也会自动切换到原有的通用 PLEG 机制。 
- ExecProbeTimeout
- 确保 kubelet 会遵从 exec 探针的超时值设置。 此特性门控的主要目的是方便你处理现有的、依赖于已被修复的缺陷的工作负载; 该缺陷导致 Kubernetes 会忽略 exec 探针的超时值设置。 参阅就绪态探针. 
- ExternalServiceAccountTokenSigner
- 允许设置 - --service-account-signing-endpoint让 kube-apiserver 使用外部签名程序进行令牌签名和令牌验证密钥管理。
- GracefulNodeShutdown
- 在 kubelet 中启用体面地关闭节点的支持。 在系统关闭时,kubelet 会尝试监测该事件并体面地终止节点上运行的 Pod。 参阅体面地关闭节点以了解更多细节。 
- GracefulNodeShutdownBasedOnPodPriority
- 允许 kubelet 在体面终止节点时检查 Pod 的优先级。 
- HonorPVReclaimPolicy
- 无论 PV 和 PVC 的删除顺序如何,当持久卷回收策略为 - Delete时都要遵守该策略。更多细节参阅 PersistentVolume 删除保护终结器文档。
- HPAConfigurableTolerance
- 允许为 HorizontalPodAutoscaler 指标设置容忍阈值。 
- HPAContainerMetrics
- 允许 HorizontalPodAutoscalers 基于目标 Pod 中单个容器的指标进行扩缩。 
- HPAScaleToZero
- 使用自定义指标或外部指标时,可将 - HorizontalPodAutoscaler资源的- minReplicas设置为 0。
- ImageMaximumGCAge
- 启用 kubelet 配置字段 - imageMaximumGCAge,允许管理员指定多久之后镜像将被垃圾收集。
- ImageVolume
- 允许在 Pod 中使用 - image卷源。 这个卷源允许你将容器镜像挂载为只读卷。
- InformerResourceVersion
- 允许使用 Informer(通知组件)检查上次同步的资源版本。 
- InPlacePodVerticalScaling
- 启用就地 Pod 垂直扩缩。 
- InPlacePodVerticalScalingAllocatedStatus
- 启用容器状态中的 - allocatedResources字段。 此特性还需要启用- InPlacePodVerticalScaling门控。
- InPlacePodVerticalScalingExclusiveCPUs
- 在 CPU 请求数为整数的 Guaranteed Pod 中启用容器的资源调整特性。 此特性门控仅适用于启用 - InPlacePodVerticalScaling和- CPUManager特性且 CPUManager 策略设置为- static的节点。
- InTreePluginPortworxUnregister
- 在 kubelet 和卷控制器上关闭注册 Portworx 内嵌插件。 
- JobBackoffLimitPerIndex
- 允许在索引作业中指定每个索引的最大 Pod 重试次数。 
- JobManagedBy
- 允许将 Job 对象的调和委托给外部控制器。 
- JobPodReplacementPolicy
- 允许你在 Job 中为终止的 Pod 指定替代 Pod。 
- JobSuccessPolicy
- 允许用户基于一组成功的 Pod 来声明这组 Pod 所属的 Job 为成功。 
- KMSv1
- 启用 KMS v1 API 以实现静态加密。 详情参见使用 KMS 驱动进行数据加密。 
- KubeletCgroupDriverFromCRI
- 启用检测来自 CRI 的 kubelet CGroup 驱动配置选项。 此特性门控现已对所有集群开启。然而,它仅在有支持 - RuntimeConfigCRI 调用的 CRI 容器运行时的节点上工作。如果 CRI 支持此特性, kubelet 将忽略- cgroupDriver配置设置(或已弃用的- --cgroup-driver命令行参数)。 如果容器运行时不支持它,则 kubelet 将回退到使用通过- cgroupDriver配置设置进行配置的驱动。 kubelet 将在 Kubernetes 1.36 中停止回退到此配置。因此,用户必须升级其 CRI 容器运行时到支持- RuntimeConfigCRI 调用的版本。管理员可以使用指标- kubelet_cri_losing_support来查看集群中是否有节点将在 1.36 版本中失去支持。 以下 CRI 版本支持此 CRI 调用:- containerd:在 v2.0.0 版本中添加了对此特性的支持
- CRI-O:在 v1.28.0 版本中添加了对此特性的支持
 - 详情参见配置 CGroup 驱动。 
- KubeletCrashLoopBackOffMax
- 启用对可逐节点配置的、在重启 - CrashLoopBackOff状态的容器时回退最大值的支持。 有关详细信息,请参阅 kubelet 配置文件中的- crashLoopBackOff.maxContainerRestartPeriod字段。
- KubeletEnsureSecretPulledImages
- 确保请求某镜像的 Pod 在节点上已有此镜像的情况下,能够使用所提供的凭据授权访问此镜像。 
 参见确保镜像拉取凭据验证。
- KubeletFineGrainedAuthz
- 为 kubelet 的 HTTP(s) API 启用细粒度的鉴权。 
- KubeletInUserNamespace
- 支持在用户名字空间里运行 kubelet。 请参见以非 root 用户身份运行 Kubernetes 节点组件。 
- KubeletPodResourcesDynamicResources
- 扩展 kubelet 的 Pod 资源监控 gRPC API 端点 List 和 Get, 以包括通过资源分配报告在 ResourceClaim 中分配的资源。 
- KubeletPodResourcesGet
- 在 kubelet 上为 Pod 资源启用 - GetgRPC 端点。 此 API 增强了资源分配报告。
- KubeletPSI
- 允许 kubelet 在 Summary API 和 Prometheus 指标中使用压力阻塞信息(PSI)指标。 
- KubeletSeparateDiskGC
- 分离镜像文件系统特性使 kubelet 能够对部署在不同文件系统上的镜像(只读层)和/或容器(可写层)执行垃圾回收。 
- KubeletServiceAccountTokenForCredentialProviders
- 允许 kubelet 在拉取镜像时,将绑定到 Pod 的服务账户令牌发送给凭据提供程序插件。 
- KubeletTracing
- 新增在 kubelet 中对分布式追踪的支持。 启用时,kubelet CRI 接口和经身份验证的 http 服务器被插桩以生成 OpenTelemetry 追踪 span。 详情参见追踪 Kubernetes 系统组件。 
- ListFromCacheSnapshot
- 允许 API 服务器为 watch 缓存存储生成快照,并使用这些快照来处理 LIST 请求。 
- LoadBalancerIPMode
- 当 Service 的 - type为- LoadBalancer时,可设置该 Service 的- ipMode。 更多细节请参阅指定负载均衡器状态的 IPMode。
- LocalStorageCapacityIsolationFSQuotaMonitoring
- 如果本地临时存储启用了 - LocalStorageCapacityIsolation,并且 emptyDir 卷所使用的文件系统支持项目配额, 并且已启用- UserNamespacesSupport, 系统将使用项目配额来监控- emptyDir卷的存储使用情况,而不是通过文件系统遍历来实现, 从而确保更好的性能和准确性。
- LogarithmicScaleDown
- 启用 Pod 的半随机选择,控制器将根据 Pod 时间戳的对数桶按比例缩小来驱逐 Pod。 
- LoggingAlphaOptions
- 允许微调实验性的、Alpha 级别的日志选项。 
- LoggingBetaOptions
- 允许微调实验性的、Beta 级别的日志选项。 
- MatchLabelKeysInPodAffinity
- 为 Pod(反)亲和性启用 - matchLabelKeys和- mismatchLabelKeys字段。
- MatchLabelKeysInPodTopologySpread
- 为 Pod 拓扑分布约束启用 - matchLabelKeys字段。
- 允许为 StatefulSet 的滚动更新策略设置 - maxUnavailable字段。此字段指定更新过程中不可用 Pod 个数的上限。
- MemoryManager
- 允许基于 NUMA 拓扑为容器设置内存亲和性。 
- MemoryQoS
- 使用 cgroup v2 内存控制器为 Pod 或容器启用内存保护和使用限制。 
- MultiCIDRServiceAllocator
- 使用 IPAddress 对象跟踪为 Service 的集群 IP 分配的 IP 地址。 
- MutableCSINodeAllocatableCount
- 启用此特性门控时, - CSINode.Spec.Drivers[*].Allocatable.Count字段成为可变更的, 并且- CSIDriver对象中将新增一个字段- NodeAllocatableUpdatePeriodSeconds。 这允许定期更新节点上可分配卷容量的信息,从而避免由于- kube-scheduler依赖的过时信息而导致有状态 Pod 卡滞的问题。
- MutatingAdmissionPolicy
- 为准入控制中使用的 CEL 变更启用 MutatingAdmissionPolicy 支持。 - 对于 Kubernetes v1.30 和 v1.31,此特性门控存在但不起作用。 
- NFTablesProxyMode
- 允许在 nftables 模式下运行 kube-proxy。 
- NodeInclusionPolicyInPodTopologySpread
- 在计算 Pod 拓扑分布偏差时允许在 Pod 拓扑分布约束中使用 - nodeAffinityPolicy和- nodeTaintsPolicy。
- NodeLogQuery
- 允许使用 - /logs端点来查询节点服务的日志。
- NodeSwap
- 允许 kubelet 为节点上的 Kubernetes 工作负载分配交换内存。 必须将 - KubeletConfiguration.failSwapOn设置为 false 才能使用此能力。 更多细节请参见交换内存。
- OpenAPIEnums
- 允许在从 API 服务器返回的 spec 中填充 OpenAPI 模式的 "enum" 字段。 
- OrderedNamespaceDeletion
- 允许在删除命名空间时,先删除 Pod,再删除其他资源。 
- PodAndContainerStatsFromCRI
- 将 kubelet 配置为从 CRI 容器运行时收集容器和 Pod 的统计信息,而不是从 cAdvisor 收集统计信息。 从 1.26 版本开始,这还包括从 CRI 收集指标并通过 - /metrics/cadvisor进行发布(而不是直接由 cAdvisor 发布)。
- PodDeletionCost
- 启用 Pod 删除开销特性, 允许用户影响 ReplicaSet 的缩容顺序。 
- PodDisruptionConditions
- 启用支持追加一个专用的 Pod 状况,以表示 Pod 由于某个干扰正在被删除。 
- PodIndexLabel
- 在创建新的 Pod 时允许 Job 控制器和 StatefulSet 控制器将 Pod 索引添加为标签。 详情参见 Job 完成模式文档和 StatefulSet Pod 索引标签文档。 
- PodLevelResources
- 启用 Pod 级别资源:能够在 Pod 级别指定资源请求和限制,而不仅仅是针对特定的容器。 
- PodLifecycleSleepAction
- 在 Container 生命周期钩子中启用 - sleep操作。
- PodLifecycleSleepActionAllowZero
- 允许在容器生命周期回调中为 - sleep操作设置零值。
- PodLogsQuerySplitStreams
- 允许使用 Pod API 从容器的日志流中获取特定日志流(stdout 或 stderr)。 
- PodObservedGenerationTracking
- 允许 kubelet 在 Pod 状态中设置 - observedGeneration,并允许其他组件在 Pod 状况中设置- observedGeneration,以反映在记录状态或状况时 Pod 的- metadata.generation。
- PodReadyToStartContainersCondition
- 使得 kubelet 能在 Pod 上标记 PodReadyToStartContainers 状况。 - 此特性门控先前称为 - PodHasNetworkCondition,关联的状况称为- PodHasNetwork。
- PodSchedulingReadiness
- 允许设置 - schedulingGates字段以控制 Pod 的调度就绪状态。
- PodTopologyLabelsAdmission
- 启用 - PodTopologyLabels准入插件。
 有关细节参见 Pod 拓扑标签。
- PortForwardWebsockets
- 允许从请求 v2 子协议( - v2.portforward.k8s.io)的客户端通过 portforward 子协议 (- port-forward)执行 WebSocket 流式传输。
- PreferSameTrafficDistribution
- 允许在 Service 的 - trafficDistribution字段中使用- PreferSameZone和- PreferSameNode这两个值。
- ProcMountType
- 允许容器通过设置 Pod 的 - securityContext的- procMount字段来控制对 proc 类型的挂载方式。
- QOSReserved
- 允许在 QoS 层面预留资源,避免低 QoS 级别的 Pod 占用高 QoS 级别所请求的资源(当前只适用于内存)。 
- RecoverVolumeExpansionFailure
- 允许用户编辑自己的 PVC 来缩容,以便从之前卷扩容引发的失败中恢复。 更多细节可参见处理扩充卷过程中的失败。 
- RecursiveReadOnlyMounts
- 启用对递归只读挂载的支持。 更多细节参阅只读挂载。 
- ReduceDefaultCrashLoopBackOffDecay
- 允许减少节点上容器在 - CrashLoopBackOff状态下重启时出现的初始延迟和最大延迟, 可以在整个集群将初始延迟设置为- 1s,最大延迟设置为- 60s。
- RelaxedDNSSearchValidation
- 放宽对容器的 DNS 搜索字符串( - .spec.dnsConfig.searches)的服务器端校验。 例如,在启用此门控的情况下,允许在 DNS 名称搜索字符串中包含- _字符。
- RelaxedEnvironmentVariableValidation
- 允许在环境变量中使用几乎所有可打印的 ASCII 字符。 
- ReloadKubeletServerCertificateFile
- 允许 kubelet TLS 服务器在指定的证书文件发生变化时更新其证书。 - 此特性在 kubelet 配置中指定了 - tlsCertFile和- tlsPrivateKeyFile时非常有用。 对于其他情况,例如使用 TLS 引导启动时,此特性门控无效。
- RemoteRequestHeaderUID
- 允许 API 服务器通过请求头身份认证来接受 UID(用户 ID)。 在 - kube-apiserver的 API 聚合器将请求转发到提供聚合 API 的服务器时,- kube-apiserver的 API 聚合器也将通过标准请求头添加 UID。
- ResilientWatchCacheInitialization
- 启用弹性的监视缓存(WatchCache)初始化,以避免控制平面的过载。 
- ResourceHealthStatus
- 在 Pod 的 - .status中启用- allocatedResourcesStatus字段。 此字段报告 Pod 中每个容器的额外细节,包括分配给 Pod 的每个设备的健康信息。有关更多细节, 请参见设备插件与不健康设备。
- RetryGenerateName
- 当此特性被启用时,如果控制平面检测到与某个现有对象存在名称冲突, 则使用 - generateName的请求将被自动重试,最多重试 8 次。
- RotateKubeletServerCertificate
- 启用 kubelet 上服务器 TLS 证书的轮换。 更多细节参阅 kubelet 配置。 
- RuntimeClassInImageCriApi
- 允许基于 Pod 所引用的运行时类来拉取镜像。 
- SchedulerAsyncPreemption
- 允许以异步方式在调度器内运行一些与抢占关联的高开销操作。 异步处理抢占可以降低整体 Pod 调度的延迟。 
- SchedulerPopFromBackoffQ
- 通过在 activeQ 为空时从 backoffQ 中弹出 Pod,以改善调度队列的行为。 这可以尽快处理潜在可调度的 Pod,消除回退队列的惩罚效应。 
- SchedulerQueueingHints
- 启用调度器的排队提示特性, 有助于减少无效的重新排队。 调度器会在集群中发生可能导致 Pod 被重新调度的变化时,尝试重新进行 Pod 的调度。 排队提示是一些内部信号, 用于帮助调度器基于先前的调度尝试来筛选集群中与未调度的 Pod 相关的变化。 
- SELinuxChangePolicy
- 启用 - spec.securityContext.seLinuxChangePolicy字段。 此字段可用于筛选不希望使用挂载选项来打上 SELinux 标签的 Pod 卷。 当支持使用 SELinux 挂载选项挂载的单个卷在带有不同 SELinux 标签的 Pod(例如特权 Pod 和非特权 Pod)之间共享时,此字段是必需的。- 想要启用 - SELinuxChangePolicy特性门控,需要先启用- SELinuxMountReadWriteOncePod特性门控。
- SELinuxMount
- 允许 kubelet 直接使用正确的 SELinux 标签为 Pod 挂载卷,而不是以递归方式更改卷上的每个文件,进而加快容器的启动速度。 这一变更拓宽了针对 - SELinuxMountReadWriteOncePod特性门控所作的性能改进,将其对应的实现扩展到覆盖所有卷。- 想要启用 - SELinuxMount特性门控,需先启用- SELinuxMountReadWriteOncePod特性门控。
- SELinuxMountReadWriteOncePod
- 通过允许 kubelet 直接用正确的 SELinux 标签为 Pod 挂载卷而不是以递归方式更改这些卷上的每个文件来加速容器启动。 最初的实现侧重 ReadWriteOncePod 卷。 
- SeparateCacheWatchRPC
- 允许 API 服务器的监视缓存在专用的 RPC 上创建 watch。 这防止了监视缓存被其他 watch 所占用。 
- SeparateTaintEvictionController
- 允许运行 - TaintEvictionController,该控制器可在- NodeLifecycleController之外执行基于污点的驱逐。 此特性启用时,用户可以在- kube-controller-manager上设置- --controllers=-taint-eviction-controller标志, 可选择禁用基于污点的驱逐。
- ServiceAcccountNodeAudienceRestriction
- 此特性门控用于限制 kubelet 可以请求服务账号令牌的受众范围。 
- ServiceAccountTokenJTI
- 控制是否将 JTI(UUID)嵌入到生成的服务账号令牌中, 以及对于这些令牌未来的请求,是否将这些 JTI 记录到 Kubernetes 审计日志中。 
- ServiceAccountTokenNodeBinding
- 控制 API 服务器是否允许将服务账号令牌绑定到 Node 对象。 
- ServiceAccountTokenNodeBindingValidation
- 控制 API 服务器是否会验证服务账号令牌中的 Node 引用。 
- ServiceAccountTokenPodNodeInfo
- 控制 API 服务器在颁发绑定到 Pod 对象的服务账号令牌时, 是否嵌入关联 Node 的名称和 - uid。
- ServiceTrafficDistribution
- 允许在 Service 中使用可选的 - spec.trafficDistribution字段。 此字段提供了一种对 Service 端点进行流量分发的偏好的表达方式。
- SidecarContainers
- 允许将 Init 容器的 - restartPolicy设置为- Always, 以便该容器成为一个边车容器(可重启的 Init 容器)。 详情参见边车容器和 restartPolicy。
- SizeMemoryBackedVolumes
- 允许 kubelet 检查基于内存制备的卷的尺寸约束(目前主要针对 - emptyDir卷)。
- StatefulSetAutoDeletePVC
- 允许使用可选字段 - .spec.persistentVolumeClaimRetentionPolicy, 以便根据 StatefulSet 的生命周期来控制 PVC 的删除。 详情参见 PersistentVolumeClaim 保留。
- StatefulSetStartOrdinal
- 允许在 StatefulSet 中配置起始序号。 详情参见起始序号。 
- StorageCapacityScoring
- 特性门控 - VolumeCapacityPriority在 v1.32 中用于支持静态制备的存储。 从 v1.33 开始,新的特性门控- StorageCapacityScoring取代了旧的- VolumeCapacityPriority特性门控, 并增加了对动态制备存储的支持。当- StorageCapacityScoring被启用时, kube-scheduler 中的 VolumeBinding 插件得到了扩展,可以基于每个节点上的存储容量对 Node 进行评分。 此特性适用于已支持存储容量 的 CSI 卷,包括由 CSI 驱动所支持的本地存储。
- StorageNamespaceIndex
- 为 API 服务器缓存中作用域为命名空间的资源启用命名空间索引器,以加速 list 操作。 
- StorageVersionAPI
- 启用存储版本 API。 
- StorageVersionHash
- 允许 API 服务器在版本发现中公开存储版本的哈希值。 
- StorageVersionMigrator
- 启用存储版本迁移机制。 有关细节参阅使用存储版本迁移功能来迁移 Kubernetes 对象。 
- StreamingCollectionEncodingToJSON
- 允许 API 服务器的 JSON 编码器逐项对多个集合进行编码,而不是一次性全部编码。 
- StreamingCollectionEncodingToProtobuf
- 允许 API 服务器的 Protobuf 编码器逐项对多个集合进行编码,而不是一次性全部编码。 
- StrictCostEnforcementForVAP
- 对 ValidatingAdmissionPolicy 应用严格的 CEL 开销验证。 
- StrictCostEnforcementForWebhooks
- 在准入 Webhook 内对 - matchConditions应用严格的 CEL 开销验证。
- StrictIPCIDRValidation
- 对包含 IP 地址和 CIDR 值的字段使用更严格的校验。 - 具体而言,启用此特性门控后,IPv4 地址中的每个八位字节不允许出现前导 - 0, 同时禁止使用 IPv4 映射的 IPv6 值(例如- ::ffff:192.168.0.1)。 当不同组件将同一个字符串解释为不同的 IP 地址时,这类值可能会导致安全问题 (如 CVE-2021-29923 中所述)。- 该校验收紧仅适用于内置 API 类型中的字段,不影响自定义资源类型、Kubernetes 配置文件中的值或命令行参数。 
- StructuredAuthenticationConfiguration
- 为 API 服务器启用结构化身份验证配置。 
- StructuredAuthorizationConfiguration
- 启用结构化授权配置,以便集群管理员可以在 API 服务器处理程序链中指定多个授权 Webhook。 
- SupplementalGroupsPolicy
- 启用对细粒度 SupplementalGroups 控制的支持。 有关细节请参见为 Pod 配置细粒度 SupplementalGroups 控制。 
- SystemdWatchdog
- 允许使用 systemd 看门狗监控 kubelet 的健康状态。更多细节参阅 kubelet systemd 看门狗。 
- TopologyAwareHints
- 在 EndpointSlice 中启用基于拓扑提示的拓扑感知路由。 更多细节参见拓扑感知路由。 
- TopologyManagerPolicyAlphaOptions
- 允许微调拓扑管理器策略的实验性的、Alpha 质量的选项。 此特性门控守护一组质量级别为 Alpha 的拓扑管理器选项。 此特性门控绝对不会进阶至 Beta 或稳定版。 
- TopologyManagerPolicyBetaOptions
- 允许微调拓扑管理器策略的实验性的、Beta 质量的选项。 此特性门控守护一组质量级别为 Beta 的拓扑管理器选项。 此特性门控绝对不会进阶至稳定版。 
- TopologyManagerPolicyOptions
- 启用拓扑管理器策略的微调。 
- TranslateStreamCloseWebsocketRequests
- 允许从请求 v5 子协议版本的客户端处通过 WebSocket 流式传输远程命令子协议( - exec、- cp、- attach)。
- UnauthenticatedHTTP2DOSMitigation
- 启用了针对未认证客户端的 HTTP/2 拒绝服务(DoS)防护措施。 Kubernetes v1.28.0 至 v1.28.2 版本并未包括这项特性门控。 
- UnknownVersionInteroperabilityProxy
- 当存在多个不同版本的 kube-apiserver 时,将资源请求代理到正确的对等 kube-apiserver。 更多信息请参见混合版本代理。 
- UserNamespacesPodSecurityStandards
- 启用 Pod 安全标准策略的放宽措施,适用于在命名空间中运行的 Pod。 你需要在集群的所有节点上统一设置此特性门控,并且必须启用 - UserNamespacesSupport才能使用此功能。
- UserNamespacesSupport
- 为 Pod 启用用户命名空间支持。 
- VolumeAttributesClass
- 启用对 VolumeAttributesClasses 的支持。 更多细节参见卷属性类。 
- WatchCacheInitializationPostStartHook
- 启用监视缓存(WatchCache)初始化的 post-start-hook,使之成为就绪态端点(readyz)的考察条件(带超时)。 
- WatchFromStorageWithoutResourceVersion
- 允许在没有 - resourceVersion的情况下基于存储提供监视服务。
- WatchList
- 启用对监听请求中流式传输对象初始状态的支持。 
- WatchListClient
- 允许 API 客户端请求数据流,而不是获取完整的列表。 此功能可以在 - client-go中使用,需要在服务器上启用 WatchList 特性。如果服务器不支持- WatchList,客户端将自动回退为标准的 list 请求。
- WindowsCPUAndMemoryAffinity
- 使用 CPUManager、 MemoryManager 和拓扑管理器,为 Windows 节点提供 CPU 和内存亲和性支持。 
- WindowsGracefulNodeShutdown
- 在 kubelet 中启用对 Windows 节点体面关闭的支持。 在系统关闭期间,kubelet 将尝试检测关闭事件并体面终止节点上正运行的 Pod。 细节参见体面节点关闭。 
- WindowsHostNetwork
- 启用对 Windows 容器接入主机网络名字空间的支持。 
- WinDSR
- 允许 kube-proxy 为 Windows 创建 DSR(Direct Server Return,直接服务器返回)负载均衡器。 
- WinOverlay
- 允许 kube-proxy 以覆盖模式在 Windows 上运行。