为内部负载均衡创建全局子网

本页面将指导您如何在 Google Distributed Cloud (GDC) 气隙环境中创建全局子网,以及如何将该子网用于内部负载均衡器 (ILB)。

借助全局子网,您可以在 GDC 组织内的多个可用区中配置内部负载均衡操作。通过在多台服务器之间分配网络流量,负载均衡可以提高应用和服务的性能、可靠性和可用性。如需详细了解用于负载均衡的全局子网,请参阅 关于用于负载均衡的子网

本页面适用于应用运营团队中的开发者,他们希望为其组织管理负载均衡。如需了解详情,请参阅 GDC 网闸隔离配置 文档的受众群体

准备工作

如需创建全局子网并将其配置为用于 ILB,您必须具备以下条件:

  • 拥有您要为其配置负载均衡器的项目。如需了解更多 信息,请参阅创建项目
  • 必要的身份和访问权限角色:

    • 请让组织 IAM 管理员向您授予 Load Balancer Admin (load-balancer-admin) 角色。
    • 请让组织 IAM 管理员向您授予 Global Load Balancer Admin (global-load-balancer-admin) 角色。
    • 请让组织 IAM 管理员向您授予 Subnet Organization Admin (subnet-org-admin) 角色。这是组织的平台管理员角色。
    • 请让组织 IAM 管理员向您授予 Subnet Project Admin (subnet-project-admin) 角色。这是项目的应用操作员角色。

    如需了解详情,请参阅预定义角色 说明

创建父级全局子网

您在本部分中创建的父级全局子网充当 IP 地址池,ILB 的 IP 地址将从中获取。您可以使用 spec.parentReference.name 字段指定子网父级。 您可以通过以下两种方式配置此父级子网的 CIDR:

如需详细了解静态 CIDR 配置和动态 CIDR 配置之间的区别,请参阅 静态和动态 CIDR 配置

使用静态 CIDR 配置创建子网

如果您需要精确控制 IP 地址空间,请使用静态 CIDR 配置。 此子网的类型为 Branch。如需详细了解根子网、分支子网 和叶子子网类型,请参阅子网 层次结构

如需创建具有静态 CIDR 配置的全局父级子网,请将您选择的 CIDR 块添加到 spec.ipv4Request.cidr 字段:

kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF
apiVersion: ipam.global.gdc.goog/v1
kind: Subnet
metadata:
  labels:
    ipam.gdc.goog/vpc: default-vpc
  name: ILB_PARENT_SUBNET_NAME
  namespace: platform
spec:
  ipv4Request:
    cidr: STATIC_CIDR
  parentReference:
    name: PARENT_NAME
    namespace: platform
  propagationStrategy: None
  type: Branch
EOF

替换以下内容:

  • GLOBAL_API_SERVER:全局管理 API 服务器的 kubeconfig 路径。如需了解详情,请参阅全局和可用区级 API 服务器。如果您尚未 为 API 服务器生成 kubeconfig 文件,请参阅登录以了解详情。
  • ILB_PARENT_SUBNET_NAME:您为 ILB 选择的全局父级子网的名称。
  • STATIC_CIDR:您要为此父级子网分配的特定 CIDR 块,例如 10.0.10.0/27
  • PARENT_NAME:用于创建此新子网的现有父级子网的名称。

如需将此子网配置为与 ILB 搭配使用,您必须为 ILB创建叶子子网。

使用动态 CIDR 配置创建子网

动态 CIDR 配置会自动从父级子网中分配指定大小的可用 CIDR 块。这简化了 IP 地址管理,尤其是在大型环境中。 此子网的类型为 Branch。如需详细了解根子网、分支子网 和叶子子网类型,请参阅子网 层次结构

如需创建具有动态 CIDR 的全局父级子网,请使用所选的前缀长度配置 spec.ipv4Request.prefixLength 字段:

kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF
apiVersion: ipam.global.gdc.goog/v1
kind: Subnet
metadata:
  labels:
    ipam.gdc.goog/vpc: default-vpc
  name: ILB_PARENT_SUBNET_NAME
  namespace: platform
spec:
  ipv4Request:
    prefixLength: PREFIX_LENGTH
  parentReference:
    name: PARENT_NAME
    namespace: platform
  propagationStrategy: None
  type: Branch

EOF

替换以下内容:

  • ILB_PARENT_SUBNET_NAME:您为 ILB 父级子网选择的名称,例如 lb-global-lancer-ilb-subnet
  • STATIC_CIDR:您要使用的特定 CIDR 块,例如 10.0.10.0/27。此变量仅适用于静态 CIDR 配置。
  • PARENT_NAME:用于创建此新子网的现有父级子网的名称,例如 default-vpc-workload-cidr
  • PREFIX_LENGTH:为动态分配的 CIDR 选择的前缀长度,例如 27。此变量仅适用于动态 CIDR 配置。

如需将此子网配置为与 ILB 搭配使用,您必须为 ILB创建叶子子网。

为 ILB 创建叶子子网

设置全局父级子网后,您必须创建叶子子网,以便为全局 ILB 服务分配单个 IP 地址。此叶子子网必须 具有 type 字段值 Leaf,并且必须与负载均衡器资源(例如 ForwardingRuleBackendServiceBackend)位于同一项目命名空间中。

如需创建叶子子网并将其关联到 ILB,请按以下步骤操作:

  1. 创建 prefixLength 值为 32 的叶子子网,因为此子网旨在分配单个 IP 地址。parentReference 值引用 之前创建的父级全局子网

    kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF
    apiVersion: ipam.global.gdc.goog/v1
    kind: Subnet
    metadata:
      labels:
        ipam.gdc.goog/allocation-preference: default
        ipam.gdc.goog/vpc: default-vpc
      name: ILB_IP_SUBNET_NAME
      namespace: PROJECT_NAMESPACE
    spec:
      ipv4Request:
        prefixLength: 32
      parentReference:
        name: PARENT_REF
        namespace: platform
      type: Leaf
    EOF
    

    替换以下内容:

  2. 将新创建的叶子子网(其中包含分配的 IP 地址)与 ILB 的 ForwardingRuleInternal 资源相关联。 在 ForwardingRuleInternal 资源中,更新 spec.cidrRef.name 字段以引用您在上一步中创建的叶子子网的名称:

    kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF
    apiVersion: networking.global.gdc.goog/v1
    kind: ForwardingRuleInternal
    metadata:
      name: FRI_NAME
      namespace: PROJECT_NAMESPACE
    spec:
      ports:
        - port: PORT
          protocol: PROTOCOL
      backendServiceRef:
        name: BES_NAME
      cidrRef:
        name: LEAF_SUBNET_NAME
    EOF
    

    替换以下内容:

    • FRI_NAME:您为 ForwardingRuleInternal 对象选择的名称,例如 nginx-ilb-static-fr
    • PORT:ILB 监听传入流量的端口号,例如 80
    • PROTOCOL:ILB 使用的网络协议,例如 TCPUDP
    • BES_NAME:与此 ForwardingRuleInternal 资源关联的 BackendService 的名称,例如 nginx-bes
    • LEAF_SUBNET_NAME:您在上一步中创建的叶子子网的名称,例如 lb-project-ilb-ip