使用 Network Service Tiers 配置外部流量

本页面介绍如何使用 Network Service Tiers 来控制外部流量到达 Google Kubernetes Engine (GKE) 集群中的服务的方式。借助 Network Service Tiers,您可以优化网络流量,以提升性能(高级层级)或节省费用(标准层级)。

高级层级通过 Google 的优质骨干网传输流量,以实现出色的速度和可靠性。相比之下,标准层级使用常规互联网服务提供商 (ISP) 网络,可提供更经济实惠的解决方案。

本页面适用于为组织设计和架构网络的云架构师和网络专家。如需详细了解我们在 Google Cloud 内容中提及的常见角色和示例任务,请参阅常见的 GKE 用户角色和任务

Network Service Tiers 在 GKE 中的运作方式

本部分介绍如何在 GKE 中管理 Network Service Tiers。

  • 在项目级设置网络层级:您可以为 Google Cloud 项目设置默认网络层级,以使用标准层级或高级层级。所有新集群都是使用 network-default 设置创建的,该设置会继承项目级层设置。此设置在集群升级后仍会保留。在集群内创建的节点池会继承项目级配置中的网络层级。

  • 在创建新集群时设置网络层级:无论 Google Cloud 项目的方案设置如何,您都可以在创建新集群时配置网络层级。新节点池使用集群级网络层,即使在您升级节点池后,此配置也会保留。

  • 在更新集群时设置网络层级:您可以在更新现有集群时配置网络层级。新的节点池和新的 LoadBalancer 服务会沿用更新后的层级配置,而现有节点池和服务会继续使用原始网络层级配置。升级集群后,更新后的层配置会保持不变。

  • 更新 LoadBalancer 服务时设置网络层级:LoadBalancer 服务会继承集群的网络层级。不过,您可以替换此设置,并在服务清单中更新网络层级。

Network Service Tiers 和负载均衡

默认情况下,外部直通式网络负载均衡器使用优质层级。您可以更新此配置,使 LoadBalancer 服务改用标准层级。

如果您将应用负载均衡器与网关搭配使用,则无法配置 Network Service Tiers。Gateway 上的 Network Service Tiers 由 GatewayClass 资源控制。如需了解详情,请参阅网关 IP 地址

适用于外部应用负载均衡器的 GKE Ingress 不支持使用标准层级进行流量路由。

准备工作

在开始之前,请确保您已执行以下任务:

  • 启用 Google Kubernetes Engine API。
  • 启用 Google Kubernetes Engine API
  • 如果您要使用 Google Cloud CLI 执行此任务,请安装初始化 gcloud CLI。 如果您之前安装了 gcloud CLI,请运行 gcloud components update 命令以获取最新版本。较早版本的 gcloud CLI 可能不支持运行本文档中的命令。

限制

需要遵循以下限制:

  • 您只能在项目级或集群级配置网络层级设置。您无法直接配置节点池的网络层级。
  • 标准层级不支持全球级外部双栈 IPv4 或 IPv6 地址。如需详细了解 IP 地址类型,请参阅 IP 地址

创建具有 Network Service Tiers 的集群

如需创建集群并指定网络层级,请运行以下命令:

 gcloud container clusters create CLUSTER_NAME \
     --network-tier=NETWORK_TIER \
     ...

替换以下值:

  • CLUSTER_NAME:您的集群的名称。
  • NETWORK_TIER:网络层级设置。使用 network-default 可设置与 Google Cloud 项目相同的层级,使用 Standard 可设置标准层级,使用 Premium 可设置高级层级。

将现有集群迁移到其他层级

更新集群的网络层级不会影响现有资源的网络层级。现有资源会继续使用与旧网络层级关联的 IP 地址。为避免服务中断,请在将集群迁移到新的网络层级时按以下步骤操作:

  1. 更新集群:如需使用网络层更新现有集群,请运行以下命令:

    gcloud container clusters update CLUSTER_NAME \
        --network-tier=NETWORK_TIER \
        ...
    

    替换以下值:

    • CLUSTER_NAME:您的集群的名称。
    • NETWORK_TIER:网络层级设置。使用 network-default 可设置与 Google Cloud 项目相同的层级,使用 Standard 可设置标准层级,使用 Premium 可设置高级层级。
  2. 创建新的节点池和服务:为了让外部客户端使用与新网络层级相关联的新 IP 地址,您必须创建新的节点池和新的 LoadBalancer 服务。新的节点池和新的 LoadBalancer 服务会沿用更新后的层级配置,而现有节点池和服务会继续使用原始网络层级配置。

  3. 更新 DNS 记录:更改 DNS 记录,使其指向新的 LoadBalancer 服务的 IP 地址。

  4. 等待 DNS 传播:等待 DNS 存留时间 (TTL) 过期,以确保客户端被定向到新服务,并避免提供过时的记录。

使用 Network Service Tiers 更新外部负载均衡器

对于外部直通式网络负载均衡器,GKE 默认使用集群上为外部转发规则和 IP 地址配置的网络层级。如果集群的网络层级设置为 network-default,则负载均衡器使用优质层级。您可以通过在服务清单中配置 cloud.google.com/network-tier 注释来替换此设置。例如:

    ```yaml
    apiVersion: v1
    kind: Service
    metadata:
      name: store-v1-lb-svc
      annotations:
        cloud.google.com/l4-rbs: "enabled"
        cloud.google.com/network-tier: Standard
    spec:
      type: LoadBalancer
      selector:
        app: store
      ports:
      - name: tcp-port
        protocol: TCP
        port: 8080
        targetPort: 8080
    ```

如需详细了解用于 LoadBalancer Service 的参数,请参阅服务参数

静态 IP 地址:当您创建具有静态 IP 地址的 Service 时,静态 IP 地址的网络层级必须与 LoadBalancer 服务的网络层级一致。如果存在不一致的情况,您在运行 kubectl describe service 命令时会看到以下错误消息:

Error syncing load balancer: failed to ensure load balancer: requested ip "standard-service" is neither static nor assigned to the LB

后续步骤