功能门

此页面概述了管理员可以在不同 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 状态的功能的功能闸
功能默认值阶段直到
AnonymousAuthConfigurableEndpointsfalseAlpha1.31
AnyVolumeDataSourcefalseAlpha1.181.23
AnyVolumeDataSourcetrueBeta1.24
APIResponseCompressionfalseAlpha1.71.15
APIResponseCompressiontrueBeta1.16
APIServerIdentityfalseAlpha1.201.25
APIServerIdentitytrueBeta1.26
APIServerTracingfalseAlpha1.221.26
APIServerTracingtrueBeta1.27
AuthorizeNodeWithSelectorsfalseAlpha1.31
AuthorizeWithSelectorsfalseAlpha1.31
CloudControllerManagerWebhookfalseAlpha1.27
ClusterTrustBundlefalseAlpha1.27
ClusterTrustBundleProjectionfalseAlpha1.29
ComponentSLIsfalseAlpha1.261.26
ComponentSLIstrueBeta1.27
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
CronJobsScheduledAnnotationtrueBeta1.28
CrossNamespaceVolumeDataSourcefalseAlpha1.26
CSIMigrationPortworxfalseAlpha1.231.24
CSIMigrationPortworxfalseBeta1.25
CSIVolumeHealthfalseAlpha1.21
CustomCPUCFSQuotaPeriodfalseAlpha1.12
CustomResourceFieldSelectorsfalseAlpha1.301.30
CustomResourceFieldSelectorstrueBeta1.31
DisableCloudProvidersfalseAlpha1.221.28
DisableCloudProviderstrueBeta1.29
DisableKubeletCloudCredentialProvidersfalseAlpha1.231.28
DisableKubeletCloudCredentialProviderstrueBeta1.29
DisableNodeKubeProxyVersionfalseAlpha1.291.30
DisableNodeKubeProxyVersiontrueBeta1.31
DRAControlPlaneControllerfalseAlpha1.26
DynamicResourceAllocationfalseAlpha1.30
EventedPLEGfalseAlpha1.25
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.30
JobPodReplacementPolicyfalseAlpha1.281.28
JobPodReplacementPolicytrueBeta1.29
JobSuccessPolicyfalseAlpha1.301.30
JobSuccessPolicytrueBeta1.31
KubeletCgroupDriverFromCRIfalseAlpha1.281.30
KubeletCgroupDriverFromCRItrueBeta1.31
KubeletInUserNamespacefalseAlpha1.22
KubeletPodResourcesDynamicResourcesfalseAlpha1.27
KubeletPodResourcesGetfalseAlpha1.27
KubeletSeparateDiskGCfalseAlpha1.291.30
KubeletSeparateDiskGCtrueBeta1.31
KubeletTracingfalseAlpha1.251.26
KubeletTracingtrueBeta1.27
LoadBalancerIPModefalseAlpha1.291.30
LoadBalancerIPModetrueBeta1.30
LocalStorageCapacityIsolationFSQuotaMonitoringfalseAlpha1.151.30
LocalStorageCapacityIsolationFSQuotaMonitoringfalseBeta1.31
LoggingAlphaOptionsfalseAlpha1.24
LoggingBetaOptionstrueBeta1.24
MatchLabelKeysInPodAffinityfalseAlpha1.291.30
MatchLabelKeysInPodAffinitytrueBeta1.31
MatchLabelKeysInPodTopologySpreadfalseAlpha1.251.26
MatchLabelKeysInPodTopologySpreadtrueBeta1.27
MaxUnavailableStatefulSetfalseAlpha1.24
MemoryManagerfalseAlpha1.211.21
MemoryManagertrueBeta1.22
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
PodIndexLabeltrueBeta1.28
PodLifecycleSleepActionfalseAlpha1.291.29
PodLifecycleSleepActiontrueBeta1.30
PodReadyToStartContainersConditionfalseAlpha1.281.28
PodReadyToStartContainersConditiontrueBeta1.29
PortForwardWebsocketsfalseAlpha1.301.30
PortForwardWebsocketstrueBeta1.31
ProcMountTypefalseAlpha1.12
QOSReservedfalseAlpha1.11
RecoverVolumeExpansionFailurefalseAlpha1.23
RecursiveReadOnlyMountsfalseAlpha1.30
RelaxedEnvironmentVariableValidationfalseAlpha1.30
ResilientWatchCacheInitializationtrueBeta1.31
ResourceHealthStatusfalseAlpha1.31
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.291.30
ServiceAccountTokenNodeBindingtrueBeta1.31
ServiceAccountTokenNodeBindingValidationfalseAlpha1.291.29
ServiceAccountTokenNodeBindingValidationtrueBeta1.30
ServiceAccountTokenPodNodeInfofalseAlpha1.291.29
ServiceAccountTokenPodNodeInfotrueBeta1.30
ServiceTrafficDistributionfalseAlpha1.301.30
ServiceTrafficDistributiontrueBeta1.31
SidecarContainersfalseAlpha1.281.28
SidecarContainerstrueBeta1.29
SizeMemoryBackedVolumesfalseAlpha1.201.21
SizeMemoryBackedVolumestrueBeta1.22
StatefulSetAutoDeletePVCfalseAlpha1.231.26
StatefulSetAutoDeletePVCtrueBeta1.27
StorageVersionAPIfalseAlpha1.20
StorageVersionHashfalseAlpha1.141.14
StorageVersionHashtrueBeta1.15
StorageVersionMigratorfalseAlpha1.301.32
StructuredAuthenticationConfigurationfalseAlpha1.291.29
StructuredAuthenticationConfigurationtrueBeta1.30
StructuredAuthorizationConfigurationfalseAlpha1.291.29
StructuredAuthorizationConfigurationtrueBeta1.30
SupplementalGroupsPolicyfalseAlpha1.31
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.291.30
VolumeAttributesClassfalseBeta1.31
VolumeCapacityPriorityfalseAlpha1.21
WatchCacheInitializationPostStartHookfalseBeta1.31
WatchFromStorageWithoutResourceVersionfalseBeta1.30
WatchListfalseAlpha1.27
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
AllowServiceLBStatusOnNonLBfalse已弃用1.29
APIListChunkingfalseAlpha1.81.8
APIListChunkingtrueBeta1.91.28
APIListChunkingtrueGA1.29
APIPriorityAndFairnessfalseAlpha1.181.19
APIPriorityAndFairnesstrueBeta1.201.28
APIPriorityAndFairnesstrueGA1.29
AppArmortrueBeta1.41.30
AppArmortrueGA1.31
CloudDualStackNodeIPsfalseAlpha1.271.28
CloudDualStackNodeIPstrueBeta1.291.29
CloudDualStackNodeIPstrueGA1.30
CPUManagerfalseAlpha1.81.9
CPUManagertrueBeta1.101.25
CPUManagertrueGA1.26
CSIMigrationRBDfalseAlpha1.231.27
CSIMigrationRBDfalse已弃用1.28
DefaultHostNetworkHostPortsInPodTemplatesfalse已弃用1.28
DevicePluginCDIDevicesfalseAlpha1.281.28
DevicePluginCDIDevicestrueBeta1.291.30
DevicePluginCDIDevicestrueGA1.31
EfficientWatchResumptionfalseAlpha1.201.20
EfficientWatchResumptiontrueBeta1.211.23
EfficientWatchResumptiontrueGA1.24
ElasticIndexedJobtrueBeta1.271.30
ElasticIndexedJobtrueGA1.31
ExecProbeTimeouttrueGA1.20
HPAContainerMetricsfalseAlpha1.201.26
HPAContainerMetricstrueBeta1.271.29
HPAContainerMetricstrueGA1.30
InTreePluginRBDUnregisterfalseAlpha1.231.27
InTreePluginRBDUnregisterfalse已弃用1.28
JobPodFailurePolicyfalseAlpha1.251.25
JobPodFailurePolicytrueBeta1.261.30
JobPodFailurePolicytrueGA1.31
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
KubeProxyDrainingTerminatingNodesfalseAlpha1.281.30
KubeProxyDrainingTerminatingNodestrueBeta1.301.30
KubeProxyDrainingTerminatingNodestrueGA1.31
LegacyServiceAccountTokenCleanUpfalseAlpha1.281.28
LegacyServiceAccountTokenCleanUptrueBeta1.291.29
LegacyServiceAccountTokenCleanUptrueGA1.30
LogarithmicScaleDownfalseAlpha1.211.21
LogarithmicScaleDowntrueBeta1.221.30
LogarithmicScaleDowntrueGA1.31
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
PDBUnhealthyPodEvictionPolicyfalseAlpha1.261.26
PDBUnhealthyPodEvictionPolicytrueBeta1.271.30
PDBUnhealthyPodEvictionPolicytrueGA1.31
PersistentVolumeLastPhaseTransitionTimefalseAlpha1.281.28
PersistentVolumeLastPhaseTransitionTimetrueBeta1.291.30
PersistentVolumeLastPhaseTransitionTimetrueGA1.31
PodDisruptionConditionsfalseAlpha1.251.25
PodDisruptionConditionstrueBeta1.261.30
PodDisruptionConditionstrueGA1.31
PodHostIPsfalseAlpha1.281.28
PodHostIPstrueBeta1.291.30
PodHostIPstrueGA1.30
PodSchedulingReadinessfalseAlpha1.261.26
PodSchedulingReadinesstrueBeta1.271.29
PodSchedulingReadinesstrueGA1.30
RemainingItemCountfalseAlpha1.151.15
RemainingItemCounttrueBeta1.161.28
RemainingItemCounttrueGA1.29
ServerSideApplyfalseAlpha1.141.15
ServerSideApplytrueBeta1.161.21
ServerSideApplytrueGA1.22
ServerSideFieldValidationfalseAlpha1.231.24
ServerSideFieldValidationtrueBeta1.251.26
ServerSideFieldValidationtrueGA1.27
SkipReadOnlyValidationGCEfalseAlpha1.281.28
SkipReadOnlyValidationGCEtrue已弃用1.29
StableLoadBalancerNodeSettrueBeta1.271.29
StableLoadBalancerNodeSettrueGA1.30
StatefulSetStartOrdinalfalseAlpha1.261.26
StatefulSetStartOrdinaltrueBeta1.271.30
StatefulSetStartOrdinaltrueGA1.31
ValidatingAdmissionPolicyfalseAlpha1.261.27
ValidatingAdmissionPolicyfalseBeta1.281.29
ValidatingAdmissionPolicytrueGA1.30
WatchBookmarkfalseAlpha1.151.15
WatchBookmarktrueBeta1.161.16
WatchBookmarktrueGA1.17
ZeroLimitedNominalConcurrencySharesfalseBeta1.291.29
ZeroLimitedNominalConcurrencySharestrueGA1.30

使用功能

功能阶段

功能可以处于AlphaBetaGA 阶段。Alpha 功能意味着

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

Beta 功能意味着

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

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

  • 该功能始终启用;您无法禁用它。
  • 相应的功能闸不再需要。
  • 稳定版本的特性将在随后发布的软件中出现很多版本。

功能闸列表

每个功能闸都用于启用/禁用特定功能。

  • AdmissionWebhookMatchConditions: 启用在变异和验证准入 Webhook 上使用 匹配条件

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • ClusterTrustBundleProjection: clusterTrustBundle 投影卷源

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

  • ConsistentListFromCache:

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

    有关更多详细信息,请参阅 Kubernetes 文档中的 getlist 语义

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

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

  • CoordinatedLeaderElection: 启用支持 LeaseCandidate API 的行为,并且还确定性地为 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: 启用垫片和转换逻辑,将卷操作从 Portworx 内置插件路由到 Portworx CSI 插件。要求在集群中安装和配置 Portworx CSI 驱动程序。

  • CSIMigrationRBD: 启用垫片和转换逻辑,将卷操作从 RBD 内置插件路由到 Ceph RBD CSI 插件。要求启用 CSIMigration 和 csiMigrationRBD 功能标志,并在集群中安装和配置 Ceph CSI 插件。此标志已弃用,转而支持 InTreePluginRBDUnregister 功能标志,该标志可阻止注册内置 RBD 插件。

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

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

  • CustomResourceFieldSelectors: 在 CustomResourceDefinition API 中启用 selectableFields,以允许过滤自定义资源 listwatchdeletecollection 请求。

  • 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 字段。

  • DRAControlPlaneController: 启用对具有自定义参数和独立于 Pod 的生命周期的资源的支持。资源的分配由资源驱动程序的控制平面控制器处理。

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

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

  • ElasticIndexedJob: 启用索引作业通过同时修改 spec.completionsspec.parallelism 来进行扩展或缩减,以使 spec.completions == spec.parallelism。有关更多详细信息,请参阅有关 弹性索引作业 的文档。

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

  • ExecProbeTimeout: 确保 kubelet 尊重执行探测超时。此功能网关存在,以防您的任何现有工作负载依赖于 Kubernetes 忽略执行探测超时的已更正错误。请参阅 就绪探测

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

  • GracefulNodeShutdownBasedOnPodPriority: 启用 kubelet 在正常关闭节点时检查 Pod 优先级。

  • HonorPVReclaimPolicy: 在 PV-PVC 删除顺序无关紧要的情况下,在持久卷回收策略为 Delete 时,尊重持久卷回收策略。有关更多详细信息,请查看 持久卷删除保护终结器 文档。

  • HPAContainerMetrics: 允许 水平 Pod 自动缩放器 根据目标 Pod 中单个容器的指标进行扩展。

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

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

  • ImageVolume: 允许在 Pod 中使用 image 卷源。此卷源使您能够将容器镜像装载为只读卷。

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

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

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

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

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

  • JobPodFailurePolicy: 允许用户根据容器退出代码和 Pod 状态指定如何处理 Pod 失败。

  • JobPodReplacementPolicy: 允许您为 作业 中终止的 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 卷 的支持文件系统支持项目配额,并且启用了 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/容器的内存保护和使用量节流。

  • MinDomainsInPodTopologySpread: 启用 Pod 拓扑传播约束 中的 minDomains

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

  • MutatingAdmissionPolicy: 在 Kubernetes 1.31 中,此功能网关无效。Kubernetes 的未来版本可能会使用此功能网关在准入链中启用 MutatingAdmissionPolicy。

  • 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 的卷分离操作将立即发生。已删除的 Pod 可以快速在不同的节点上恢复。

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

  • OpenAPIEnums: 启用在 API 服务器返回的规范中填充 OpenAPI 架构的 "enum" 字段。

  • 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 级别上请求的资源(目前仅限内存)。

  • RecoverVolumeExpansionFailure: 允许用户编辑其 PVC 以减小尺寸,以便他们可以从先前发出的卷扩展失败中恢复。有关更多详细信息,请参见 从扩展卷失败中恢复

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

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

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

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

  • ResourceHealthStatus: 启用 Pod 的 .status 中的 allocatedResourcesStatus 字段。该字段报告 Pod 中每个容器的附加详细信息,其中包含分配给 Pod 的每个设备的健康信息。有关更多详细信息,请参见 设备插件和不健康的设备

  • 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: 启用运行 TaintEvictionController(执行 基于污点的驱逐)的控制器,该控制器与 NodeLifecycleController 分开。启用此功能后,用户可以选择在 kube-controller-manager 上设置 --controllers=-taint-eviction-controller 标志来禁用基于污点的驱逐。

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

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

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

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

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

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

  • 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

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

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

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

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

  • 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 的支持。有关更多信息,请参阅 Volume Attributes Classes

  • VolumeCapacityPriority: 启用支持根据可用 PV 容量优先考虑不同拓扑中的节点。

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

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

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

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

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