特性门控
本页详述了管理员可以在不同的 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 | – |
APIServerTracing |
false |
Alpha | 1.22 | 1.26 |
APIServerTracing |
true |
Beta | 1.27 | – |
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 | – |
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
特性, 并允许在授权 WebhookmatchConditions
中检查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
checkpoint
API。 详情见 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 驱动配置选项。 此特性门控现已对所有集群开启。然而,它仅在有支持
RuntimeConfig
CRI 调用的 CRI 容器运行时的节点上工作。如果 CRI 支持此特性, kubelet 将忽略cgroupDriver
配置设置(或已弃用的--cgroup-driver
命令行参数)。 如果容器运行时不支持它,则 kubelet 将回退到使用通过cgroupDriver
配置设置进行配置的驱动。 kubelet 将在 Kubernetes 1.36 中停止回退到此配置。因此,用户必须升级其 CRI 容器运行时到支持RuntimeConfig
CRI 调用的版本。管理员可以使用指标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 资源启用
Get
gRPC 端点。 此 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 上运行。