特性门控

本页详述了管理员可以在不同的 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 状态的特性门控

处于 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.301.30
RecursiveReadOnlyMountstrueBeta1.31
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
AppArmortrueBeta1.41.30
AppArmortrueGA1.31
CloudDualStackNodeIPsfalseAlpha1.271.28
CloudDualStackNodeIPstrueBeta1.291.29
CloudDualStackNodeIPstrueGA1.30
CPUManagerfalseAlpha1.81.9
CPUManagertrueBeta1.101.25
CPUManagertrueGA1.26
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
JobPodFailurePolicyfalseAlpha1.251.25
JobPodFailurePolicytrueBeta1.261.30
JobPodFailurePolicytrueGA1.31
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.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
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 对象。 编辑过程可能需要慎重操作,因为这可能会导致依赖该特性的应用程序停机。
  • 推荐仅用于非关键业务用途,因为在后续版本中可能会发生不兼容的更改。如果你具有多个可以独立升级的,则可以放宽此限制。

General Availability(GA)特性也称为稳定特性,GA 特性代表着:

  • 此特性会一直启用;你不能禁用它。
  • 不再需要相应的特性门控。
  • 对于许多后续版本,特性的稳定版本将出现在发行的软件中。

特性门控列表

每个特性门控均用于启用或禁用某个特定的特性:

  • AdmissionWebhookMatchConditions:

    在变更性质和合法性检查性质的准入 Webhook 上启用匹配状况

  • AggregatedDiscoveryEndpoint:

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

  • AllowServiceLBStatusOnNonLB:

    允许对类型为 LoadBalancer 以外的 Service 设置 .status.ingress.loadBalancer

  • AnonymousAuthConfigurableEndpoints:

    为 API 服务器启用可配置的匿名身份认证端点

  • AnyVolumeDataSource:

    允许使用任何自定义的资源来作为 PVC 中的 dataSource

  • APIListChunking:

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

  • APIResponseCompression:

    压缩 LISTGET 请求的 API 响应。

  • APIServerIdentity:

    使用 Lease(租约)为集群中的每个 API 服务器赋予一个 ID。

  • APIServerTracing:

    在 API 服务器中添加对分布式跟踪的支持。 更多细节参阅针对 Kubernetes 系统组件的追踪

  • AppArmor:

    在 Linux 节点上为 Pod 启用 AppArmor 机制的强制访问控制。 更多细节参阅 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:

    在 kubelet、kube-scheduler、kube-proxy、kube-controller-manager、cloud-controller-manager 等 Kubernetes 组件上启用 /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 Checkpoint API

  • ContextualLogging:

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

  • CoordinatedLeaderElection:

    启用支持 LeaseCandidate API 的行为,并且以确定性的方式为 Kubernetes 控制平面启用协调领导者选举。

  • CPUManager:

    启用容器级别的 CPU 亲和性支持,有关更多详细信息,请参见 CPU 管理策略

  • 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,以针对 listwatchdeletecollection 请求过滤自定义资源。

  • DefaultHostNetworkHostPortsInPodTemplates:

    此特性门控将控制何时为使用 hostNetwork: true 的 Pod 设置 .spec.containers[*].ports[*].hostPort 默认值。

    启用此特性意味着默认值甚至会分配给嵌入式 PodTemplate(例如,Deployment) 的 .spec,这是 Kubernetes 旧版本的工作方式。 你应该迁移你的代码,使其不再依赖于原先的行为。

  • DevicePluginCDIDevices:

    启用设备插件 API 对 CDI 设备 ID 的支持。

  • DisableCloudProviders:

    禁用 kube-apiserverkube-controller-managerkubelet 中与 --cloud-provider 组件标志相关的所有功能。

  • DisableKubeletCloudCredentialProviders:

    禁用 kubelet 中为拉取镜像内置的凭据机制, 该凭据用于向云提供商的容器镜像仓库进行身份认证。

  • DisableNodeKubeProxyVersion:

    禁止设置 Node 的 kubeProxyVersion 字段。

  • DRAControlPlaneController:

    允许资源使用自定义参数,具有独立于 Pod 的生命周期。 资源的分配由资源驱动的控制平面控制器处理。

  • DynamicResourceAllocation:

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

  • EfficientWatchResumption:

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

  • ElasticIndexedJob:

    允许通过同时改变 spec.completionsspec.parallelism 使得 spec.completions == spec.parallelism 来对带索引的 Job 执行扩容或缩容。 更多细节请参阅弹性索引 Job 文档。

  • EventedPLEG:

    启用此特性后,kubelet 能够通过 CRI 扩展从容器运行时接收容器生命周期事件。 (PLEG 是 “Pod lifecycle event generator” 的缩写,即 Pod 生命周期事件生成器)。 要使用此特性,你还需要在集群中运行的每个容器运行时中启用对容器生命周期事件的支持。 如果容器运行时未宣布支持容器生命周期事件,即使你已启用了此特性门控, kubelet 也会自动切换到原有的通用 PLEG 机制。

  • ExecProbeTimeout:

    确保 kubelet 会遵从 exec 探针的超时值设置。 此特性门控的主要目的是方便你处理现有的、依赖于已被修复的缺陷的工作负载; 该缺陷导致 Kubernetes 会忽略 exec 探针的超时值设置。 参阅就绪态探针.

  • GracefulNodeShutdown:

    在 kubelet 中启用体面地关闭节点的支持。 在系统关闭时,kubelet 会尝试监测该事件并体面地终止节点上运行的 Pod。 参阅体面地关闭节点以了解更多细节。

  • GracefulNodeShutdownBasedOnPodPriority:

    允许 kubelet 在体面终止节点时检查 Pod 的优先级。

  • HonorPVReclaimPolicy:

    无论 PV 和 PVC 的删除顺序如何,当持久卷回收策略为 Delete 时都要遵守该策略。更多细节参阅 PersistentVolume 删除保护终结器文档。

  • HPAContainerMetrics:

    允许 HorizontalPodAutoscalers 基于目标 Pod 中单个容器的指标进行扩缩。

  • HPAScaleToZero:

    使用自定义指标或外部指标时,可将 HorizontalPodAutoscaler 资源的 minReplicas 设置为 0。

  • ImageMaximumGCAge:

    启用 kubelet 配置字段 imageMaximumGCAge,允许管理员指定多久之后镜像将被垃圾收集。

  • ImageVolume:

    允许在 Pod 中使用 image 卷源。 这个卷源允许你将容器镜像挂载为只读卷。

  • InPlacePodVerticalScaling:

    启用就地 Pod 垂直扩缩。

  • InTreePluginPortworxUnregister:

    在 kubelet 和卷控制器上关闭注册 Portworx 内嵌插件。

  • JobBackoffLimitPerIndex:

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

  • JobManagedBy:

    允许将 Job 对象的调和委托给外部控制器。

  • JobPodFailurePolicy:

    允许用户根据容器退出码和 Pod 状况来指定 Pod 失效的处理方法。

  • JobPodReplacementPolicy:

    允许你在 Job 中为终止的 Pod 指定替代 Pod。

  • JobSuccessPolicy:

    允许用户基于一组成功的 Pod 来声明这组 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 追踪 span。 详情参见追踪 Kubernetes 系统组件

  • KubeProxyDrainingTerminatingNodes:

    externalTrafficPolicy: Cluster 服务实现终止节点的连接排空。

  • LegacyServiceAccountTokenCleanUp:

    当服务账号令牌在指定时间内(默认为一年)未被使用时, 允许基于 Secret 清理服务账号令牌

  • LoadBalancerIPMode:

    当 Service 的 typeLoadBalancer 时,可设置该 Service 的 ipMode。 更多细节请参阅指定负载均衡器状态的 IPMode

  • LocalStorageCapacityIsolationFSQuotaMonitoring:

    如果本地临时存储启用了 LocalStorageCapacityIsolation,并且 emptyDir 卷所使用的文件系统支持项目配额, 并且已启用 UserNamespacesSupport, 系统将使用项目配额来监控 emptyDir 卷的存储使用情况,而不是通过文件系统遍历来实现, 从而确保更好的性能和准确性。

  • LogarithmicScaleDown:

    启用 Pod 的半随机选择,控制器将根据 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 对象跟踪为 Service 的集群 IP 分配的 IP 地址。

  • MutatingAdmissionPolicy:

    在 Kubernetes 1.31 中,此特性门控没有效果。 Kubernetes 的未来版本可能会使用此特性门控在准入链中启用 MutatingAdmissionPolicy。

  • NewVolumeManagerReconstruction:

    在 kubelet 启动期间启用改进的挂载卷的发现。由于关联的代码已经进行了重大重构, Kubernetes v1.25 到 v1.29 允许你不采用这一逻辑,以免 kubelet 在启动时被卡住,或者未能为已终止的 Pod 卸载卷。 请注意,此重构是作为 Kubernetes 1.25 中的 SELinuxMountReadWriteOncePod Alpha 特性门控的一部分完成的。

    在 Kubernetes v1.25 和 v1.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 工作负载分配交换内存。 必须将 KubeletConfiguration.failSwapOn 设置为 false 才能使用此能力。 更多细节请参见交换内存

  • OpenAPIEnums:

    允许在从 API 服务器返回的 spec 中填充 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 和 downward API 启用 status.hostIPs 字段。此字段允许你将主机 IP 地址暴露给工作负载。

  • PodIndexLabel:

    在创建新的 Pod 时允许 Job 控制器和 StatefulSet 控制器将 Pod 索引添加为标签。 详情参见 Job 完成模式文档StatefulSet Pod 索引标签文档

  • PodLifecycleSleepAction:

    在 Container 生命周期钩子中启用 sleep 操作。

  • PodReadyToStartContainersCondition:

    使得 kubelet 能在 Pod 上标记 PodReadyToStartContainers 状况。

    此特性门控先前称为 PodHasNetworkCondition,关联的状况称为 PodHasNetwork

  • PodSchedulingReadiness:

    允许设置 schedulingGates 字段以控制 Pod 的调度就绪状态

  • PortForwardWebsockets:

    允许从请求 v2 子协议(v2.portforward.k8s.io)的客户端通过 portforward 子协议 (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)嵌入到生成的服务账号令牌中, 以及对于这些令牌未来的请求,是否将这些 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 卷)。

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

    在 EndpointSlice 中启用基于拓扑提示的拓扑感知路由。 更多细节参见拓扑感知路由

  • TopologyManagerPolicyAlphaOptions:

    启用拓扑管理器策略的微调。 允许微调拓扑管理器策略的实验性的、Alpha 质量的选项。 此特性门控守护一组质量级别为 Alpha 的拓扑管理器选项。 此特性门控绝对不会进阶至 Beta 或稳定版。

  • TopologyManagerPolicyBetaOptions:

    允许微调拓扑管理器策略的实验性的、Beta 质量的选项。 此特性门控守护一组质量级别为 Beta 的拓扑管理器选项。 此特性门控绝对不会进阶至稳定版。

  • TopologyManagerPolicyOptions:

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

  • TranslateStreamCloseWebsocketRequests:

    允许从请求 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:

    启用对监听书签事件的支持。

  • WatchCacheInitializationPostStartHook:

    启用监视缓存(WatchCache)初始化的 post-start-hook,使之成为就绪态端点(readyz)的考察条件(带超时)。

  • WatchFromStorageWithoutResourceVersion:

    允许在没有 resourceVersion 的情况下基于存储提供监视服务。

  • WatchList:

    启用对监听请求中流式传输对象初始状态的支持。

  • WindowsHostNetwork:

    启用对 Windows 容器接入主机网络名字空间的支持。

  • WinDSR:

    允许 kube-proxy 为 Windows 创建 DSR(Direct Server Return,直接服务器返回)负载均衡器。

  • 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 版本控制
最后修改 December 29, 2023 at 9:14 AM PST: [zh] Sync feature-gates/index.md (541d08cc0d)