观察配额超限处置方式

本文档介绍了如何观察配额强制执行情况。Google Distributed Cloud (GDC) 网闸隔离配置的配额系统可防止出现可能导致服务过载的意外用量激增,从而保护服务。为了帮助您了解服务配额的配置和强制执行方式,您可以使用 Library Agent 服务来观察配额行为,例如速率限制。

库代理服务公开了两个 API:

  • GetShelf:检索特定搁架的详细信息,不受速率限制。
  • ListShelves:检索所有书架的列表,速率限制为每分钟 2 个请求。

本页面适用于应用运营者群组中的开发者,他们负责监控项目的配额和使用情况模式。如需了解详情,请参阅 GDC 气隙文档的受众群体

准备工作

在与 Library Agent 服务互动之前,请确保您拥有正确的权限和服务端点:

  1. 如需获得与 Library Agent 服务互动所需的权限,请让项目 IAM 管理员为您授予项目命名空间中的 LibraryAgent User 角色。例如,项目 IAM 管理员可以通过应用 RoleBinding 资源,在项目命名空间中将 libraryagent-user 角色绑定到您的用户账号:

    kubectl apply -f - <<EOF
    apiVersion: rbac.authorization.k8s.io/v1
    kind: RoleBinding
    metadata:
      name: libraryagent-user-binding
      namespace: PROJECT_NAMESPACE
    subjects:
    - kind: User
      name: USER_EMAIL_ADDRESS
      apiGroup: rbac.authorization.k8s.io
    roleRef:
      kind: Role
      name: libraryagent-user
      apiGroup: rbac.authorization.k8s.io
    EOF
    

    替换以下内容:

    • PROJECT_NAMESPACE:项目的命名空间,例如 project-123
    • USER_EMAIL_ADDRESS:与您的用户身份相关联的电子邮件地址。
  2. 请具有组织管理员集群访问权限且具有 DNS Monitor (dns-monitor-mp) 角色的平台管理员获取 Library Agent 服务的 DNS 名称:

    kubectl get dnsregistration.network.private.gdc.goog -n libraryagent-system libraryagent -o jsonpath='{.status.fqdn}'
    

    如果您需要修改 DNS 注册,PA 还必须具有 DNS Debugger (dns-debugger-mp) 角色。

遵守配额限制

如需与 Library Agent API 互动并观察速率限制,请按以下步骤操作:

  1. 为 DNS 名称和您的身份验证令牌设置环境变量:

    export DNS_NAME=LIBRARY_AGENT_DNS_NAME
    export TOKEN="$($HOME/gdcloud auth print-identity-token --audiences=https://$DNS_NAME)"
    

    LIBRARY_AGENT_DNS_NAME 替换为您之前获得的 DNS 名称。

  2. 调用 GetShelf API 以按名称提取特定搁架。此方法没有速率限制:

    curl -v -X GET \
    -H "Authorization: Bearer ${TOKEN?}" \
    --insecure \
    https://$DNS_NAME/v1alpha1/projects/PROJECT_NAMESPACE/shelves/Shelf1
    

    PROJECT_NAMESPACE 替换为您的项目命名空间。

    您会收到 HTTP 200 OK 响应。

  3. 调用 ListShelves API 以列出 DNS 名称中反映的某个位置中的所有货架。此方法的速率限制为每分钟 2 个请求:

    curl -v -X GET \
    -H "Authorization: Bearer ${TOKEN?}" \
    --insecure \
    https://$DNS_NAME/v1alpha1/projects/PROJECT_NAMESPACE/shelves
    

    PROJECT_NAMESPACE 替换为您的项目命名空间。

    如果您每分钟的请求数不超过 2 个,则会收到 HTTP 200 OK 响应。

  4. 如需观察配额强制执行情况,请反复调用 ListShelves API,直到超出速率限制:

    curl -v -X GET \
    -H "Authorization: Bearer ${TOKEN?}" \
    --insecure \
    https://$DNS_NAME/v1alpha1/projects/PROJECT_NAMESPACE/shelves
    

    PROJECT_NAMESPACE 替换为您的项目命名空间。

    当您超出限制时,会收到 HTTP 429 Too Many Requests 响应,表明相应请求受到了配额系统的速率限制。输出类似于以下内容:

    * Request completely sent off
    < HTTP/2 429
    < x-envoy-ratelimited: true
    < date: Thu, 24 Apr 2025 18:37:16 GMT
    < server: istio-envoy
    < x-envoy-upstream-service-time: 46
    <
    * Connection #0 to host libraryagent.org-1.zone1.google.gdch.test left intact
    

    速率限制的执行并不总是精确的;可能需要在一分钟内发出两次以上的请求才能触发 429 错误。