本页面介绍如何使用网络服务层级来控制外部流量到达 Google Kubernetes Engine (GKE) 集群中的服务的方式。借助 Network Service Tiers,您可以优化网络流量,以提升性能(高级层级)或节省费用(标准层级)。
高级层级通过 Google 的优质骨干网传输流量,以实现出色的速度和可靠性。相比之下,标准层级使用常规互联网服务提供商 (ISP) 网络,可提供更经济实惠的解决方案。
本页面适用于为组织设计和架构网络的云架构师和网络专家。如需详细了解我们在 Google Cloud 内容中提及的常见角色和示例任务,请参阅常见的 GKE 用户角色和任务。
网络服务层级在 GKE 中的运作方式
本部分介绍如何在 GKE 中管理网络服务方案。
在项目级设置网络层级:您可以为 Google Cloud 项目设置默认网络层级,以使用标准层级或高级层级。所有新集群都是使用
network-default
设置创建的,该设置会继承项目级层设置。此设置在集群升级后仍会保留。在集群内创建的节点池会继承项目级配置中的网络层级。在创建新集群时设置网络方案:无论 Google Cloud 项目的方案设置如何,您都可以在创建新集群时配置网络方案。新节点池使用集群级网络层,即使在您升级节点池后,此配置也会保留。
在更新集群时设置网络方案:您可以在更新现有集群时配置网络方案。新的节点池和新的 LoadBalancer 服务会沿用更新后的层级配置,而现有节点池和服务会继续使用原始网络层级配置。升级集群后,更新后的层配置会保持不变。
更新 LoadBalancer 服务时设置网络层级:LoadBalancer 服务会继承集群的网络层级。不过,您可以替换此设置,并在服务清单中更新网络层级。
网络服务层级和负载均衡
默认情况下,外部直通式网络负载平衡器使用优质层级。您可以更新此配置,使 LoadBalancer 服务改用标准层级。
如果您将应用负载平衡器与网关搭配使用,则无法配置网络服务层级。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
以获取最新版本。
限制
需要遵循以下限制:
- 您只能在项目级或集群级配置网络层级设置。您无法直接配置节点池的网络层级。
- 标准层级不支持全球级外部双栈 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 地址。为避免服务中断,请在将集群迁移到新的网络层级时按以下步骤操作:
更新集群:如需使用网络层更新现有集群,请运行以下命令:
gcloud container clusters update CLUSTER_NAME \ --network-tier=NETWORK_TIER \ ...
替换以下值:
CLUSTER_NAME
:您的集群的名称。NETWORK_TIER
:网络层级设置。使用network-default
可设置与 Google Cloud 项目相同的层级,使用Standard
可设置标准层级,使用Premium
可设置高级层级。
创建新的节点池和服务:为了让外部客户端使用与新网络层级相关联的新 IP 地址,您必须创建新的节点池和新的 LoadBalancer 服务。新的节点池和新的 LoadBalancer 服务会沿用更新后的层级配置,而现有节点池和服务会继续使用原始网络层级配置。
更新 DNS 记录:更改 DNS 记录,使其指向新的 LoadBalancer 服务的 IP 地址。
等待 DNS 传播:等待 DNS 存留时间 (TTL) 过期,以确保客户端被定向到新服务,并避免提供过时的记录。
使用网络服务层级更新外部负载平衡器
对于外部直通式网络负载平衡器,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
后续步骤
- 阅读 Network Service Tiers 概览。
- 了解如何创建基于后端服务的外部负载平衡器。