注册外部直通式网络负载平衡器

本页面介绍了如何配置 外部直通式网络负载平衡器,以便在 Service Directory 中自动 注册。

创建负载均衡器时,您可以将其注册为所选择的现有 Service Directory 命名空间和服务中的端点。然后,客户端应用可以通过 HTTP 或 gRPC 使用 Service Directory 来解析外部直通式网络负载平衡器服务的地址并直接连接到该服务。

限制

Service Directory 与外部直通式网络负载平衡器的集成具有以下限制:

  • 自动注册仅支持外部第 4 层负载平衡器。您可以使用 GKE 集成 注册 Google Kubernetes Engine 负载均衡服务。您可以调用 Service Directory API 注册 其他外部负载平衡器、全局负载平衡器以及 Google Kubernetes Engine Ingress 和网关。
  • 您只能在创建转发规则时使用自动注册。无法使用 Google Cloud CLI 更新为已有的转发规则进行自动注册。
  • Service Directory 不提供连接性,这意味着,虽然 Service Directory 存储了外部直通式网络负载平衡器的虚拟 IP 地址,但在 Service Directory 中查找外部直通式网络负载平衡器并不能保证您可以连接到该虚拟 IP 地址。

准备工作

这些说明需要满足以下条件:

  • 您必须已拥有 Service Directory 命名空间和服务。 如果没有,请按照配置 Service Directory中的步骤创建命名空间和服务。

    Service Directory 命名空间和服务必须与您要创建的外部直通式网络负载平衡器转发规则位于同一项目和区域中。

  • 您必须已设置创建外部直通式网络负载平衡器转发规则所需的资源。

    如需了解如何创建外部直通式网络负载平衡器,请参阅设置外部直通式网络负载平衡器

设置转发规则以在 Service Directory 中注册外部直通式网络负载平衡器

您必须设置转发规则,才能在 Service Directory 中注册外部直通式网络负载平衡器。如需注册外部直通式网络负载平衡器,请参阅以下部分。

注册外部直通式网络负载平衡器

如需注册区域级外部直通式网络负载平衡器,请运行 gcloud compute forwarding-rules create 命令 并 设置 service-directory-registration 标志:

gcloud beta compute forwarding-rules create FORWARDING_RULE_NAME \
    --region=REGION \
    --load-balancing-scheme=EXTERNAL \
    --address=RESERVED_IP_ADDRESS \
    --ip-protocol=PROTOCOL_TYPE \
    --ports=PORT_NUMBER \
    --backend-service=BACKEND_SERVICE_NAME \
    --backend-service-region=REGION \
    --service-directory-registration=SD_SERVICE_NAME

替换以下内容:

  • FORWARDING_RULE_NAME:您要创建的转发规则的名称
  • REGION:要在其中创建转发规则的区域
  • RESERVED_IP_ADDRESS:转发规则传送的 IP 地址
  • PROTOCOL_TYPE:规则要处理的 IP 协议
  • PORT_NUMBER:以英文逗号分隔的端口列表
  • BACKEND_SERVICE_NAME:接收流量的目标后端服务
  • SD_SERVICE_NAME:您要在其中注册端点的 Service Directory 服务的完全限定名称。此服务必须与要创建的转发规则位于同一项目和区域中。例如:projects/PROJECT/locations/REGION/namespaces/NAMESPACE_NAME/services/SERVICE_NAME

验证端点

注册外部直通式网络负载平衡器时创建的 Service Directory 端点具有以下特征:

  • 端点的名称与转发规则的名称相同,并包含 指定的端口号 (<forwarding rule name>-<port>)。例如,如果您 创建转发规则 RULE 并使用 --port=8080,则会获得一个名为 RULE-8080 的端点。对于同一规则,如果您指定了两个端口 --port=8080, 8081,则会获得两个端点,即 RULE-8080RULE-8081。如果您指定了 --port=ALL,则 Service Directory 端点会注册端口 0。如果您是外部直通式网络负载平衡器的所有者,则必须确保 API 调用方知道要连接的端口。
  • 您无法使用公共 Service Directory API 修改或删除端点。只有在删除转发规则时,端点才会自动删除。这意味着,在转发规则存在期间,您无法删除端点所在的 Service 和命名空间。
  • 端点本身不收费,但对端点的任何 API 调用都适用正常的定价详情。

如需确认端点已创建,请在 Service Directory 中解析服务。 您应该会看到一个端点,其名称与转发规则的名称相同,并包含指定的端口号。

如需在 Service Directory 中解析服务,请运行 gcloud service-directory services resolve 命令:

gcloud service-directory services resolve SD_SERVICE_NAME \
    --namespace=SD_NAMESPACE_NAME \
    --location=REGION

替换以下内容:

  • SD_SERVICE_NAME:要解析的 Service Directory 服务的名称。它必须位于 Service Directory 命名空间名称中。
  • SD_NAMESPACE_NAME:您为包含服务的命名空间指定的名称。
  • REGION:包含命名空间的 Google Cloud 区域。这应与您在其中创建转发规则的区域相同。

清理

如需删除您创建的资源,请按以下步骤操作。

  1. 如需删除转发规则,请运行 gcloud compute forwarding-rules delete 命令:

    gcloud compute forwarding-rules delete FORWARDING_RULE_NAME \
      --region=REGION
    

    替换以下内容:

    • FORWARDING_RULE_NAME:您创建的转发规则的名称
    • REGION:转发规则的区域

    如需了解详情,请参阅删除转发 规则

    如需确认删除转发规则已自动从 Service Directory 中删除 端点,请在 Service Directory 服务中运行gcloud service-directory services resolve 命令,如验证端点 部分中所述。

  2. 如需删除 Service Directory 命名空间和服务,请参阅删除 资源

后续步骤

  • 如需大致了解 Service Directory,请参阅 Service Directory 概览
  • 如需了解您在使用 Service Directory 时可能会遇到的常见问题的解决方案,请参阅 问题排查