特性门控

此页面概述了管理员可以在不同 Kubernetes 组件上指定的各种特性门控。

请参阅 特性阶段 以了解特性的阶段说明。

概述

特性门控是一组描述 Kubernetes 特性的键值对。您可以使用每个 Kubernetes 组件上的 --feature-gates 命令行标志来启用或禁用这些特性。

每个 Kubernetes 组件都允许您启用或禁用一组与该组件相关的特性门控。使用 -h 标志查看所有组件的完整特性门控集。要为诸如 kubelet 之类的组件设置特性门控,请使用分配给特性对列表的 --feature-gates 标志

--feature-gates=...,GracefulNodeShutdown=true

下表是您可以在不同 Kubernetes 组件上设置的特性门控的摘要。

  • “起始版本”列包含引入特性或其发布阶段更改时的 Kubernetes 版本。
  • 如果“截止版本”列不为空,则包含您仍可以使用特性门控的最后一个 Kubernetes 版本。
  • 如果特性处于 Alpha 或 Beta 状态,您可以在 Alpha/Beta 特性门控表 中找到该特性。
  • 如果特性是稳定的,您可以在 已毕业/已弃用特性门控表 中找到该特性的所有阶段。
  • 已毕业/已弃用特性门控表 还列出了已弃用和已撤回的特性。

Alpha 或 Beta 特性的特性门控

处于 Alpha 或 Beta 状态的特性的特性门控
特性默认值阶段起始版本截止版本
AllowUnsafeMalformedObjectDeletionfalseAlpha1.32
AnonymousAuthConfigurableEndpointsfalseAlpha1.311.31
AnonymousAuthConfigurableEndpointstrueBeta1.32
AnyVolumeDataSourcefalseAlpha1.181.23
AnyVolumeDataSourcetrueBeta1.24
APIResponseCompressionfalseAlpha1.71.15
APIResponseCompressiontrueBeta1.16
APIServerIdentityfalseAlpha1.201.25
APIServerIdentitytrueBeta1.26
APIServerTracingfalseAlpha1.221.26
APIServerTracingtrueBeta1.27
AuthorizeNodeWithSelectorsfalseAlpha1.311.31
AuthorizeNodeWithSelectorstrueBeta1.32
AuthorizeWithSelectorsfalseAlpha1.311.31
AuthorizeWithSelectorstrueBeta1.32
CBORServingAndStoragefalseAlpha1.32
CloudControllerManagerWebhookfalseAlpha1.27
ClusterTrustBundlefalseAlpha1.27
ClusterTrustBundleProjectionfalseAlpha1.29
ComponentFlagzfalseAlpha1.32
ComponentSLIsfalseAlpha1.261.26
ComponentSLIstrueBeta1.27
ComponentStatuszfalseAlpha1.32
ConcurrentWatchObjectDecodefalseBeta1.31
ConsistentListFromCachefalseAlpha1.281.30
ConsistentListFromCachetrueBeta1.31
ContainerCheckpointfalseAlpha1.251.29
ContainerCheckpointtrueBeta1.30
ContextualLoggingfalseAlpha1.24
ContextualLoggingtrueBeta1.30
CoordinatedLeaderElectionfalseAlpha1.31
CPUManagerPolicyAlphaOptionsfalseAlpha1.23
CPUManagerPolicyBetaOptionstrueBeta1.23
CPUManagerPolicyOptionsfalseAlpha1.221.22
CPUManagerPolicyOptionstrueBeta1.23
CRDValidationRatchetingfalseAlpha1.281.29
CRDValidationRatchetingtrueBeta1.30
CrossNamespaceVolumeDataSourcefalseAlpha1.26
CSIMigrationPortworxfalseAlpha1.231.24
CSIMigrationPortworxfalseBeta1.251.30
CSIMigrationPortworxtrueBeta1.31
CSIVolumeHealthfalseAlpha1.21
CustomCPUCFSQuotaPeriodfalseAlpha1.12
DisableAllocatorDualWritefalseAlpha1.31
DisableNodeKubeProxyVersionfalseAlpha1.291.30
DisableNodeKubeProxyVersiontrueBeta1.31
DRAAdminAccessfalseAlpha1.32
DRAResourceClaimDeviceStatusfalseAlpha1.32
DynamicResourceAllocationfalseAlpha1.301.31
DynamicResourceAllocationfalseBeta1.32
EventedPLEGfalseAlpha1.25
ExternalServiceAccountTokenSignerfalseAlpha1.32
GracefulNodeShutdownfalseAlpha1.201.20
GracefulNodeShutdowntrueBeta1.21
GracefulNodeShutdownBasedOnPodPriorityfalseAlpha1.231.23
GracefulNodeShutdownBasedOnPodPrioritytrueBeta1.24
HonorPVReclaimPolicyfalseAlpha1.231.30
HonorPVReclaimPolicytrueBeta1.31
HPAScaleToZerofalseAlpha1.16
ImageMaximumGCAgefalseAlpha1.291.29
ImageMaximumGCAgetrueBeta1.30
ImageVolumefalseAlpha1.31
InPlacePodVerticalScalingfalseAlpha1.27
InTreePluginPortworxUnregisterfalseAlpha1.23
JobBackoffLimitPerIndexfalseAlpha1.281.28
JobBackoffLimitPerIndextrueBeta1.29
JobManagedByfalseAlpha1.301.31
JobManagedByfalseBeta1.32
JobPodReplacementPolicyfalseAlpha1.281.28
JobPodReplacementPolicytrueBeta1.29
JobSuccessPolicyfalseAlpha1.301.30
JobSuccessPolicytrueBeta1.31
KubeletCgroupDriverFromCRIfalseAlpha1.281.30
KubeletCgroupDriverFromCRItrueBeta1.31
KubeletCrashLoopBackOffMaxfalseAlpha1.32
KubeletFineGrainedAuthzfalseAlpha1.32
KubeletInUserNamespacefalseAlpha1.22
KubeletPodResourcesDynamicResourcesfalseAlpha1.27
KubeletPodResourcesGetfalseAlpha1.27
KubeletSeparateDiskGCfalseAlpha1.291.30
KubeletSeparateDiskGCtrueBeta1.31
KubeletTracingfalseAlpha1.251.26
KubeletTracingtrueBeta1.27
LocalStorageCapacityIsolationFSQuotaMonitoringfalseAlpha1.151.30
LocalStorageCapacityIsolationFSQuotaMonitoringfalseBeta1.31
LoggingAlphaOptionsfalseAlpha1.24
LoggingBetaOptionstrueBeta1.24
MatchLabelKeysInPodAffinityfalseAlpha1.291.30
MatchLabelKeysInPodAffinitytrueBeta1.31
MatchLabelKeysInPodTopologySpreadfalseAlpha1.251.26
MatchLabelKeysInPodTopologySpreadtrueBeta1.27
MaxUnavailableStatefulSetfalseAlpha1.24
MemoryQoSfalseAlpha1.22
MultiCIDRServiceAllocatorfalseAlpha1.271.30
MultiCIDRServiceAllocatorfalseBeta1.31
MutatingAdmissionPolicyfalseAlpha1.30
NFTablesProxyModefalseAlpha1.291.30
NFTablesProxyModetrueBeta1.31
NodeInclusionPolicyInPodTopologySpreadfalseAlpha1.251.25
NodeInclusionPolicyInPodTopologySpreadtrueBeta1.26
NodeLogQueryfalseAlpha1.271.29
NodeLogQueryfalseBeta1.30
NodeSwapfalseAlpha1.221.27
NodeSwapfalseBeta1.281.29
NodeSwaptrueBeta1.30
OpenAPIEnumsfalseAlpha1.231.23
OpenAPIEnumstrueBeta1.24
PodAndContainerStatsFromCRIfalseAlpha1.23
PodDeletionCostfalseAlpha1.211.21
PodDeletionCosttrueBeta1.22
PodLevelResourcesfalseAlpha1.32
PodLifecycleSleepActionfalseAlpha1.291.29
PodLifecycleSleepActiontrueBeta1.30
PodLifecycleSleepActionAllowZerofalseAlpha1.32
PodLogsQuerySplitStreamsfalseAlpha1.32
PodReadyToStartContainersConditionfalseAlpha1.281.28
PodReadyToStartContainersConditiontrueBeta1.29
PortForwardWebsocketsfalseAlpha1.301.30
PortForwardWebsocketstrueBeta1.31
PreferAlignCpusByUncoreCachefalseAlpha1.32
ProcMountTypefalseAlpha1.121.30
ProcMountTypefalseBeta1.31
QOSReservedfalseAlpha1.11
RecoverVolumeExpansionFailurefalseAlpha1.23
RecursiveReadOnlyMountsfalseAlpha1.301.30
RecursiveReadOnlyMountstrueBeta1.31
RelaxedEnvironmentVariableValidationfalseAlpha1.301.31
RelaxedEnvironmentVariableValidationtrueBeta1.32
ReloadKubeletServerCertificateFiletrueBeta1.31
ResilientWatchCacheInitializationtrueBeta1.31
ResourceHealthStatusfalseAlpha1.31
RotateKubeletServerCertificatefalseAlpha1.71.11
RotateKubeletServerCertificatetrueBeta1.12
RuntimeClassInImageCriApifalseAlpha1.29
SchedulerAsyncPreemptionfalseAlpha1.32
SchedulerQueueingHintstrueBeta1.281.28
SchedulerQueueingHintsfalseBeta1.291.31
SchedulerQueueingHintstrueBeta1.32
SELinuxChangePolicyfalseAlpha1.32
SELinuxMountfalseAlpha1.30
SELinuxMountReadWriteOncePodfalseAlpha1.251.26
SELinuxMountReadWriteOncePodfalseBeta1.271.27
SELinuxMountReadWriteOncePodtrueBeta1.28
SeparateTaintEvictionControllertrueBeta1.29
ServiceAccountTokenNodeBindingfalseAlpha1.291.30
ServiceAccountTokenNodeBindingtrueBeta1.31
ServiceTrafficDistributionfalseAlpha1.301.30
ServiceTrafficDistributiontrueBeta1.31
SidecarContainersfalseAlpha1.281.28
SidecarContainerstrueBeta1.29
StorageVersionAPIfalseAlpha1.20
StorageVersionHashfalseAlpha1.141.14
StorageVersionHashtrueBeta1.15
StorageVersionMigratorfalseAlpha1.301.32
StrictCostEnforcementForVAPfalseBeta1.31
StrictCostEnforcementForWebhooksfalseBeta1.31
StructuredAuthenticationConfigurationfalseAlpha1.291.29
StructuredAuthenticationConfigurationtrueBeta1.30
SupplementalGroupsPolicyfalseAlpha1.31
SystemdWatchdogtrueBeta1.32
TopologyAwareHintsfalseAlpha1.211.22
TopologyAwareHintsfalseBeta1.231.23
TopologyAwareHintstrueBeta1.24
TopologyManagerPolicyAlphaOptionsfalseAlpha1.26
TopologyManagerPolicyBetaOptionsfalseBeta1.261.27
TopologyManagerPolicyBetaOptionstrueBeta1.28
TranslateStreamCloseWebsocketRequestsfalseAlpha1.291.29
TranslateStreamCloseWebsocketRequeststrueBeta1.30
UnauthenticatedHTTP2DOSMitigationfalseBeta1.281.28
UnauthenticatedHTTP2DOSMitigationtrueBeta1.29
UnknownVersionInteroperabilityProxyfalseAlpha1.28
UserNamespacesPodSecurityStandardsfalseAlpha1.29
UserNamespacesSupportfalseAlpha1.281.29
UserNamespacesSupportfalseBeta1.30
VolumeAttributesClassfalseAlpha1.291.30
VolumeAttributesClassfalseBeta1.31
VolumeCapacityPriorityfalseAlpha1.21
WatchCacheInitializationPostStartHookfalseBeta1.31
WatchFromStorageWithoutResourceVersionfalseBeta1.30
WatchListfalseAlpha1.271.31
WatchListtrueBeta1.32
WatchListClientfalseBeta1.30
WindowsCPUAndMemoryAffinityfalseAlpha1.32
WindowsGracefulNodeShutdownfalseAlpha1.32
WindowsHostNetworktrueAlpha1.26
WinDSRfalseAlpha1.14
WinOverlayfalseAlpha1.141.19
WinOverlaytrueBeta1.20

已毕业或已弃用特性的特性门控

已毕业或已弃用特性的特性门控
特性默认值阶段起始版本截止版本
AdmissionWebhookMatchConditionsfalseAlpha1.271.27
AdmissionWebhookMatchConditionstrueBeta1.281.29
AdmissionWebhookMatchConditionstrueGA1.30
AggregatedDiscoveryEndpointfalseAlpha1.261.26
AggregatedDiscoveryEndpointtrueBeta1.271.29
AggregatedDiscoveryEndpointtrueGA1.30
AllowDNSOnlyNodeCSRfalse已弃用1.31
AllowInsecureKubeletCertificateSigningRequestsfalse已弃用1.31
AllowServiceLBStatusOnNonLBfalse已弃用1.29
APIListChunkingfalseAlpha1.81.8
APIListChunkingtrueBeta1.91.28
APIListChunkingtrueGA1.29
AppArmortrueBeta1.41.30
AppArmortrueGA1.31
AppArmorFieldstrueBeta1.301.30
AppArmorFieldstrueGA1.31
CPUManagerfalseAlpha1.81.9
CPUManagertrueBeta1.101.25
CPUManagertrueGA1.26
CronJobsScheduledAnnotationtrueBeta1.281.31
CronJobsScheduledAnnotationtrueGA1.32
CustomResourceFieldSelectorsfalseAlpha1.301.30
CustomResourceFieldSelectorstrueBeta1.311.31
CustomResourceFieldSelectorstrueGA1.32
DefaultHostNetworkHostPortsInPodTemplatesfalse已弃用1.28
DevicePluginCDIDevicesfalseAlpha1.281.28
DevicePluginCDIDevicestrueBeta1.291.30
DevicePluginCDIDevicestrueGA1.31
DisableCloudProvidersfalseAlpha1.221.28
DisableCloudProviderstrueBeta1.291.30
DisableCloudProviderstrueGA1.31
DisableKubeletCloudCredentialProvidersfalseAlpha1.231.28
DisableKubeletCloudCredentialProviderstrueBeta1.291.30
DisableKubeletCloudCredentialProviderstrueGA1.31
EfficientWatchResumptionfalseAlpha1.201.20
EfficientWatchResumptiontrueBeta1.211.23
EfficientWatchResumptiontrueGA1.24
ElasticIndexedJobtrueBeta1.271.30
ElasticIndexedJobtrueGA1.31
ExecProbeTimeouttrueGA1.20
JobPodFailurePolicyfalseAlpha1.251.25
JobPodFailurePolicytrueBeta1.261.30
JobPodFailurePolicytrueGA1.31
KMSv1true已弃用1.281.28
KMSv1false已弃用1.29
KubeProxyDrainingTerminatingNodesfalseAlpha1.281.30
KubeProxyDrainingTerminatingNodestrueBeta1.301.30
KubeProxyDrainingTerminatingNodestrueGA1.31
LoadBalancerIPModefalseAlpha1.291.30
LoadBalancerIPModetrueBeta1.301.31
LoadBalancerIPModetrueGA1.32
LogarithmicScaleDownfalseAlpha1.211.21
LogarithmicScaleDowntrueBeta1.221.30
LogarithmicScaleDowntrueGA1.31
MemoryManagerfalseAlpha1.211.21
MemoryManagertrueBeta1.221.31
MemoryManagertrueGA1.32
PDBUnhealthyPodEvictionPolicyfalseAlpha1.261.26
PDBUnhealthyPodEvictionPolicytrueBeta1.271.30
PDBUnhealthyPodEvictionPolicytrueGA1.31
PersistentVolumeLastPhaseTransitionTimefalseAlpha1.281.28
PersistentVolumeLastPhaseTransitionTimetrueBeta1.291.30
PersistentVolumeLastPhaseTransitionTimetrueGA1.31
PodDisruptionConditionsfalseAlpha1.251.25
PodDisruptionConditionstrueBeta1.261.30
PodDisruptionConditionstrueGA1.31
PodIndexLabeltrueBeta1.281.31
PodIndexLabeltrueGA1.32
PodSchedulingReadinessfalseAlpha1.261.26
PodSchedulingReadinesstrueBeta1.271.29
PodSchedulingReadinesstrueGA1.30
RemainingItemCountfalseAlpha1.151.15
RemainingItemCounttrueBeta1.161.28
RemainingItemCounttrueGA1.29
RetryGenerateNamefalseAlpha1.301.30
RetryGenerateNametrueBeta1.311.31
RetryGenerateNametrueGA1.32
ServiceAccountTokenJTIfalseAlpha1.291.29
ServiceAccountTokenJTItrueBeta1.301.31
ServiceAccountTokenJTItrueGA1.32
ServiceAccountTokenNodeBindingValidationfalseAlpha1.291.29
ServiceAccountTokenNodeBindingValidationtrueBeta1.301.31
ServiceAccountTokenNodeBindingValidationtrueGA1.32
ServiceAccountTokenPodNodeInfofalseAlpha1.291.29
ServiceAccountTokenPodNodeInfotrueBeta1.301.31
ServiceAccountTokenPodNodeInfotrueGA1.32
SizeMemoryBackedVolumesfalseAlpha1.201.21
SizeMemoryBackedVolumestrueBeta1.221.31
SizeMemoryBackedVolumestrueGA1.32
StatefulSetAutoDeletePVCfalseAlpha1.231.26
StatefulSetAutoDeletePVCtrueBeta1.271.31
StatefulSetAutoDeletePVCtrueGA1.32
StatefulSetStartOrdinalfalseAlpha1.261.26
StatefulSetStartOrdinaltrueBeta1.271.30
StatefulSetStartOrdinaltrueGA1.31
StructuredAuthorizationConfigurationfalseAlpha1.291.29
StructuredAuthorizationConfigurationtrueBeta1.301.31
StructuredAuthorizationConfigurationtrueGA1.32
TopologyManagerPolicyOptionsfalseAlpha1.261.27
TopologyManagerPolicyOptionstrueBeta1.281.31
TopologyManagerPolicyOptionstrueGA1.32
ValidatingAdmissionPolicyfalseAlpha1.261.27
ValidatingAdmissionPolicyfalseBeta1.281.29
ValidatingAdmissionPolicytrueGA1.30
WatchBookmarkfalseAlpha1.151.15
WatchBookmarktrueBeta1.161.16
WatchBookmarktrueGA1.17

使用特性

特性阶段

特性可以处于 AlphaBetaGA 阶段。Alpha 特性意味着

  • 默认禁用。
  • 可能有错误。启用该特性可能会暴露错误。
  • 对特性的支持可能会在任何时候被删除,恕不另行通知。
  • API 可能会在以后的软件版本中以不兼容的方式更改,恕不另行通知。
  • 由于错误风险增加且缺乏长期支持,建议仅在短期的测试集群中使用。

Beta 特性意味着

  • 通常默认启用。Beta API 组默认禁用
  • 该特性经过了充分的测试。启用该特性被认为是安全的。
  • 对整体功能的支持不会被删除,但细节可能会发生变化。
  • 对象的模式和/或语义在后续的 beta 或稳定版本中可能会以不兼容的方式更改。当发生这种情况时,我们将提供迁移到下一个版本的说明。这可能需要删除、编辑和重新创建 API 对象。编辑过程可能需要一些思考。这可能会导致依赖该功能的应用程序停机。
  • 由于后续版本中可能存在不兼容的更改,因此建议仅用于非业务关键用途。如果您有多个可以独立升级的集群,则可以放宽此限制。

通用可用性 (GA) 功能也称为稳定功能。它意味着:

  • 该功能始终启用;您无法禁用它。
  • 不再需要对应的特性门控。
  • 功能的稳定版本将在后续的多个软件版本中出现。

特性门控列表

每个特性门控都设计用于启用/禁用特定的功能。

  • AdmissionWebhookMatchConditions:在 mutating 和 validating 准入 Webhook 上启用 匹配条件

  • AggregatedDiscoveryEndpoint:启用单个 HTTP 端点 /discovery/<version>,该端点支持原生 HTTP 缓存,其 ETag 包含 API 服务器已知的所有 APIResources。

  • AllowDNSOnlyNodeCSR:允许 kubelet 请求证书,而无需任何可用的节点 IP,仅需 DNS 名称。

  • AllowInsecureKubeletCertificateSigningRequests:禁用对 kubelet 签名者的 CertificateSigningRequests 的节点准入验证。除非您禁用此特性门控,否则 Kubernetes 将强制要求新的 kubelet 证书具有与 system:node:$nodeName 匹配的 commonName

  • AllowServiceLBStatusOnNonLB:允许在类型不是 LoadBalancer 的 Service 上设置 .status.ingress.loadBalancer

  • AllowUnsafeMalformedObjectDeletion:使集群操作员能够使用 **list** 操作识别损坏的资源,并引入一个选项 ignoreStoreReadErrorWithClusterBreakingPotential,操作员可以设置该选项来执行不安全并强制 **delete** 使用 Kubernetes API 操作此类损坏的资源。

  • AnonymousAuthConfigurableEndpoints:为 API 服务器启用 匿名身份验证的可配置端点

  • AnyVolumeDataSource:允许使用任何自定义资源作为 PVCDataSource

  • APIListChunking:允许 API 客户端以块的形式从 API 服务器检索(LISTGET)资源。

  • APIResponseCompression:压缩 LISTGET 请求的 API 响应。

  • APIServerIdentity:使用 Lease 在集群中为每个 API 服务器分配一个 ID。

  • APIServerTracing:在 API 服务器中添加对分布式跟踪的支持。有关更多详细信息,请参阅 Kubernetes 系统组件的跟踪

  • AppArmor:允许对在 Linux 节点上运行的 Pod 使用 AppArmor 强制访问控制。有关更多详细信息,请参阅 AppArmor 教程

  • AppArmorFields:

    启用与 AppArmor 相关的安全上下文设置。

    有关 AppArmor 和 Kubernetes 的更多信息,请阅读 AppArmor 部分,该部分位于 Linux 内核中的安全特性中。

  • AuthorizeNodeWithSelectors:使 节点授权器 使用细粒度的选择器授权。需要启用 AuthorizeWithSelectors

  • AuthorizeWithSelectors:允许授权使用字段和标签选择器。在 SubjectAccessReview API 中启用 fieldSelectorlabelSelector 字段,将字段和标签选择器信息传递给 授权 webhook,在 授权器 CEL 库 中启用 fieldSelectorlabelSelector 函数,并启用在 授权 webhook matchConditions 中检查 fieldSelectorlabelSelector 字段。

  • CBORServingAndStorage:启用 CBOR 作为 请求和响应的受支持编码,并作为自定义资源的首选存储编码。

  • CloudControllerManagerWebhook:在云控制器管理器中启用 webhook。

  • ClusterTrustBundle:启用 ClusterTrustBundle 对象和 kubelet 集成。

  • ClusterTrustBundleProjectionclusterTrustBundle projected volume 源

  • ComponentFlagz:启用组件的 flagz 端点。有关更多信息,请参阅 zpages

  • ComponentSLIs:在 Kubernetes 组件(如 kubelet、kube-scheduler、kube-proxy、kube-controller-manager、cloud-controller-manager)上启用 /metrics/slis 端点,允许您抓取健康检查指标。

  • ComponentStatusz:启用组件的 statusz 端点。有关更多信息,请参阅 zpages

  • ConcurrentWatchObjectDecode:启用并发 watch 对象解码。这是为了避免在安装转换 webhook 时饿死 API 服务器的 watch 缓存。

  • ConsistentListFromCache:

    通过直接从其 watch 缓存中提供一致的 **list** 请求来增强 Kubernetes API 服务器性能,从而提高可伸缩性和响应时间。为了从缓存中获取一致的列表,Kubernetes 需要更新版本的 etcd (v3.4.31+ 或 v3.5.13+),其中包含对 watch 进度请求功能的修复。如果提供旧版本的 etcd,Kubernetes 将自动检测它并回退到从 etcd 提供一致的读取。进度通知确保 watch 缓存与 etcd 一致,同时减少了从 etcd 进行资源密集型仲裁读取的需求。

    有关更多详细信息,请参阅 Kubernetes 文档中的 **get** 和 **list** 的语义

  • ContainerCheckpoint:启用 kubelet checkpoint API。有关更多详细信息,请参阅 Kubelet 检查点 API

  • ContextualLogging:在支持上下文日志记录的 Kubernetes 组件的日志输出中启用额外详细信息。

  • CoordinatedLeaderElection:启用支持 LeaseCandidate API 的行为,并为 Kubernetes 控制平面启用确定性的协调领导者选举。

  • CPUManager:启用容器级别的 CPU 亲和性支持,请参阅 CPU 管理策略

  • CPUManagerPolicyAlphaOptions:允许微调 CPUManager 策略,实验性的、Alpha 质量的选项。此特性门控保护 _一组_ 质量级别为 alpha 的 CPUManager 选项。此特性门控永远不会升级到 beta 或 stable。

  • CPUManagerPolicyBetaOptions:允许微调 CPUManager 策略,实验性的、Beta 质量的选项。此特性门控保护 _一组_ 质量级别为 beta 的 CPUManager 选项。此特性门控永远不会升级到 stable。

  • CPUManagerPolicyOptions:允许微调 CPUManager 策略。

  • CRDValidationRatcheting:允许自定义资源的更新包含对其 OpenAPI 模式的违反,如果资源更新的违规部分没有更改。有关更多详细信息,请参阅 验证棘轮

  • CronJobsScheduledAnnotation:将计划的作业时间设置为代表 CronJob 创建的作业的注解

  • CrossNamespaceVolumeDataSource:允许使用跨命名空间卷数据源,以允许您在 PersistentVolumeClaim 的 dataSourceRef 字段中指定源命名空间。

  • CSIMigrationPortworx:启用 shim 和转换逻辑,以将卷操作从 Portworx in-tree 插件路由到 Portworx CSI 插件。需要在集群中安装和配置 Portworx CSI 驱动程序。

  • CSIVolumeHealth:启用对节点上 CSI 卷运行状况监控的支持。

  • CustomCPUCFSQuotaPeriod:允许节点在 kubelet 配置中更改 cpuCFSQuotaPeriod

  • CustomResourceFieldSelectors:在 CustomResourceDefinition API 中启用 selectableFields,以允许过滤自定义资源 **list**、**watch** 和 **deletecollection** 请求。

  • DefaultHostNetworkHostPortsInPodTemplates:

    此特性门控控制为使用 hostNetwork: true 的 Pod 设置 .spec.containers[*].ports[*].hostPort 的默认值的时间点。自 Kubernetes v1.28 以来的默认值是仅在 Pod 中设置默认值。

    启用此功能意味着即使对于嵌入式 PodTemplate.spec(例如,在 Deployment 中)也会分配默认值,这是旧版本 Kubernetes 的工作方式。您应该迁移您的代码,使其不依赖于旧的行为。

  • DevicePluginCDIDevices:在 设备插件 API 中启用对 CDI 设备 ID 的支持。

  • DisableAllocatorDualWrite:

    您可以启用 MultiCIDRServiceAllocator 特性门控。API 服务器支持从旧的位图 ClusterIP 分配器迁移到新的 IPAddress 分配器。

    API 服务器在两个分配器上执行双写操作。此特性门控禁用新 Cluster IP 分配器上的双写操作;如果您已完成迁移的相关阶段,则可以启用此特性门控。

  • DisableCloudProviders:

    启用此特性门控会停用 kube-apiserverkube-controller-managerkubelet 中与 --cloud-provider 命令行参数相关的功能。

    在 Kubernetes v1.31 及更高版本中,--cloud-provider 的唯一有效值是空字符串(没有云提供商集成)或“external”(通过单独的 cloud-controller-manager 进行集成)。

  • DisableKubeletCloudCredentialProviders:启用此特性门控会停用 kubelet 内的旧版 in-tree 功能,该功能允许 kubelet 对云提供商容器注册表进行身份验证以拉取容器映像。

  • DisableNodeKubeProxyVersion:禁用设置 Node 的 kubeProxyVersion 字段。

  • DRAAdminAccess:

    允许支持在 ResourceClaim 中请求 管理访问权限。具有管理访问权限的 ResourceClaim 允许访问正在使用的设备,并且在容器中提供设备时可能会启用其他访问权限。

    除非您还启用了 DynamicResourceAllocation 特性门控,否则此特性门控不起作用。

  • DRAResourceClaimDeviceStatus:启用对 ResourceClaim.status.devices 字段的支持,并允许从 DRA 驱动程序设置此状态。

  • DynamicResourceAllocation:启用对具有自定义参数且生命周期独立于 Pod 的资源的支持。资源的分配由 Kubernetes 调度器基于“结构化参数”进行处理。

  • EfficientWatchResumption:允许将存储发起的书签(进度通知)事件传递给用户。这仅适用于 watch 操作。

  • ElasticIndexedJob:允许通过同时修改 spec.completionsspec.parallelism 来扩展或缩小 Indexed Jobs,使得 spec.completions == spec.parallelism。有关更多详细信息,请参阅有关弹性 Indexed Jobs 的文档。

  • EventedPLEG:允许 kubelet 通过 容器运行时通过 CRI 的扩展接收容器生命周期事件。(PLEG 是“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 删除保护终结器文档。

  • HPAScaleToZero:在使用自定义或外部指标时,允许为 HorizontalPodAutoscaler 资源将 minReplicas 设置为 0。

  • ImageMaximumGCAge:启用 kubelet 配置字段 imageMaximumGCAge,允许管理员指定映像将被垃圾收集的年龄。

  • ImageVolume:允许在 Pod 中使用image卷源。此卷源允许你将容器映像作为只读卷挂载。

  • InPlacePodVerticalScaling:启用原地 Pod 垂直伸缩。

  • InTreePluginPortworxUnregister:停止在 kubelet 和卷控制器中注册 Portworx 内置插件。

  • JobBackoffLimitPerIndex:允许在 Indexed 作业中指定每个索引的最大 Pod 重试次数。

  • JobManagedBy:允许将 Job 对象的协调委托给外部控制器。

  • JobPodFailurePolicy:允许用户根据容器退出代码和 Pod 条件指定对 Pod 失败的处理。

  • JobPodReplacementPolicy:允许你为Job中正在终止的 Pod 指定 Pod 替换。

  • JobSuccessPolicy:允许用户根据成功 Pod 的集合指定何时可以将 Job 声明为成功。

  • KMSv1:启用 KMS v1 API 进行静态加密。有关更多详细信息,请参阅使用 KMS 提供程序进行数据加密

  • KubeletCgroupDriverFromCRI:允许从CRI检测 kubelet cgroup 驱动程序配置选项。你可以在支持此功能门控且存在支持 RuntimeConfig CRI 调用的 CRI 容器运行时的节点上使用此功能门控。如果 CRI 和 kubelet 都支持此功能,则 kubelet 会忽略 cgroupDriver 配置设置(或已弃用的 --cgroup-driver 命令行参数)。如果启用此功能门控且容器运行时不支持,则 kubelet 将回退为使用通过 cgroupDriver 配置设置配置的驱动程序。有关更多详细信息,请参阅配置 cgroup 驱动程序

  • KubeletCrashLoopBackOffMax:启用对在 CrashLoopBackOff 状态下重启容器的可配置的每个节点最大回退值的支持。

  • KubeletFineGrainedAuthz:为 kubelet 的 HTTP(s) API 启用细粒度授权

  • KubeletInUserNamespace:启用对在用户命名空间中运行 kubelet 的支持。请参阅以非 root 用户身份运行 Kubernetes 节点组件

  • KubeletPodResourcesDynamicResources:扩展 kubelet 的 Pod 资源 gRPC 端点,以包含通过 DynamicResourceAllocation API 在 ResourceClaims 中分配的资源。有关更多详细信息,请参阅资源分配报告。提供有关可分配资源的信息,使客户端能够正确跟踪节点上的可用计算资源。

  • KubeletPodResourcesGet:在 kubelet 的 Pod 资源上启用 Get gRPC 端点。此 API 增强了资源分配报告

  • KubeletSeparateDiskGC:拆分映像文件系统功能使 kubelet 能够对部署在单独文件系统上的映像(只读层)和/或容器(可写层)执行垃圾收集。

  • KubeletTracing:在 kubelet 中添加对分布式跟踪的支持。启用后,kubelet CRI 接口和经过身份验证的 http 服务器将进行检测以生成 OpenTelemetry 跟踪跨度。有关更多详细信息,请参阅Kubernetes 系统组件的跟踪

  • KubeProxyDrainingTerminatingNodes:为 externalTrafficPolicy: Cluster 服务实现正在终止节点的连接耗尽。

  • LoadBalancerIPMode:允许为 type 设置为 LoadBalancer 的服务设置 ipMode。有关更多信息,请参阅指定负载均衡器状态的 IPMode

  • LocalStorageCapacityIsolationFSQuotaMonitoring:当为本地临时存储启用 LocalStorageCapacityIsolation 时,emptyDir 卷的后备文件系统支持项目配额,并且启用了 UserNamespacesSupport,则项目配额用于监控 emptyDir 卷存储消耗,而不是使用文件系统遍历,从而确保更好的性能和准确性。

  • LogarithmicScaleDown:启用基于 Pod 时间戳的对数分桶来半随机选择要驱逐的 Pod。

  • LoggingAlphaOptions:允许微调实验性、alpha 质量的日志记录选项。

  • LoggingBetaOptions:允许微调实验性、beta 质量的日志记录选项。

  • MatchLabelKeysInPodAffinity:为Pod(反)亲和性启用 matchLabelKeysmismatchLabelKeys 字段。

  • MatchLabelKeysInPodTopologySpread:为Pod 拓扑分布约束启用 matchLabelKeys 字段。

  • MaxUnavailableStatefulSet:允许为 StatefulSet 的滚动更新策略设置 maxUnavailable 字段。该字段指定更新期间可能不可用的最大 Pod 数。

  • MemoryManager:允许基于 NUMA 拓扑为容器设置内存亲和性。

  • MemoryQoS:使用 cgroup v2 内存控制器在 Pod/容器上启用内存保护和使用限制。

  • MultiCIDRServiceAllocator:使用 IPAddress 对象跟踪服务集群 IP 的 IP 地址分配。

  • MutatingAdmissionPolicy:

    启用对 CEL 突变的支持,用于MutatingAdmissionPolicy,以用于准入控制。

    对于 Kubernetes v1.30 和 v1.31,此功能门控存在但不起作用。

  • NFTablesProxyMode:允许在nftables 模式下运行 kube-proxy。

  • NodeInclusionPolicyInPodTopologySpread:在计算 Pod 拓扑分布倾斜时,启用在Pod 拓扑分布约束中使用 nodeAffinityPolicynodeTaintsPolicy

  • NodeLogQuery:允许使用 /logs 端点查询节点服务的日志。

  • NodeSwap:允许 kubelet 在节点上为 Kubernetes 工作负载分配交换内存。必须与设置为 false 的 KubeletConfiguration.failSwapOn 一起使用。有关更多详细信息,请参阅交换内存

  • OpenAPIEnums:启用在从 API 服务器返回的规范中填充 OpenAPI 模式的“枚举”字段。

  • PDBUnhealthyPodEvictionPolicy:启用 PodDisruptionBudgetunhealthyPodEvictionPolicy 字段。这指定何时应考虑驱逐不健康的 Pod。有关更多详细信息,请参阅不健康 Pod 驱逐策略

  • PersistentVolumeLastPhaseTransitionTime:向 PersistentVolume 添加一个新字段,该字段保存卷上次转换阶段的时间戳。

  • PodAndContainerStatsFromCRI:配置 kubelet 从 CRI 容器运行时收集容器和 Pod 统计信息,而不是从 cAdvisor 收集。从 1.26 开始,这也包括从 CRI 收集指标并通过 /metrics/cadvisor 发射(而不是让 cAdvisor 直接发射它们)。

  • PodDeletionCost:启用Pod 删除成本功能,该功能允许用户影响 ReplicaSet 缩减顺序。

  • PodDisruptionConditions:启用对附加专用 Pod 条件的支持,以指示 Pod 由于中断而被删除。

  • PodIndexLabel:启用 Job 控制器和 StatefulSet 控制器在创建新 Pod 时添加 Pod 索引作为标签。有关更多详细信息,请参阅Job 完成模式文档StatefulSet Pod 索引标签文档

  • PodLevelResources:启用Pod 级别资源:允许在 Pod 级别指定资源请求和限制,而不仅仅是针对特定的容器。

  • PodLifecycleSleepAction:在容器生命周期钩子中启用 sleep 操作。

  • PodLifecycleSleepActionAllowZero:允许在容器生命周期钩子中为 sleep 操作设置零值。

  • PodLogsQuerySplitStreams:允许使用 Pod API 从容器的日志流中获取特定的日志流(stdout 或 stderr)。

  • PodReadyToStartContainersCondition:

    启用 kubelet 在 Pod 上标记 PodReadyToStartContainers 条件。

    此特性门控以前称为 PodHasNetworkCondition,关联的条件名为 PodHasNetwork

  • PodSchedulingReadiness:启用设置 schedulingGates 字段来控制 Pod 的调度就绪状态

  • PortForwardWebsockets:允许从请求子协议 v2 (v2.portforward.k8s.io) 版本的客户端进行端口转发子协议 (port-forward) 的 WebSocket 流。

  • PreferAlignCpusByUncoreCache:当 CPU 管理器策略设置为 static 并且启用 PreferAlignCpusByUncoreCache 时,Guaranteed Pod 内的容器将尽力对齐到非核心缓存组。此功能可以通过最小化跨非核心缓存的 CPU 分配来优化某些缓存敏感型工作负载的性能。

  • ProcMountType:通过设置 Pod 的 securityContextprocMount 字段,启用对容器 proc 挂载类型的控制。

  • QOSReserved:允许在 QoS 级别进行资源预留,防止较低 QoS 级别的 Pod 突增到较高 QoS 级别请求的资源中(目前仅限内存)。

  • RecoverVolumeExpansionFailure:允许用户将 PVC 编辑为更小的大小,以便从先前发出的卷扩展失败中恢复。有关更多详细信息,请参阅从扩展卷失败中恢复

  • RecursiveReadOnlyMounts:启用对递归只读挂载的支持。有关更多详细信息,请参阅只读挂载

  • RelaxedEnvironmentVariableValidation:允许环境变量中使用几乎所有可打印的 ASCII 字符。

  • ReloadKubeletServerCertificateFile:

    如果指定的证书文件已更改,则启用 kubelet TLS 服务器更新其证书。

    当在 kubelet 配置中指定 tlsCertFiletlsPrivateKeyFile 时,此功能非常有用。此特性门控对于其他情况(例如使用 TLS 引导)不起作用。

  • RemainingItemCount:允许 API 服务器在对分块列表请求的响应中显示剩余的项目数。

  • ResilientWatchCacheInitialization:启用弹性 watchcache 初始化以避免控制平面过载。

  • ResourceHealthStatus:在 Pod 的 .status 中启用 allocatedResourcesStatus 字段。该字段报告 Pod 中每个容器的其他详细信息,以及分配给 Pod 的每个设备的运行状况信息。有关更多详细信息,请参阅设备插件和不健康的设备

  • RetryGenerateName:

    API 服务器预期生成名称时,启用对象创建的重试。

    启用此功能后,如果控制平面检测到与现有对象存在名称冲突,则使用 generateName 的请求将自动重试,最多尝试 8 次。

  • RotateKubeletServerCertificate:启用 kubelet 上服务器 TLS 证书的轮换。有关更多详细信息,请参阅kubelet 配置

  • RuntimeClassInImageCriApi:允许基于引用它们的 Pod 的运行时类拉取镜像。

  • SchedulerAsyncPreemption:启用在调度器内异步运行与抢占相关的一些昂贵操作。异步处理抢占可提高整体 Pod 调度延迟。

  • SchedulerQueueingHints:启用调度器的排队提示功能,这有利于减少无用的重新排队。如果集群中发生某些可能导致 Pod 被调度更改的情况,调度器会重试调度 Pod。排队提示是内部信号,允许调度器根据之前的调度尝试过滤集群中与未调度 Pod 相关的更改。

  • SELinuxChangePolicy:

    启用 spec.securityContext.seLinuxChangePolicy 字段。此字段可用于选择不使用挂载选项将 SELinux 标签应用于 Pod 卷。当在具有不同 SELinux 标签的 Pod(例如特权 Pod 和非特权 Pod)之间共享支持使用 SELinux 挂载选项挂载的单个卷时,这是必需的。

    启用 SELinuxChangePolicy 特性门控需要启用特性门控 SELinuxMountReadWriteOncePod

  • SELinuxMount:

    通过允许 kubelet 直接使用正确的 SELinux 标签挂载 Pod 的卷,而不是递归地更改卷上的每个文件,从而加快了容器的启动速度。它通过将实现扩展到所有卷来扩大 SELinuxMountReadWriteOncePod 特性门控背后的性能改进。

    启用 SELinuxMount 特性门控需要启用特性门控 SELinuxMountReadWriteOncePodSELinuxChangePolicy

  • SELinuxMountReadWriteOncePod:通过允许 kubelet 直接使用正确的 SELinux 标签挂载 Pod 的卷,而不是递归地更改卷上的每个文件,从而加快了容器的启动速度。最初的实现侧重于 ReadWriteOncePod 卷。

  • SeparateTaintEvictionController:启用在与 NodeLifecycleController 分离的控制器中运行 TaintEvictionController,该控制器执行基于污点的驱逐。启用此功能后,用户可以选择通过在 kube-controller-manager 上设置 --controllers=-taint-eviction-controller 标志来禁用基于污点的驱逐。

  • ServiceAccountTokenJTI:控制是否将 JTI(UUID)嵌入到生成的服务帐户令牌中,以及是否将这些 JTI 记录到 Kubernetes 审计日志中,以便将来使用这些令牌进行请求。

  • ServiceAccountTokenNodeBinding:控制 API 服务器是否允许将服务帐户令牌绑定到 Node 对象。

  • ServiceAccountTokenNodeBindingValidation:控制 apiserver 是否会验证服务帐户令牌中的 Node 引用。

  • ServiceAccountTokenPodNodeInfo:控制 apiserver 在发出绑定到 Pod 对象的服务帐户令牌时是否嵌入关联节点的节点名称和 UID。

  • ServiceTrafficDistribution:允许在服务中使用可选的 spec.trafficDistribution 字段。该字段提供了一种表达如何将流量分配到服务端点的偏好的方法。

  • SidecarContainers:允许将 init 容器的 restartPolicy 设置为 Always,以便该容器成为 sidecar 容器(可重启的 init 容器)。有关更多详细信息,请参阅Sidecar 容器和 restartPolicy

  • SizeMemoryBackedVolumes:启用 kubelet 以确定内存支持卷(主要是 emptyDir 卷)的大小限制。

  • StatefulSetAutoDeletePVC:允许使用可选的 .spec.persistentVolumeClaimRetentionPolicy 字段,从而控制 StatefulSet 生命周期中 PVC 的删除。有关更多详细信息,请参阅PersistentVolumeClaim 保留

  • StatefulSetStartOrdinal:允许配置 StatefulSet 中的起始序号。有关更多详细信息,请参阅起始序号

  • StorageVersionAPI:启用存储版本 API

  • StorageVersionHash:允许 API 服务器在发现中公开存储版本哈希。

  • StorageVersionMigrator:启用存储版本迁移。有关更多详细信息,请参阅使用存储版本迁移迁移 Kubernetes 对象

  • StrictCostEnforcementForVAP:对 ValidatingAdmissionPolicies 应用严格的 CEL 成本验证。

  • StrictCostEnforcementForWebhooks:对准入 Webhook 中的 matchConditions 应用严格的 CEL 成本验证。

  • StructuredAuthenticationConfiguration:为 API 服务器启用结构化身份验证配置

  • StructuredAuthorizationConfiguration:启用结构化授权配置,以便集群管理员可以在 API 服务器处理链中指定多个授权 Webhook

  • SupplementalGroupsPolicy:启用对细粒度 SupplementalGroups 控制的支持。有关更多详细信息,请参阅为 Pod 配置细粒度的 SupplementalGroups 控制

  • SystemdWatchdog:允许使用 systemd watchdog 来监视 kubelet 的运行状况。有关更多详细信息,请参阅Kubelet Systemd Watchdog

  • TopologyAwareHints:启用基于 EndpointSlices 中的拓扑提示的拓扑感知路由。有关更多详细信息,请参阅拓扑感知提示

  • TopologyManagerPolicyAlphaOptions:允许微调拓扑管理器策略,实验性的,Alpha 质量的选项。此特性门保护一组质量级别为 alpha 的拓扑管理器选项。此特性门永远不会升级到 beta 或 stable。

  • TopologyManagerPolicyBetaOptions:允许微调拓扑管理器策略,实验性的,Beta 质量的选项。此特性门保护一组质量级别为 beta 的拓扑管理器选项。此特性门永远不会升级到 stable。

  • TopologyManagerPolicyOptions:启用拓扑管理器策略的微调

  • TranslateStreamCloseWebsocketRequests:允许从请求子协议版本 5 (v5) 的客户端 WebSocket 流式传输远程命令子协议(execcpattach)。

  • UnauthenticatedHTTP2DOSMitigation:为未经身份验证的客户端启用 HTTP/2 拒绝服务 (DoS) 缓解措施。Kubernetes v1.28.0 到 v1.28.2 不包含此特性门。

  • UnknownVersionInteroperabilityProxy:当存在多个不同版本的 kube-apiserver 时,将资源请求代理到正确的对等 kube-apiserver。有关更多信息,请参阅混合版本代理

  • UserNamespacesPodSecurityStandards:为在命名空间中运行的 Pod 启用 Pod 安全标准策略的放松。您必须在集群中的所有节点上一致地设置此特性门的值,并且还必须启用 UserNamespacesSupport 才能使用此功能。

  • UserNamespacesSupport:为 Pod 启用用户命名空间支持。

  • ValidatingAdmissionPolicy:启用 ValidatingAdmissionPolicy 支持,以便在准入控制中使用 CEL 验证。

  • VolumeAttributesClass:启用对 VolumeAttributesClasses 的支持。有关更多信息,请参阅卷属性类

  • VolumeCapacityPriority:启用基于可用 PV 容量在不同拓扑中对节点进行优先级排序的支持。

  • WatchBookmark:启用对 watch 书签事件的支持。

  • WatchCacheInitializationPostStartHook:启用 watchcache 初始化后启动钩子,以使其成为 readyz 的一部分(带有超时)。

  • WatchFromStorageWithoutResourceVersion:启用从存储中提供没有 resourceVersion 的 watch。

  • WatchList:启用对 watch 请求中对象的流式初始状态的支持。

  • WatchListClient:允许 API 客户端请求数据流而不是获取完整列表。此功能在 client-go 中可用,并且需要在服务器上启用 WatchList 特性。如果服务器不支持 WatchList,客户端将无缝回退到标准列表请求。

  • WindowsCPUAndMemoryAffinity:为 Windows 节点添加 CPU 和内存亲和性支持,包括 CPUManagerMemoryManager 和拓扑管理器。

  • WindowsGracefulNodeShutdown:在 kubelet 中启用对 Windows 节点优雅关闭的支持。在系统关闭期间,kubelet 将尝试检测关闭事件并优雅地终止在节点上运行的 Pod。有关更多详细信息,请参阅优雅节点关闭

  • WindowsHostNetwork:启用将 Windows 容器加入主机网络命名空间的支持。

  • WinDSR:允许 kube-proxy 为 Windows 创建 DSR 负载均衡器。

  • WinOverlay:允许 kube-proxy 在 Windows 的覆盖模式下运行。

下一步

  • Kubernetes 的弃用策略解释了该项目删除特性和组件的方法。
  • 自 Kubernetes 1.24 起,新的 Beta API 默认不启用。启用 Beta 功能时,您还需要启用任何相关的 API 资源。例如,要启用特定资源(如 storage.k8s.io/v1beta1/csistoragecapacities),请设置 --runtime-config=storage.k8s.io/v1beta1/csistoragecapacities。有关命令行标志的更多详细信息,请参阅API 版本控制
上次修改时间:2023 年 12 月 25 日下午 1:49 PST:删除 GA 特性门 RemoveSelfLink (32a94100f8)