Google Kubernetes Engine (GKE) 可以根据工作负载的配置自动创建和管理集群中的节点池。本文档介绍了节点池自动创建的工作方式、扩缩参数和默认行为,并提供了一些建议,可帮助您提高可伸缩性。本文档适用于希望减少标准模式集群中与手动基础设施管理相关的费用的集群管理员。
您应该已经熟悉以下概念:
在 Autopilot 模式下,GKE 会始终根据您的工作负载为您创建和管理节点及节点池。您无需为 Autopilot 集群或 Standard 集群中的 Autopilot 工作负载手动配置节点池自动创建功能。如需了解详情,请参阅 GKE Autopilot 概览。
什么是节点池自动创建?
在 GKE 中,节点池是节点的逻辑分组。节点池中的每个节点都具有与该节点池中其他节点相同的配置。节点池自动创建是一种基础设施自动扩缩机制,可让 GKE 在集群中创建满足工作负载要求的新节点池。GKE 会管理这些自动创建的节点池,执行更新节点元数据、在节点池中创建和删除节点等任务,并在不再需要整个节点池时将其删除。节点池自动创建功能是 GKE 集群自动扩缩器的扩展功能,可自动扩缩各个节点池中的节点。
节点池自动创建功能旨在让 GKE 自动缩减并移除集群中的空节点池。您无法设置每个自动创建的节点池必须具有的最小节点数,因为大于零的最小节点数会阻止移除空节点池。如果您的使用情形要求集群中始终运行最少数量的节点,请手动创建启用了自动扩缩功能的节点池。
工作原理
节点池自动创建功能扩展了 GKE 集群自动扩缩器,使 GKE 能够预配满足待处理 Pod 的硬件要求和资源请求的新节点池。您可以通过以下方式定义硬件要求:
- 使用 ComputeClasses,然后使用节点选择器在各种 Pod 中选择这些 ComputeClass。我们建议您使用此方法,因为您可以集中定义多个工作负载可使用的通用节点配置。
- 使用节点选择器或节点亲和性在 Pod 规范中请求特定的 GKE 节点标签。
GKE 会根据以下参数配置新节点池:
- Pod 和容器中的 CPU、内存和临时存储资源请求,包括由 DaemonSet 管理的任何 Pod。
- Pod 规范或 ComputeClass 中的 GPU 和 TPU 请求。
- 待处理 Pod 的规范或 ComputeClass 中的硬件要求,例如机器类型或启动磁盘类型。
- 具有匹配节点选择器的待处理 Pod 的规范中的容忍设置。
GKE 会将自动创建的节点池中每个节点的资源容量配置为大于或等于待处理 Pod 的资源请求量。您必须确保资源请求足够大,以便 Pod 按预期运行。如果您的 Pod 请求过低,则在 GKE 将 Pod 调度到自动创建的节点上后,Pod 将无法按预期运行。
节点元数据配置
GKE 还会根据工作负载要求配置节点元数据(例如标签、注释和节点污点),如下例所示:
- 如果您请求 N2 系列机器,GKE 会向每个节点添加
cloud.google.com/machine-family: n2
节点标签。 - 如果您在 Pod 中选择 ComputeClass,GKE 会添加一个节点标签,并将
cloud.google.com/compute-class
键设置为相应 ComputeClass 的名称。 - 如果您的 Pod 同时具有容忍设置和针对同一节点标签的节点选择器,则 GKE 会为自动创建的节点添加与这些容忍设置对应的节点污点。
删除自动创建的节点池
借助节点池自动创建功能,集群自动扩缩器可以创建新的节点池和节点来运行传入的待处理 Pod。如果自动创建的节点池中的 Pod 数量减少,集群自动扩缩器会逐渐缩减节点池的规模。如果可能,GKE 会排空节点池中利用率过低的节点,将 Pod 整合到其他节点上,然后移除空节点。
如果自动创建的节点池中的节点数量为零,GKE 会删除该节点池。GKE 不会删除您从节点池自动创建中排除的节点池,例如手动创建的节点池。如需详细了解集群自动扩缩器如何缩减节点池,请参阅集群自动扩缩器的工作原理。
GKE 伸缩偏好设置
GKE 自动扩缩基础架构时,会应用以下偏好设置:
- 减少浪费的计算资源:GKE 会使用集群中现有自动创建的节点池的资源容量来确定新节点池要使用的机器类型。随着集群规模的扩大,GKE 倾向于为新节点池使用更大的机器类型,以便节点池中的每个节点可以运行更多 Pod。
- 优化可伸缩性和延迟时间:GKE 始终优先扩缩现有的兼容节点池,而不是创建新的节点池。随着集群中不同节点池数量的增加,此偏好设置的强度也会随之增加。当不同的节点池数量接近支持的上限(以实现最佳延迟时间和可伸缩性)时,GKE 不再优先创建新的节点池。
这些优先级有助于确保集群大规模高效地使用计算资源,例如在以下示例场景中:
- 在节点池数量较少且资源用量较低的集群中,GKE 会更频繁地创建新节点池,并为这些节点池使用较小的机器类型。
- 在具有大量节点池的集群中,资源使用率很高。 GKE 会减少创建新节点池的频率,并为这些节点池使用更大的机器类型,以便在继续进行 Pod 调度时,减缓集群可伸缩性和延迟限制方面的进展。
您可以使用具有 priorities.machineFamily
字段以及 priorities.minCores
字段或 priorities.minMemoryGb
字段的 ComputeClass,手动控制 GKE 用于自动创建的节点池的实例的最小规模。
节点池自动创建的启用方法
GKE 可以根据集群的配置方式,自动为特定 ComputeClass 或使用兼容配置的任何工作负载创建节点池。
启用方法 | |
---|---|
工作负载级(推荐) | 在 GKE 1.33.3-gke.1136000 版及更高版本中,您可以使用 ComputeClass 来启用节点池自动创建,而无需使用集群级节点自动预配。GKE 仅为选择已启用自动创建功能的特定 ComputeClass 的工作负载创建新的节点池。集群中的现有工作负载不受影响。 即使在 1.33.3-gke.1136000 之前的 GKE 版本中,ComputeClass 也是为工作负载请求和配置基础架构的推荐方式。ComputeClass 提供独特的功能,让您能够灵活地优化集群中的伸缩。如需了解详情,请参阅自定义 ComputeClass 简介。 |
集群级层 | 为整个集群启用节点自动预配功能。您必须为集群中的 CPU 和内存等资源设置限制。这些限制适用于整个集群。在 1.33.3-gke.1136000 之前的 GKE 版本中,必须进行集群级层配置才能启用节点池自动创建功能。 GKE 可以通过使用 Pod 规范中的 ComputeClass 或选择器,为集群中的任何待处理工作负载创建新的节点池。 |
这些配置方法并不相互排斥。您可以使用 ComputeClass 在使用节点自动预配功能的集群中自动创建节点池。如果您同时使用这两种方法在集群中启用节点池自动创建功能,GKE 会按以下优先顺序查找要用于节点池的配置设置值:
- ComputeClass 或 Pod 规范:如果您在 ComputeClass 或 Pod 规范中指定了设置(例如机器类型),GKE 会使用该设置。
- 集群级节点自动预配默认设置:如果未在 ComputeClass 或 Pod 规范中指定设置,GKE 会检查您是否在集群中为节点自动预配设置了默认值。如果存在集群级默认值,GKE 会使用该值。
- 集群级默认值:如果未在 ComputeClass、Pod 规范中指定设置,也未将其指定为集群级节点自动预配的默认值,GKE 会使用 Google Cloud 为集群设置的默认值。
例如,假设 GKE 尝试查找要用于自动创建的节点池的机器类型。上述偏好顺序的适用情况如下:
- GKE 会检查 Pod 规范或 Pod 的 ComputeClass 是否指定了机器类型。
- 如果 Pod 规范或 ComputeClass 未指定机器类型,GKE 会检查您是否在集群中为节点自动预配设置了默认机器类型。
- 如果您未为节点自动预配设置默认机器类型,GKE 将使用集群的默认机器类型。
我们建议您在大多数情况下仅使用 ComputeClass 启用方法。以下各部分详细介绍了这些配置方法,包括任何限制和注意事项。
通过 ComputeClass 实现工作负载级启用
您可以使用 ComputeClass 规范中的以下某个字段,为集群中的任何 ComputeClass 启用节点池自动创建功能:
nodePoolAutoCreation
:让 GKE 根据需要自动创建节点池。您仍然可以与节点池互动。GKE 仅实现您配置的设置或限制。autopilot
:在 Autopilot 模式下运行选择此 ComputeClass 的工作负载。与 Autopilot 集群类似,GKE 会为您完全管理节点,并实现各种 Autopilot 限制和设置。如果您使用autopilot
字段,则可以跳过本文档。如需了解详情,请参阅 Standard 中的 Autopilot 模式工作负载简介。
在满足以下要求的集群中,您可以在 ComputeClass 中使用这些字段,而无需在集群级层启用节点自动预配:
- 使用 GKE 1.33.3-gke.1136000 版及更高版本。
- 已在快速发布渠道中注册。
如果您在 ComputeClass 中配置节点池自动创建功能,但未为集群启用节点自动预配功能,则 GKE 只会为使用该 ComputeClass 的工作负载创建新的节点池。其他工作负载不受影响。
以下示例 ComputeClass 清单为使用该 ComputeClass 的任何 Pod 启用节点池自动创建功能:
apiVersion: cloud.google.com/v1
kind: ComputeClass
metadata:
name: example-computeclass
spec:
priorities:
- machineFamily: n4
- machineFamily: c4
whenUnsatisfiable: ScaleUpAnyway
nodePoolAutoCreation:
enabled: true
在集群级启用节点自动预配
如需为整个集群启用节点池自动创建功能,请使用 Google Kubernetes Engine API 为集群启用节点自动配置功能。借助节点自动预配功能,GKE 可以根据 Pod 规范或 ComputeClass 配置,为集群中的任何工作负载按需创建新的节点池。GKE 不会管理集群中的任何现有节点池,但您可以在为集群启用节点自动预配功能后,将单个节点池标记为自动预配。
在以下情况下启用节点自动预配功能:
- 您希望 GKE 在运行低于 1.33.3-gke.1136000 的 GKE 版本的集群中自动创建节点池。
您希望手动设置集群范围的资源限制。在低于 1.33.3-gke.1136000 的 GKE 版本中,即使您使用 ComputeClass,也必须设置集群范围的资源限制。
您想使用 ComputeClass 不支持的特定功能或配置。
您希望为整个集群设置默认节点配置值。
启用节点自动预配后,您可以使用 Google Cloud CLI 或 YAML 配置文件为各种节点设置配置默认值。
使用节点自动预配功能设置集群级资源限制
为整个集群启用节点自动预配功能后,您还必须为集群中的 CPU、内存、GPU 和 TPU 等资源配置限制。这些限制适用于集群中所有资源容量的总和,包括手动创建的节点池和 ComputeClass。如果操作会导致超出上述某项资源限制,GKE 不会创建新节点或节点池。
只有在集群中启用节点自动预配时,才需要设置这些集群级资源限制。在满足以下要求的集群中,您可以在 ComputeClass 中使用节点池自动创建功能,而无需启用节点自动预配功能:
- 使用 GKE 1.33.3-gke.1136000 版及更高版本。
- 已在快速发布渠道中注册。
如果您的集群满足这些要求,我们建议您仅使用 ComputeClass 来配置自动创建的节点池。
自动创建的节点池的默认设置
您可以指定 GKE 在工作负载级别或集群级别应用于自动创建的节点池的默认值。
- 工作负载级默认设置:您可以使用 ComputeClass 规范中的
spec.nodePoolConfig
字段和spec.priorityDefaults
字段为特定节点设置设置默认值。这些默认值仅适用于 GKE 为相应 ComputeClass 创建的节点池。 - 集群级默认设置:配置节点自动预配时,您可以为自动创建的节点池设置默认值。如需指定默认值,您可以使用 gcloud CLI 或 YAML 配置文件。
这些设置默认值的方法并不相互排斥。如果您在 ComputeClass 中为特定设置配置了默认值,并且为整个集群也配置了默认值,则 GKE 会使用 ComputeClass 的值。如果 ComputeClass 未指定相应设置的值,GKE 会改为使用集群级默认值。
使用配置文件设置集群级默认设置
启用节点自动预配功能后,您可以使用 YAML 配置文件为自动创建的节点池指定集群范围的默认设置。您可以在单个配置文件中指定多个设置。部分高级配置(例如自动修复设置)只能通过使用配置文件指定。
以下示例配置文件可为所有新自动创建的节点池启用节点自动修复和自动升级功能:
management: autoRepair: true autoUpgrade: true
以下示例配置文件为节点自动预配设置了集群范围的资源限制,并配置了多项默认设置:
resourceLimits: - resourceType: 'cpu' minimum: 4 maximum: 10 - resourceType: 'memory' maximum: 64 - resourceType: 'nvidia-tesla-t4' maximum: 4 management: autoRepair: true autoUpgrade: true shieldedInstanceConfig: enableSecureBoot: true enableIntegrityMonitoring: true diskSizeGb: 100
此配置文件设置了以下默认值:
- 为所有新自动创建的节点池启用节点自动修复和自动升级功能。
- 为所有自动创建的新节点池启用安全启动和完整性监控功能。
- 针对所有新自动创建的节点池,将启动磁盘大小设置为 100 GiB。
将配置文件应用于集群后,GKE 仅将文件中的设置用于集群中新自动创建的节点池。您在文件中指定的新设置或修改后的设置不会应用于 GKE 在集群中创建的现有节点池。如果您更新之前为集群设置的值,GKE 会将新值用于所有新节点池。例如,如果您之前将默认机器系列设置为 N2,然后在配置文件中将该值更新为 N4,则所有新的节点池都将使用 N4 机器类型。
如需详细了解如何使用集群级配置文件,请参阅使用节点自动预配配置文件配置设置。
节点池自动创建使用情形
以下部分介绍了节点池自动创建功能的一些热门用例和支持的硬件。如需详细了解其他使用情形和支持的配置,请参阅针对您的特定使用情形的文档。
机器系列或机器类型选择
您可以选择 Compute Engine 机器系列或机器类型,供 GKE 用于自动创建的节点池,方法如下:
- ComputeClasses:使用
machineFamily
或machineType
优先级规则。 - Pod 规范:对于机器系列,请使用
cloud.google.com/machine-family
节点标签的节点选择器。对于某种机器类型,请同时使用cloud.google.com/machine-family
和node.kubernetes.io/instance-type
节点标签。如需了解详情,请参阅选择机器系列或机器类型。
如果您未明确选择机器,GKE 会使用 E2 机器系列或与工作负载所请求的硬件兼容的机器类型。例如,GKE 使用 GPU 机器类型来处理 GPU,并使用专用机器来处理 TPU 资源。
请求机器系列或机器类型时,请确保其他节点选择器和 Pod 资源请求与指定的机器兼容。例如,您不能同时请求 GPU 和 N2 机器系列。
支持的机器系列
您可以在 ComputeClass 或工作负载中明确请求任何受支持的 Compute Engine 机器系列或机器类型。节点池自动创建功能仅在特定 GKE 版本中支持以下机器系列:
- Z3 机器系列:1.29 及更高版本。
- C4 机器系列:
- 1.28.15-gke.1159000 及更高版本。
- 1.29.10-gke.1227000 及更高版本。
- 1.30.3-gke.1225000 及更高版本。
- C4A 机器系列:
- 1.28.15-gke.1344000 及更高版本。
- 1.29.11-gke.1012000 及更高版本。
- 1.30.7-gke.1136000 及更高版本。
- 1.31.3-gke.1056000 及更高版本。
- C4D 机器系列:1.32.3-gke.1717000 及更高版本。
- N4 机器系列:1.29.3 及更高版本。
所有 GKE 版本都支持其他机器系列。
GPU 选择
您可以通过以下方式之一为自动创建的节点池请求 GPU:
- ComputeClasses:
- 使用
gpu
优先级规则配置 GPU。 - 在 Pod 中请求 GPU 资源。
- 使用
- Pod 规格:
- 为节点自动预配配置集群范围的 GPU 限制。
- 使用节点选择器配置 GPU。
- 在 Pod 中请求 GPU 资源。
GKE 会选择足够大的 GPU 机器类型来支持相应数量的 GPU。您选择的 GPU 数量会影响节点的 CPU 和内存容量。
Cloud TPU 选择
您可以通过以下任一方式为自动创建的节点池请求 Cloud TPU 资源:
- ComputeClasses:使用
tpu
优先级规则来配置 TPU。然后,在 Pod 中请求相同数量的 TPU 资源。如需了解详情,请参阅使用自定义计算类预配 TPU。 - Pod 规范:配置集群范围的 TPU 限制。然后,使用节点选择器配置 TPU,并在 Pod 中请求 TPU 资源。如需了解详情,请参阅配置 Cloud TPU。
单主机 TPU 切片节点池和多主机 TPU 切片节点池都支持自动扩缩和节点池自动创建。对于节点池自动创建,GKE 会创建具有 TPU 版本和拓扑的单主机或多主机 TPU 切片节点池,以满足待处理工作负载的要求。
Cloud TPU 的 GKE 版本要求
节点池自动创建功能仅在特定 GKE 版本中支持以下 Cloud TPU:
- Cloud TPU v5p:
- 1.28.7-gke.1020000 及更高版本。
- 1.29.2-gke.1035000 及更高版本。
- TPU Trillium:1.31.1-gke.1146000 及更高版本。
所有 GKE 版本都支持其他 Cloud TPU 类型。
Cloud TPU 节点池自动扩缩
GKE 会通过以下方式之一,自动扩缩使用集群自动扩缩器的自动创建或手动创建的 Cloud TPU 节点池:
- 单主机 TPU 切片节点池:GKE 会在现有节点池中添加或移除 TPU 节点。节点池可以包含零到节点池最大大小(由
--max-nodes
和--total-max-nodes
自动扩缩标志确定)之间的任意数量的 TPU 节点。节点池中的所有 TPU 节点都具有相同的机器类型和拓扑。如需详细了解如何创建单主机 TPU 切片节点池,请参阅创建节点池。 - 多主机 TPU 切片节点池:GKE 以原子方式将节点池从零扩容到满足 TPU 拓扑所需的节点数。例如,对于机器类型为
ct5lp-hightpu-4t
且拓扑为16x16
的 TPU 节点池,该节点池始终包含 64 个节点或零个节点。如果节点池中没有 TPU 工作负载,GKE 会缩减节点池。如需缩减节点池,GKE 会逐出所有调度的 Pod 并移除节点池中的所有节点。如需详细了解如何创建多主机 TPU 切片节点池,请参阅创建节点池。
Cloud TPU 节点池配置
GKE 会使用 Pod 或 ComputeClass 中的配置来确定 TPU 节点的配置。以下清单是一个 Deployment 规范示例,该规范在 Pod 规范中请求 TPU。如果启用了集群级节点自动预配设置,此 Deployment 会触发节点池自动创建。创建此 Deployment 示例时,GKE 会创建一个节点池,其中包含一个具有 2x2x2 拓扑和两个 ct4p-hightpu-4t
机器的 TPU v4 切片。
apiVersion: apps/v1
kind: Deployment
metadata:
name: tpu-workload
labels:
app: tpu-workload
spec:
replicas: 2
selector:
matchLabels:
app: nginx-tpu
template:
metadata:
labels:
app: nginx-tpu
spec:
nodeSelector:
cloud.google.com/gke-tpu-accelerator: tpu-v4-podslice
cloud.google.com/gke-tpu-topology: 2x2x2
cloud.google.com/reservation-name: my-reservation
containers:
- name: nginx
image: nginx:1.14.2
resources:
requests:
google.com/tpu: 4
limits:
google.com/tpu: 4
ports:
- containerPort: 80
在此清单中,以下字段定义了 TPU 配置:
cloud.google.com/gke-tpu-accelerator
:TPU 版本和类型。例如,您可以使用以下任一项:- 使用 tpu-v4-podslice 的 TPU v4
- 使用 tpu-v5-lite-podslice 的 TPU v5e。
- 使用 tpu-v5p-slice 的 TPU v5p。
- 使用 tpu-v6e-slice 的 TPU Trillium (v6e)。
cloud.google.com/gke-tpu-topology
:TPU 切片中 TPU 芯片的数量和物理排列方式。如需了解详情,请参阅选择拓扑。limits.google.com/tpu
:TPU 虚拟机上的 TPU 芯片数量。大多数配置只有一个正确的值。如需了解详情,请参阅 GKE 中 TPU 的工作原理。cloud.google.com/reservation-name
:用于获取 TPU 资源的容量预留的名称。如果省略,则工作负载不使用任何预留。
自动创建的节点池的配置取决于您选择的 TPU 类型、TPU 拓扑和 TPU 芯片数量。如需预测节点池类型、大小和配置,请执行以下操作:
- 在选择拓扑中,按您指定的 TPU 类型(例如 TPU Trillium 或 TPU v5e)过滤表格,以查找标准拓扑。
- 使用您指定的用于标识节点池配置的值,如下所示:
gke-tpu-topology
:在表中找到 Topology 具有相同值的行。limits
:在表中,将 TPU 芯片数量的值除以虚拟机数量的值。找到表中与您指定的值具有相同结果值的行。
例如,假设您请求了具有 2x4
拓扑的 tpu-v6e-slice
(TPU Trillium)。在此场景中,您可以在选择拓扑中过滤表格,以查找 TPU Trillium。然后,您需要确定与指定配置对应的行,如下所示:
gke-tpu-topology
:TPU Trillium 具有以下 2x4 拓扑配置:- 一个单主机 TPU 切片节点池,其中一个
ct6e-standard-8t
实例中包含 8 个 TPU 芯片。 - 一个多主机 TPU 切片节点池,其中有 8 个 TPU 芯片分布在两个
ct6e-standard-4t
实例中。
- 一个单主机 TPU 切片节点池,其中一个
limits
:由于 TPU Trillium 针对 2x4 拓扑有多种选择,因此您在limits
字段中指定的值取决于您所需的节点池类型,如下所示:- 单主机 TPU 切片节点池:指定
limits.google.com/tpu: 8
可获得一个包含 8 个 TPU 芯片和 1 个虚拟机的节点池。所有这 8 个芯片都连接到该虚拟机。 - 多主机 TPU 切片节点池:指定
limits.google.com/tpu: 4
可获得一个包含 8 个 TPU 芯片和 2 个虚拟机的节点池。每个虚拟机有 4 个芯片。
- 单主机 TPU 切片节点池:指定
Spot 虚拟机选择
您可以通过以下任一方式为自动创建的节点池选择 Spot 虚拟机:
- ComputeClasses:在优先级规则中使用
spot
字段。 - Pod 规范:使用对
cloud.google.com/gke-spot="true"
节点标签的容忍设置,并具有NoSchedule
效果。为cloud.google.com/gke-spot=true
或cloud.google.com/gke-provisioning=spot
节点标签添加节点选择器。或者,您也可以在容忍设置和节点选择器中使用cloud.google.com/gke-preemptible
节点标签来选择抢占式虚拟机。不过,我们强烈建议您改用 Spot 虚拟机。
临时存储空间配置
GKE 会将节点启动磁盘的一部分用于 Pod 临时存储。您可以通过以下方式之一自定义 GKE 用于自动创建的节点的启动磁盘的大小:
- ComputeClasses:在优先级规则中使用
storage.bootDiskSize
和storage.bootDiskType
字段。 您可以为不同的 ComputeClass 配置不同的启动磁盘设置。 - Pod 规范:使用集群级配置文件中的
diskSizeGb
和diskType
字段。您无法使用此方法控制各个 Pod 的启动磁盘大小和类型。
如需了解详情,请参阅自定义启动磁盘。
如果您未明确修改启动磁盘设置,则默认值为容量为 100 GiB 的 pd-balanced
卷。
只有当具有指定启动磁盘的节点的可分配临时存储大于或等于待处理 Pod 的临时存储请求时,GKE 才会创建新的节点池。如果临时存储请求大于节点的可分配临时存储,GKE 将不会创建新的节点池,并且 Pod 会一直处于待处理状态。GKE 不会根据您的 Pod 临时存储空间请求动态调整启动磁盘大小。
工作负载分离
您可以请求让特定 Pod 始终在与集群中其他 Pod 分开的节点上运行。GKE 使用节点污点来防止其他工作负载在这些节点上运行。您可以通过以下方式在自动创建的节点池中配置工作负载分离:
- ComputeClasses:GKE 为特定 ComputeClass 创建的节点只能运行选择该 ComputeClass 的 Pod。您无需修改 Pod 规范。您可以使用 Pod 间亲和性和反亲和性来分隔 ComputeClass 中的 Pod。
- Pod 规范:如果您为集群启用节点自动预配功能,则可以使用 Pod 规范中的字段来配置工作负载分离。在节点池自动创建期间,如果满足以下所有条件,GKE 可能会创建带有标签和污点的节点池:
- Pod 使用节点选择器请求自定义节点标签键和值。您无法使用系统节点标签来隔离工作负载。
- Pod 对同一节点标签键使用容忍设置。
- 容忍效果为
NoSchedule
、NoExecute
或未指定。
如需详细了解如何配置这些字段以及相关限制,请参阅在 GKE 中配置工作负载隔离。
限制
- 集群自动扩缩器的所有限制也适用于节点池自动创建。
- 如果集群的总节点池数量超过 200 个,则在自动扩缩期间延迟可能会增加。任何会触发创建新节点池的配置(例如工作负载分离或使用多个 ComputeClass)都会增加此数量。如需详细了解集群限制,请参阅限制和最佳实践中的“规划大型集群”。
- 您在启用节点自动预配功能时为集群设置的任何资源限制也会应用于 GKE 为 ComputeClass 创建的节点池。
- ComputeClass 不支持以下设置:
- 超额配置升级或蓝绿升级。
- 节点完整性和安全启动。
- 如需在 1.33.3-gke.1136000 之前的 GKE 版本中为 ComputeClass 启用节点池自动创建功能,您还必须启用集群级节点自动预配功能。此限制不适用于 GKE 1.33.3-gke.1136000 版及更高版本。
不支持的配置
GKE 不会创建使用以下配置的新节点池:
- GKE Sandbox
- Windows 操作系统
- 自动扩缩本地 PersistentVolume。
- 使用专用本地 SSD 作为 Pod 临时存储的节点。 不过,GKE 可以创建使用本地 SSD 进行原始块存储的新节点池。
- 使用更改后过滤条件进行自定义调度的节点。
- 并发多线程 (SMT)。
- 性能监控单元 (PMU)。
集群自动扩缩器可以扩缩使用这些配置的现有节点池中的节点。