本页面将引导您完成以下操作:在 Google Distributed Cloud (GDC) 气隙环境中创建全局子网,并将该子网用于外部负载均衡器 (ELB)。
借助全局子网,您可以配置可在 GDC 组织中的多个可用区使用外部负载均衡操作的子网。负载均衡通过在多个服务器之间分配网络流量,可提高应用和服务的性能、可靠性和可用性。如需详细了解用于负载均衡的全局子网,请参阅关于用于负载均衡的子网。
本页面适用于应用运维人员群组中的开发者,他们希望为其组织管理负载均衡。如需了解详情,请参阅 GDC 气隙环境文档的受众群体。
准备工作
如需创建全局子网并将其配置为用于 ELB,您必须具备以下条件:
- 拥有您要配置负载均衡器的项目。如需了解详情,请参阅创建项目。
必要的身份和访问权限角色:
- 请让您的组织 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
) 角色。
如需了解详情,请参阅预定义角色说明。
- 请让您的组织 IAM 管理员向您授予 Load Balancer Admin (
创建父级全球子网
您在本部分中创建的父级全局子网将作为 IP 地址池,从中获取 ELB IP 地址。子网必须包含 ipam.gdc.goog/network-segment: data
标签。您可以使用 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/network-segment: data
name: ELB_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 文件,请参阅登录了解详情。ELB_PARENT_SUBNET_NAME
:为 ELB 的全局父子网选择的名称。STATIC_CIDR
:您要为此父子网分配的特定 CIDR 地址块,例如10.0.10.0/27
。PARENT_NAME
:现有父子网的名称,新子网将基于该父子网创建。
如需将此子网配置为与 ELB 搭配使用,您必须为 ELB 创建叶子子网。
使用动态 CIDR 配置创建子网
动态 CIDR 配置会自动从父子网中分配指定大小的可用 CIDR 块。这简化了 IP 地址管理,尤其是在大型环境中。
此子网的类型为 Branch
。如需详细了解根子网、分支子网和叶子网子网类型,请参阅子网层次结构。
如需创建具有动态 CIDR 的全局父子网,请使用所选的前缀长度配置 spec.ipv4Request.prefixLength
字段:
kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF
piVersion: ipam.global.gdc.goog/v1
kind: Subnet
metadata:
labels:
ipam.gdc.goog/network-segment: data
name: ELB_PARENT_SUBNET_NAME
namespace: platform
spec:
ipv4Request:
prefixLength: PREFIX_LENGTH
parentReference:
name: PARENT_NAME
namespace: platform
propagationStrategy: None
type: Branch
EOF
替换以下内容:
ELB_PARENT_SUBNET_NAME
:您为 ELB 父子网选择的名称,例如lb-global-lancer-elb-subnet
。STATIC_CIDR
:您要使用的特定 CIDR 地址块,例如10.0.10.0/27
。此变量仅适用于静态 CIDR 配置。PARENT_NAME
:用于创建此新子网的现有父子网的名称,例如default-vpc-workload-cidr
。PREFIX_LENGTH
:动态分配的 CIDR 的所选前缀长度,例如27
。此变量仅适用于动态 CIDR 配置。
如需将此子网配置为与 ELB 搭配使用,您必须为 ELB 创建叶子子网。
为 ELB 创建叶子子网
设置全局父子网后,您必须创建一个叶子子网,以便为全局 ELB 服务分配单个 IP 地址。此叶子子网的 type
字段值必须为 Leaf
,并且必须与负载均衡器资源(例如 ForwardingRule
、BackendService
和 Backend
)位于同一项目命名空间中。
如需创建叶子子网并将其关联到 ELB,请按以下步骤操作:
创建一个
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/network-segment: data name: ELB_IP_SUBNET_NAME namespace: PROJECT_NAMESPACE spec: ipv4Request: prefixLength: 32 parentReference: name: PARENT_REF namespace: platform type: Leaf EOF
替换以下内容:
ELB_IP_SUBNET_NAME
:您为叶子子网选择的名称,例如lb-project-elb-ip
。PROJECT_NAMESPACE
:与您的项目对应的 Kubernetes 命名空间,其中包含您的 ELB 对象,例如lb-project
。PARENT_REF
:此叶子子网从中获取 IP 地址的父子网的名称,例如您之前创建的父级全局子网。
将新创建的叶子子网(包含分配的 IP 地址)与 ELB 的
ForwardingRuleExternal
资源相关联。在ForwardingRuleExternal
资源中,更新spec.cidrRef.name
字段以引用您在上一步中创建的叶子子网的名称:kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF apiVersion: networking.global.gdc.goog/v1 kind: ForwardingRuleExternal 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
:您为ForwardingRuleExternal
对象选择的名称,例如nginx-elb-static-fr
。PORT
:ELB 监听传入流量的端口号,例如80
。PROTOCOL
:ELB 使用的网络协议,例如TCP
或UDP
。BES_NAME
:与此ForwardingRuleExternal
资源关联的BackendService
的名称,例如nginx-bes
。LEAF_SUBNET_NAME
:您在上一步中创建的叶子子网的名称,例如lb-project-elb-ip
。