在多集群 Google Kubernetes Engine (GKE) 推理网关环境中,您可以将不同的后端配置应用于部署在多个集群中的服务。例如,您可以为不同区域或环境中的后端设置不同的最大请求速率或容量缩放器。
为了理解本文档,您应该熟悉以下内容:
- GKE 上的 AI/机器学习编排。
- 生成式 AI 术语。
- GKE 网络概念,包括 Service、GKE 多集群 Ingress 和 GKE Gateway API。
- Google Cloud中的负载均衡,尤其是负载均衡器如何与 GKE 交互。
本文档面向以下角色:
- 有兴趣使用 Kubernetes 容器编排功能处理 AI/机器学习工作负载的机器学习 (ML) 工程师、平台管理员和运维人员以及数据和 AI 专家。
- 与 Kubernetes 网络交互的云架构师或网络专家。
如需详细了解我们在Google Cloud 内容中提及的常见角色和示例任务,请参阅常见的 GKE Enterprise 用户角色和任务。
GCPBackendPolicy 范围的运作方式
GCPBackendPolicy 中的 scopes 字段可让您根据后端运行的特定集群自定义后端配置。您可以为不同环境或区域中的后端应用不同的设置,从而对分布式 AI/ML 工作负载进行精细控制。以下各部分介绍了如何定位资源、定义政策范围以及处理冲突解决。
目标推理网关资源
如需在多集群 GKE 环境中使用推理网关政策,GCPBackendPolicy 的 targetRef 字段必须引用 GCPInferencePoolImport 资源:
targetRef:
group: networking.gke.io
kind: GCPInferencePoolImport
name: example
政策范围定义
GCPBackendPolicy 中的 scopes 字段可让您将不同的后端设置应用于特定的后端组。通过在 default.scopes 中定义配置对象,您可以使用集群标签来精确定位后端并应用特定设置。例如,您可以为不同区域或集群中的后端设置唯一的容量限制或请求速率。
您无法在主 default 部分和 default.scopes 条目中同时指定相同的后端级字段(例如 maxRatePerEndpoint)。尝试这样做会导致政策被拒绝,这有助于确保配置清晰一致。
冲突解决
如果后端与多个范围匹配,系统会应用以下规则来确保行为可预测:
- 优先匹配:如果后端与
scopes列表中的多个选择器匹配,系统只会应用第一个匹配的选择器中的设置。按从最具体到最宽泛的顺序排列范围,有助于确保您的预期配置生效。 - 精确定位:当单个选择器包含多个标签(例如
gke.io/region: us-central1和env: prod)时,后端必须满足所有这些标签,系统才能应用相应范围的配置。此方法可让您根据多个条件精确定位后端。
各后端支持的字段
下表列出了您可以自定义的后端级字段,以便在不同环境或区域中控制后端行为。
| 字段名称 | 说明 | 配置示例 |
|---|---|---|
backendPreference |
指定在多区域负载均衡的容量追逐期间,后端是首选 (PREFERRED) 还是默认 (DEFAULT)。 |
backendPreference: PREFERRED |
balancingMode |
指定平衡算法。支持的值包括 RATE、UTILIZATION 或 CUSTOM_METRICS。 |
balancingMode: CUSTOM_METRICS |
capacityScalerPercent |
根据容量配置流量分配。此值是一个介于 0 到 100 之间的百分比,用作后端配置的目标容量的乘数。默认值为 100%。 | capacityScalerPercent: 20 |
customMetrics |
指定当 balancingMode 设置为 CUSTOM_METRICS 时用于负载均衡的自定义指标。此字段是一个指标定义列表。 |
customMetrics: [{ name: "my-metric", value: 0.8 }] |
maxInFlightPerEndpoint |
设置每个端点的并发请求数或连接数上限。 | maxInFlightPerEndpoint: 100 |
maxRatePerEndpoint |
设置每个端点的最大请求速率(以每秒请求数 [RPS] 为单位)。 | maxRatePerEndpoint: 50 |
指定范围选择器
每个范围中的 selectors 字段可让您控制哪些后端会接收特定政策设置。您可以根据后端集群标签(内置 GKE 标签或您自己的自定义标签)来定位后端,以便为不同的后端组量身定制配置。
kind: GCPBackendPolicy
apiVersion: networking.gke.io/v1
metadata:
name: echoserver-v2
spec:
targetRef:
group: "networking.gke.io"
kind: GCPInferencePoolImport
name: test-inference-pool
default:
balancingMode: IN_FLIGHT # IN_FLIGHT mode is set at the default level
scopes:
- selector:
gke.io/zone: "us-central1-a"
maxInFlightPerEndpoint: 100 # Invalid: maxInFlightPerEndpoint cannot be set within a scope when balancingMode is IN_FLIGHT at the default level
隐式 GKE 标签
以下隐式标签可用作选择器。 GKE 会自动将以下标签应用于您的集群:
| 标签 | 说明 | 示例值 |
|---|---|---|
gke.io/cluster-name |
GKE 集群的名称。 | my-cluster |
gke.io/region |
集群所在的区域。 | us-central1 |
gke.io/zone |
集群所在的可用区。 | us-central1-a |
自定义聚类标签
自定义集群标签可让您更灵活地对后端进行分组和管理。通过在 GKE 集群上定义自己的标签,您可以在 GCPBackendPolicy 中创建高度特定的选择器,以应用独特的配置。例如,您可以根据不同环境(dev、staging 或 prod)或特定应用版本等条件来配置这些设置。
如需向 GKE 集群添加自定义标签(例如 environment=production),请运行以下命令:
gcloud container clusters update CLUSTER_NAME \
--region=REGION \
--update-labels=LABEL_KEY=LABEL_VALUE
替换以下内容:
CLUSTER_NAME:您的集群的名称。REGION:集群所在的区域。LABEL_KEY:自定义标签的键,例如environment。LABEL_VALUE:自定义标签的值,例如production。
然后,您可以使用政策中的自定义标签选择器选择此集群中的后端。
包含范围选择器的 GCPBackendPolicy 示例
以下示例定义了一个以名为 experimental 的 GCPInferencePoolImport 为目标的 GCPBackendPolicy。该政策使用隐式标签和自定义标签来设置 backendPreference、maxRatePerEndpoint 和 capacityScalerPercent 的值。
apiVersion: networking.gke.io/v1
kind: GCPBackendPolicy
metadata:
name: backend-policy
spec:
targetRef:
kind: GCPInferencePoolImport
name: experimental
default:
scopes:
# Selector 1: Targets backends in us-west2, sets capacity to 50%
- capacityScalarPercent: 50
selector:
gke.io/region: us-west2
# Selector 2: Targets backends in clusters labeled 'env: prod'
- maxRatePerEndpoint: 40
selector:
env: prod
# Selector 3: Targets backends in a specific US-Central zone and marks them as PREFERRED
- backendPreference: PREFERRED
maxRatePerEndpoint: 50
selector:
gke.io/cluster-name: my-cluster
gke.io/zone: us-central1-a
应用此政策后,您会发现以下行为:
us-west2区域内集群中的后端会将有效容量调整为 50%。- 标记为
env: prod的集群中的后端限制为每个端点每秒最多 40 个请求。 - 在专门位于
us-central1-a区域的集群中,后端在负载均衡期间会获得优先处理 (PREFERRED),并且每个端点的最大速率为每秒 50 个请求。
后续步骤
- 了解如何配置
GCPBackendPolicy。 - 详细了解 GKE 多集群推理网关。
- 详细了解如何设置 GKE 多集群推理网关。