功能门控

本页概述了管理员可以在不同 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 状态的功能的功能门控
功能默认值阶段直到
AnyVolumeDataSourcefalseAlpha1.181.23
AnyVolumeDataSourcetrueBeta1.24
APIResponseCompressionfalseAlpha1.71.15
APIResponseCompressiontrueBeta1.16
APIServerIdentityfalseAlpha1.201.25
APIServerIdentitytrueBeta1.26
APIServerTracingfalseAlpha1.221.26
APIServerTracingtrueBeta1.27
AppArmortrueBeta1.4
CloudControllerManagerWebhookfalseAlpha1.27
ClusterTrustBundlefalseAlpha1.27
ClusterTrustBundleProjectionfalseAlpha1.29
ComponentSLIsfalseAlpha1.261.26
ComponentSLIstrueBeta1.27
ConsistentListFromCachefalseAlpha1.28
ContainerCheckpointfalseAlpha1.25
ContextualLoggingfalseAlpha1.24
ContextualLoggingtrueBeta1.30
CPUManagerPolicyAlphaOptionsfalseAlpha1.23
CPUManagerPolicyBetaOptionstrueBeta1.23
CPUManagerPolicyOptionsfalseAlpha1.221.22
CPUManagerPolicyOptionstrueBeta1.23
CRDValidationRatchetingfalseAlpha1.281.29
CRDValidationRatchetingtrueBeta1.30
CronJobsScheduledAnnotationtrueBeta1.28
CrossNamespaceVolumeDataSourcefalseAlpha1.26
CSIMigrationPortworxfalseAlpha1.231.24
CSIMigrationPortworxfalseBeta1.25
CSIVolumeHealthfalseAlpha1.21
CustomCPUCFSQuotaPeriodfalseAlpha1.12
CustomResourceFieldSelectorsfalseAlpha1.30
DevicePluginCDIDevicesfalseAlpha1.281.28
DevicePluginCDIDevicestrueBeta1.29
DisableCloudProvidersfalseAlpha1.221.28
DisableCloudProviderstrueBeta1.29
DisableKubeletCloudCredentialProvidersfalseAlpha1.231.28
DisableKubeletCloudCredentialProviderstrueBeta1.29
DisableNodeKubeProxyVersionfalseAlpha1.29
DynamicResourceAllocationfalseAlpha1.26
ElasticIndexedJobtrueBeta1.27
EventedPLEGfalseAlpha1.261.26
EventedPLEGfalseBeta1.27
GracefulNodeShutdownfalseAlpha1.201.20
GracefulNodeShutdowntrueBeta1.21
GracefulNodeShutdownBasedOnPodPriorityfalseAlpha1.231.23
GracefulNodeShutdownBasedOnPodPrioritytrueBeta1.24
HonorPVReclaimPolicyfalseAlpha1.23
HPAScaleToZerofalseAlpha1.16
ImageMaximumGCAgefalseAlpha1.291.29
ImageMaximumGCAgetrueBeta1.30
InPlacePodVerticalScalingfalseAlpha1.27
InTreePluginAWSUnregisterfalseAlpha1.21
InTreePluginAzureDiskUnregisterfalseAlpha1.21
InTreePluginAzureFileUnregisterfalseAlpha1.21
InTreePluginGCEUnregisterfalseAlpha1.21
InTreePluginOpenStackUnregisterfalseAlpha1.21
InTreePluginPortworxUnregisterfalseAlpha1.23
InTreePluginvSphereUnregisterfalseAlpha1.21
JobBackoffLimitPerIndexfalseAlpha1.281.28
JobBackoffLimitPerIndextrueBeta1.29
JobManagedByfalseAlpha1.30
JobPodFailurePolicyfalseAlpha1.251.25
JobPodFailurePolicytrueBeta1.26
JobPodReplacementPolicyfalseAlpha1.281.28
JobPodReplacementPolicytrueBeta1.29
JobSuccessPolicyfalseAlpha1.30
KubeletCgroupDriverFromCRIfalseAlpha1.28
KubeletInUserNamespacefalseAlpha1.22
KubeletPodResourcesDynamicResourcesfalseAlpha1.27
KubeletPodResourcesGetfalseAlpha1.27
KubeletSeparateDiskGCfalseAlpha1.29
KubeletTracingfalseAlpha1.251.26
KubeletTracingtrueBeta1.27
KubeProxyDrainingTerminatingNodesfalseAlpha1.281.30
KubeProxyDrainingTerminatingNodestrueBeta1.30
LoadBalancerIPModefalseAlpha1.291.30
LoadBalancerIPModetrueBeta1.30
LocalStorageCapacityIsolationFSQuotaMonitoringfalseAlpha1.15
LogarithmicScaleDownfalseAlpha1.211.21
LogarithmicScaleDowntrueBeta1.22
LoggingAlphaOptionsfalseAlpha1.24
LoggingBetaOptionstrueBeta1.24
MatchLabelKeysInPodAffinityfalseAlpha1.29
MatchLabelKeysInPodTopologySpreadfalseAlpha1.251.26
MatchLabelKeysInPodTopologySpreadtrueBeta1.27
MaxUnavailableStatefulSetfalseAlpha1.24
MemoryManagerfalseAlpha1.211.21
MemoryManagertrueBeta1.22
MemoryQoSfalseAlpha1.22
MultiCIDRServiceAllocatorfalseAlpha1.27
NFTablesProxyModefalseAlpha1.29
NodeInclusionPolicyInPodTopologySpreadfalseAlpha1.251.25
NodeInclusionPolicyInPodTopologySpreadtrueBeta1.26
NodeLogQueryfalseAlpha1.271.29
NodeLogQueryfalseBeta1.30
NodeSwapfalseAlpha1.221.27
NodeSwapfalseBeta1.281.29
NodeSwaptrueBeta1.30
OpenAPIEnumsfalseAlpha1.231.23
OpenAPIEnumstrueBeta1.24
PDBUnhealthyPodEvictionPolicyfalseAlpha1.261.26
PDBUnhealthyPodEvictionPolicytrueBeta1.27
PersistentVolumeLastPhaseTransitionTimefalseAlpha1.281.28
PersistentVolumeLastPhaseTransitionTimetrueBeta1.29
PodAndContainerStatsFromCRIfalseAlpha1.23
PodDeletionCostfalseAlpha1.211.21
PodDeletionCosttrueBeta1.22
PodDisruptionConditionsfalseAlpha1.251.25
PodDisruptionConditionstrueBeta1.26
PodIndexLabeltrueBeta1.28
PodLifecycleSleepActionfalseAlpha1.291.29
PodLifecycleSleepActiontrueBeta1.30
PodReadyToStartContainersConditionfalseAlpha1.281.28
PodReadyToStartContainersConditiontrueBeta1.29
PortForwardWebsocketsfalseAlpha1.30
ProcMountTypefalseAlpha1.12
QOSReservedfalseAlpha1.11
RecoverVolumeExpansionFailurefalseAlpha1.23
RecursiveReadOnlyMountsfalseAlpha1.30
RelaxedEnvironmentVariableValidationfalseAlpha1.30
RetryGenerateNamefalseAlpha1.30
RotateKubeletServerCertificatefalseAlpha1.71.11
RotateKubeletServerCertificatetrueBeta1.12
RuntimeClassInImageCriApifalseAlpha1.29
SchedulerQueueingHintstrueBeta1.281.28
SchedulerQueueingHintsfalseBeta1.29
SELinuxMountfalseAlpha1.30
SELinuxMountReadWriteOncePodfalseAlpha1.251.26
SELinuxMountReadWriteOncePodfalseBeta1.271.27
SELinuxMountReadWriteOncePodtrueBeta1.28
SeparateTaintEvictionControllertrueBeta1.29
ServiceAccountTokenJTIfalseAlpha1.291.29
ServiceAccountTokenJTItrueBeta1.30
ServiceAccountTokenNodeBindingfalseAlpha1.29
ServiceAccountTokenNodeBindingValidationfalseAlpha1.291.29
ServiceAccountTokenNodeBindingValidationtrueBeta1.30
ServiceAccountTokenPodNodeInfofalseAlpha1.291.29
ServiceAccountTokenPodNodeInfotrueBeta1.30
ServiceTrafficDistributionfalseAlpha1.30
SidecarContainersfalseAlpha1.281.28
SidecarContainerstrueBeta1.29
SizeMemoryBackedVolumesfalseAlpha1.201.21
SizeMemoryBackedVolumestrueBeta1.22
StatefulSetAutoDeletePVCfalseAlpha1.231.26
StatefulSetAutoDeletePVCtrueBeta1.27
StatefulSetStartOrdinalfalseAlpha1.261.26
StatefulSetStartOrdinaltrueBeta1.27
StorageVersionAPIfalseAlpha1.20
StorageVersionHashfalseAlpha1.141.14
StorageVersionHashtrueBeta1.15
StorageVersionMigratorfalseAlpha1.301.32
StructuredAuthenticationConfigurationfalseAlpha1.291.29
StructuredAuthenticationConfigurationtrueBeta1.30
StructuredAuthorizationConfigurationfalseAlpha1.291.29
StructuredAuthorizationConfigurationtrueBeta1.30
TopologyAwareHintsfalseAlpha1.211.22
TopologyAwareHintsfalseBeta1.231.23
TopologyAwareHintstrueBeta1.24
TopologyManagerPolicyAlphaOptionsfalseAlpha1.26
TopologyManagerPolicyBetaOptionsfalseBeta1.261.27
TopologyManagerPolicyBetaOptionstrueBeta1.28
TopologyManagerPolicyOptionsfalseAlpha1.261.27
TopologyManagerPolicyOptionstrueBeta1.28
TranslateStreamCloseWebsocketRequeststrueBeta1.30
UnauthenticatedHTTP2DOSMitigationfalseBeta1.281.28
UnauthenticatedHTTP2DOSMitigationtrueBeta1.29
UnknownVersionInteroperabilityProxyfalseAlpha1.28
UserNamespacesPodSecurityStandardsfalseAlpha1.29
UserNamespacesSupportfalseAlpha1.281.29
UserNamespacesSupportfalseBeta1.30
VolumeAttributesClassfalseAlpha1.29
VolumeCapacityPriorityfalseAlpha1.21
WatchListfalseAlpha1.27
WindowsHostNetworktrueAlpha1.26
WinDSRfalseAlpha1.14
WinOverlayfalseAlpha1.141.19
WinOverlaytrueBeta1.20
ZeroLimitedNominalConcurrencySharesfalseBeta1.29

已毕业或已弃用功能的功能门控

已毕业或已弃用功能的功能门控
功能默认值阶段直到
AdmissionWebhookMatchConditionsfalseAlpha1.271.27
AdmissionWebhookMatchConditionstrueBeta1.281.29
AdmissionWebhookMatchConditionstrueGA1.30
AggregatedDiscoveryEndpointfalseAlpha1.261.26
AggregatedDiscoveryEndpointtrueBeta1.271.29
AggregatedDiscoveryEndpointtrueGA1.30
AllowServiceLBStatusOnNonLBfalse已弃用1.29
APIListChunkingfalseAlpha1.81.8
APIListChunkingtrueBeta1.91.28
APIListChunkingtrueGA1.29
APIPriorityAndFairnessfalseAlpha1.181.19
APIPriorityAndFairnesstrueBeta1.201.28
APIPriorityAndFairnesstrueGA1.29
CloudDualStackNodeIPsfalseAlpha1.271.28
CloudDualStackNodeIPstrueBeta1.291.29
CloudDualStackNodeIPstrueGA1.30
ConsistentHTTPGetHandlerstrueGA1.25
CPUManagerfalseAlpha1.81.9
CPUManagertrueBeta1.101.25
CPUManagertrueGA1.26
CSIMigrationRBDfalseAlpha1.231.27
CSIMigrationRBDfalse已弃用1.28
CSINodeExpandSecretfalseAlpha1.251.26
CSINodeExpandSecrettrueBeta1.271.28
CSINodeExpandSecrettrueGA1.29
CustomResourceValidationExpressionsfalseAlpha1.231.24
CustomResourceValidationExpressionstrueBeta1.251.28
CustomResourceValidationExpressionstrueGA1.29
DefaultHostNetworkHostPortsInPodTemplatesfalse已弃用1.28
EfficientWatchResumptionfalseAlpha1.201.20
EfficientWatchResumptiontrueBeta1.211.23
EfficientWatchResumptiontrueGA1.24
ExecProbeTimeouttrueGA1.20
HPAContainerMetricsfalseAlpha1.201.26
HPAContainerMetricstrueBeta1.271.29
HPAContainerMetricstrueGA1.30
InTreePluginRBDUnregisterfalseAlpha1.231.27
InTreePluginRBDUnregisterfalse已弃用1.28
JobReadyPodsfalseAlpha1.231.23
JobReadyPodstrueBeta1.241.28
JobReadyPodstrueGA1.29
KMSv1true已弃用1.281.28
KMSv1false已弃用1.29
KMSv2falseAlpha1.251.26
KMSv2trueBeta1.271.28
KMSv2trueGA1.29
KMSv2KDFfalseBeta1.281.28
KMSv2KDFtrueGA1.29
LegacyServiceAccountTokenCleanUpfalseAlpha1.281.28
LegacyServiceAccountTokenCleanUptrueBeta1.291.29
LegacyServiceAccountTokenCleanUptrueGA1.30
MinDomainsInPodTopologySpreadfalseAlpha1.241.24
MinDomainsInPodTopologySpreadfalseBeta1.251.26
MinDomainsInPodTopologySpreadtrueBeta1.271.29
MinDomainsInPodTopologySpreadtrueGA1.30
NewVolumeManagerReconstructionfalseBeta1.271.27
NewVolumeManagerReconstructiontrueBeta1.281.29
NewVolumeManagerReconstructiontrueGA1.30
NodeOutOfServiceVolumeDetachfalseAlpha1.241.25
NodeOutOfServiceVolumeDetachtrueBeta1.261.27
NodeOutOfServiceVolumeDetachtrueGA1.28
PodHostIPsfalseAlpha1.281.28
PodHostIPstrueBeta1.291.30
PodHostIPstrueGA1.30
PodSchedulingReadinessfalseAlpha1.261.26
PodSchedulingReadinesstrueBeta1.271.29
PodSchedulingReadinesstrueGA1.30
ReadWriteOncePodfalseAlpha1.221.26
ReadWriteOncePodtrueBeta1.271.28
ReadWriteOncePodtrueGA1.29
RemainingItemCountfalseAlpha1.151.15
RemainingItemCounttrueBeta1.161.28
RemainingItemCounttrueGA1.29
ServerSideApplyfalseAlpha1.141.15
ServerSideApplytrueBeta1.161.21
ServerSideApplytrueGA1.22
ServerSideFieldValidationfalseAlpha1.231.24
ServerSideFieldValidationtrueBeta1.251.26
ServerSideFieldValidationtrueGA1.27
ServiceNodePortStaticSubrangefalseAlpha1.271.27
ServiceNodePortStaticSubrangetrueBeta1.281.28
ServiceNodePortStaticSubrangetrueGA1.29
SkipReadOnlyValidationGCEfalseAlpha1.281.28
SkipReadOnlyValidationGCEtrue已弃用1.29
StableLoadBalancerNodeSettrueBeta1.271.29
StableLoadBalancerNodeSettrueGA1.30
ValidatingAdmissionPolicyfalseAlpha1.261.27
ValidatingAdmissionPolicyfalseBeta1.281.29
ValidatingAdmissionPolicytrueGA1.30
WatchBookmarkfalseAlpha1.151.15
WatchBookmarktrueBeta1.161.16
WatchBookmarktrueGA1.17

使用功能

功能阶段

功能可以处于*Alpha*、*Beta*或*GA*阶段。*Alpha*功能意味着

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

*Beta*功能意味着

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

*正式发布* (GA) 功能也称为*稳定*功能。这意味着

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

功能门控列表

每个功能门控都旨在启用/禁用特定功能。

  • AdmissionWebhookMatchConditions:在突变和验证准入 webhook 上启用匹配条件

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

  • AllowServiceLBStatusOnNonLB:允许在 LoadBalancer 类型以外的服务上设置 .status.ingress.loadBalancer

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

  • APIListChunking:使 API 客户端能够分块从 API 服务器检索(LISTGET)资源。

  • APIPriorityAndFairness:在每个服务器上启用具有优先级和公平性的请求并发管理。(从 RequestManagement 重命名)

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

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

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

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

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

  • CloudDualStackNodeIPs:使用外部云提供程序启用双栈kubelet --node-ip。有关更多详细信息,请参阅配置 IPv4/IPv6 双栈

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

  • ClusterTrustBundleProjectionclusterTrustBundle projected 卷源

  • ComponentSLIs:在 kubelet、kube-scheduler、kube-proxy、kube-controller-manager、cloud-controller-manager 等 Kubernetes 组件上启用/metrics/slis端点,允许您抓取运行状况检查指标。

  • ConsistentHTTPGetHandlers:使用探针规范化生命周期处理程序的 HTTP get URL 和 Header 传递。

  • ConsistentListFromCache:允许 API 服务器从缓存提供一致的列表。

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

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

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

  • CPUManagerPolicyAlphaOptions:这允许微调 CPUManager 策略,实验性的 Alpha 质量选项。此功能门控守护一组质量级别为 alpha 的 CPUManager 选项。此功能门控永远不会升级到 beta 或稳定版。

  • CPUManagerPolicyBetaOptions:这允许微调 CPUManager 策略,实验性的 Beta 质量选项。此功能门控守护一组质量级别为 beta 的 CPUManager 选项。此功能门控永远不会升级到稳定版。

  • CPUManagerPolicyOptions:允许微调 CPUManager 策略。

  • CRDValidationRatcheting:如果资源更新中违反其 OpenAPI 架构的部分没有更改,则启用对自定义资源的更新以包含这些违规行为。有关更多详细信息,请参阅验证棘轮

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

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

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

  • CSIMigrationRBD:启用 shim 和转换逻辑,以将卷操作从 RBD 树内插件路由到 Ceph RBD CSI 插件。需要启用 CSIMigration 和 csiMigrationRBD 功能标志,并在集群中安装和配置 Ceph CSI 插件。此标志已被弃用,取而代之的是InTreePluginRBDUnregister功能标志,该标志可防止注册树内 RBD 插件。

  • CSINodeExpandSecret:启用将机密身份验证数据传递给 CSI 驱动程序,以便在NodeExpandVolume CSI 操作期间使用。

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

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

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

  • CustomResourceValidationExpressions:在 CRD 中启用表达式语言验证,这将根据x-kubernetes-validations扩展中编写的验证规则验证客户资源。

  • DefaultHostNetworkHostPortsInPodTemplates:

    此功能门控控制为使用hostNetwork: true的 Pod 分配.spec.containers[*].ports[*].hostPort的默认值的时间点。Kubernetes v1.28 之后的默认设置是仅在 Pod 中设置默认值。

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

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

  • DisableCloudProviders:禁用kube-apiserverkube-controller-managerkubelet中与--cloud-provider组件标志相关的任何功能。

  • DisableKubeletCloudCredentialProviders:禁用 kubelet 中用于向云提供商容器注册表进行身份验证以获取镜像拉取凭据的树内功能。

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

  • DynamicResourceAllocation:启用对具有自定义参数且生命周期独立于 Pod 的资源的支持。

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

  • ElasticIndexedJob:通过同时改变spec.completionsspec.parallelism,使spec.completions == spec.parallelism,从而可以向上或向下扩展索引作业。有关更多详细信息,请参阅弹性索引作业上的文档。

  • EventedPLEG:启用对 kubelet 的支持,以便通过容器运行时接收容器生命周期事件,方法是扩展CRI。(PLEG 是“Pod 生命周期事件生成器”的缩写)。要使此功能有用,您还需要在集群中运行的每个容器运行时中启用对容器生命周期事件的支持。如果容器运行时未宣布支持容器生命周期事件,则即使您启用了此功能门控,kubelet 也会自动切换到旧的通用 PLEG 机制。

  • ExecProbeTimeout:确保 kubelet 遵守 exec 探针超时。如果您的任何现有工作负载依赖于现在已更正的故障(Kubernetes 忽略了 exec 探针超时),则存在此功能门控。请参阅就绪探针

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

  • GracefulNodeShutdownBasedOnPodPriority:使 kubelet 能够在正常关闭节点时检查 Pod 优先级。

  • HonorPVReclaimPolicy:当持久卷回收策略为Delete时,无论 PV-PVC 删除顺序如何,都应遵守该策略。有关更多详细信息,请查看PersistentVolume 删除保护终结器文档。

  • HPAContainerMetrics:允许HorizontalPodAutoscalers根据目标 Pod 内各个容器的指标进行扩展。

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

  • ImageMaximumGCAge:启用 kubelet 配置字段imageMaximumGCAge,允许管理员指定镜像在被垃圾回收之前的保留时间。

  • InPlacePodVerticalScaling:启用就地 Pod 垂直扩展。

  • InTreePluginAWSUnregister:停止在 kubelet 和卷控制器中注册 aws-ebs 树内插件。

  • InTreePluginAzureDiskUnregister:停止在 kubelet 和卷控制器中注册 azuredisk 树内插件。

  • InTreePluginAzureFileUnregister:停止在 kubelet 和卷控制器中注册 azurefile 树内插件。

  • InTreePluginGCEUnregister:停止在 kubelet 和卷控制器中注册 gce-pd 树内插件。

  • InTreePluginOpenStackUnregister:停止在 kubelet 和卷控制器中注册 OpenStack cinder 树内插件。

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

  • InTreePluginRBDUnregister:停止在 kubelet 和卷控制器中注册 RBD 树内插件。

  • InTreePluginvSphereUnregister:停止在 kubelet 和卷控制器中注册 vSphere 树内插件。

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

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

  • JobPodFailurePolicy:允许用户根据容器退出代码和 Pod 条件指定 Pod 故障的处理方式。

  • JobPodReplacementPolicy:允许您在Job中指定用于终止 Pod 的 Pod 替换。

  • JobReadyPods:启用跟踪具有Ready 条件的 Pod 数量。 Ready Pod 的计数记录在Job状态的状态中。

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

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

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

  • KMSv2KDF:启用 KMS v2 生成一次性数据加密密钥。有关更多详细信息,请参阅使用 KMS 提供程序进行数据加密。如果您的集群中未启用 KMSv2 功能门控,则 KMSv2KDF 功能门控的值无效。

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

  • 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 服务实现终止节点的连接排空。

  • LegacyServiceAccountTokenCleanUp:启用在指定时间(默认为一年)内未使用基于 Secret 的服务帐户令牌时对其进行清理。

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

  • LocalStorageCapacityIsolationFSQuotaMonitoring:当为本地临时存储启用 LocalStorageCapacityIsolation 并且emptyDir 卷的支持文件系统支持项目配额并且已启用时,使用项目配额来监控emptyDir 卷存储消耗,而不是进行文件系统遍历,以获得更好的性能和准确性。

  • LogarithmicScaleDown:启用基于 Pod 时间戳的对数分桶,在控制器缩减时半随机选择要驱逐的 Pod。

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

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

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

  • MatchLabelKeysInPodTopologySpread:为Pod 拓扑扩展约束启用 matchLabelKeys 字段。

  • MaxUnavailableStatefulSet:启用为 StatefulSet 的滚动更新策略设置 maxUnavailable 字段。该字段指定在更新期间最多可以有多少个 Pod 不可用。

  • MemoryManager:允许根据 NUMA 拓扑为容器设置内存关联性。

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

  • MinDomainsInPodTopologySpread:在Pod 拓扑扩展约束中启用 minDomains

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

  • NewVolumeManagerReconstruction:

    在 kubelet 启动期间能够更好地发现已挂载的卷。由于相关代码已进行重大重构,因此 Kubernetes 1.25 到 1.29 版本允许您选择退出,以防 kubelet 在启动时卡住或未从已终止的 Pod 中卸载卷。

    此重构是 Kubernetes 1.25 和 1.26 版本中 SELinuxMountReadWriteOncePod 功能门控背后的原因。

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

  • NodeInclusionPolicyInPodTopologySpread:启用在计算 Pod 拓扑扩展偏差时在Pod 拓扑扩展约束中使用 nodeAffinityPolicynodeTaintsPolicy

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

  • NodeOutOfServiceVolumeDetach:当使用 node.kubernetes.io/out-of-service 污点将节点标记为停止服务时,如果节点上的 Pod 不能容忍此污点,则将强制删除它们,并且将立即执行终止节点上的 Pod 的卷分离操作。已删除的 Pod 可以在其他节点上快速恢复。

  • 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 由于中断而被删除。

  • PodHostIPs:为 Pod 启用 status.hostIPs 字段和下行 API。该字段允许您将主机 IP 地址公开给工作负载。

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

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

  • PodReadyToStartContainersCondition:

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

    此功能门控以前称为 PodHasNetworkCondition,并且关联的条件名为 PodHasNetwork

  • PodSchedulingReadiness:启用设置 schedulingGates 字段以控制 Pod 的调度准备状态

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

  • ProcMountType:通过设置 SecurityContext 的 procMount 字段,可以控制容器的 proc 挂载类型。

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

  • ReadWriteOncePod:启用 ReadWriteOncePod PersistentVolume 访问模式的使用。

  • RecoverVolumeExpansionFailure:使用户能够将其 PVC 编辑为较小的容量,以便他们可以从先前发出的卷扩展失败中恢复。有关更多详细信息,请参阅从扩展卷失败中恢复

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

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

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

  • RetryGenerateName:在预期API 服务器生成名称时,启用重试对象创建。启用此功能后,如果控制平面检测到与现有对象的名称冲突,则使用 generateName 的请求将自动重试,最多尝试 8 次。

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

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

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

  • SELinuxMount:

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

    启用SELinuxMount特性门需要启用SELinuxMountReadWriteOncePod特性门。

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

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

  • ServerSideApply:在 API 服务器上启用服务器端应用 (SSA)功能。

  • ServerSideFieldValidation:启用服务器端字段验证。这意味着资源模式的验证是在 API 服务器端执行的,而不是在客户端执行的(例如,kubectl createkubectl apply命令行)。

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

  • ServiceAccountTokenNodeBinding:控制 apiserver 是否允许将 ServiceAccount 令牌绑定到 Node 对象。

  • ServiceAccountTokenNodeBindingValidation:控制 apiserver 是否将验证 ServiceAccount 令牌中的 Node 引用。

  • ServiceAccountTokenPodNodeInfo:控制 apiserver 在为绑定到 Pod 对象的 ServiceAccount 令牌时,是否嵌入关联节点的节点名称和 UID。

  • ServiceNodePortStaticSubrange:允许对 NodePort 服务使用不同的端口分配策略。有关更多详细信息,请参阅保留 NodePort 范围以避免冲突

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

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

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

  • SkipReadOnlyValidationGCE:跳过对 GCE 的验证,将在下一个版本中启用。

  • StableLoadBalancerNodeSet:通过服务控制器 (KCCM) 减少由于节点状态更改而导致的负载均衡器重新配置。

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

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

  • StorageVersionAPI:启用存储版本 API

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

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

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

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

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

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

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

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

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

  • 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:启用对观察书签事件的支持。

  • WatchList:启用对在观察请求中流式传输对象的初始状态的支持。

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

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

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

  • ZeroLimitedNominalConcurrencyShares:允许 API 服务器中的优先级和公平性对优先级级别的limited部分的nominalConcurrencyShares字段使用零值。

下一步

  • 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)