在 Google Distributed Cloud (GDC) 气隙环境中,您可以创建跨多个地区的 v1 或 v2 组织。不过,在创建组织之前,有以下两种组织创建情形需要进行额外的 CIDR 配置:
以下部分介绍了这些情形以及在创建组织之前必须完成的前提条件。
在新可用区中为 v1 组织配置 CIDR 设置
您无法在新的可用区中预配 v1 组织,因为 v1 组织所需的许多 CIDR 声明已分配给根组织。
您还必须为 v1 组织使用现有的自定义 IP 地址功能。
方案 CIDR 设置
收集您在区域中配置的现有 CIDR 设置,以便在新版组织中避免 CIDR 重叠。
打印现有的
zone-infra-cidrCIDRClaim资源:kubectl --kubeconfig=ROOT_ADMIN_KUBECONFIG get cidrclaim \ -n gpc-system zone-infra-cidr检查输出中
CIDRClaim资源的status.ipv4AllocationStatus.cidrBlocks和status.ipv6AllocationStatus.cidrBlocks字段。例如,以下
CIDRClaim资源已预留192.0.2.0/21、198.51.100.0/26、203.0.113.0/23和2001:db8::/66CIDR 块:apiVersion: system.private.gdc.goog/v1alpha1 kind: CIDRClaim metadata: name: zone-infra-cidr namespace: gpc-system spec: ipv4Spec: staticCidrBlocks: - 192.0.2.0/21 - 198.51.100.0/26 - 203.0.113.0/23 ipv6Spec: staticCidrBlocks: - 2001:db8::/66 status: ipv4AllocationStatus: cidrBlocks: - 192.0.2.0/21 - 198.51.100.0/26 - 203.0.113.0/23 ipv6AllocationStatus: cidrBlocks: - 2001:db8::/66请记下这些 CIDR 块,以便在为组织创建自定义外部 CIDR 和自定义内部 CIDR 时避免使用它们。
检查每个可用区的
zone-infra-cidr,并记下未使用的现有 CIDR 块,以便在为组织创建自定义 CIDR 时避免使用这些 CIDR 块。如需切换地区级上下文,请使用 gdcloud CLI。输出所有带有
network-root-range标签的现有子网:kubectl --kubeconfig=GLOBAL_ROOT_ADMIN_KUBECONFIG get subnet \ -l ipam.gdc.goog/usage=network-root-range -A检查每个
Subnet资源的status.ipv4Allocation.cidr和status.ipv6Allocation.cidr字段。例如,以下
infra-vpc-root-cidr已预留192.0.2.0/15CIDR:apiVersion: ipam.global.gdc.goog/v1 kind: Subnet metadata: labels: ipam.gdc.goog/usage: network-root-range ipam.gdc.goog/vpc: infra-vpc name: infra-vpc-root-cidr namespace: org-1 spec: ipv4Request: cidr: 192.0.2.0/15 propagationStrategy: None type: Root status: ipv4Allocation: cidr: 192.0.2.0/15请记下这些 CIDR,以便在为组织创建自定义外部 CIDR 和自定义内部 CIDR 时避免使用它们。
配置自定义 IP 地址
在 v1 组织引导启动过程中,需要将自定义外部 CIDR 和自定义内部 CIDR 作为全局 OrganizationZonalConfig 自定义资源的输入,以支持全局 v1 组织引导启动。
在 OrganizationZonalConfig 资源规范中,您必须添加外部 CIDR 和内部 CIDR 的自定义 IP 地址配置。对于区域组织,自定义外部 CIDR 和自定义内部 CIDR 分别实例化为 org-namespace/org-custom-external-cidr 和 org-namespace/org-custom-internal-cidr CIDR 声明。相应组织的所有其他 CIDR 声明和子网声明都是以下两个 CIDR 声明的子项:
...
spec:
capacities:
customIPConfig:
externalCIDRs:
- CUSTOM_EXTERNAL_CIDR
internalCIDRs:
- CUSTOM_INTERNAL_CIDR
...
自定义外部 CIDR 和自定义内部 CIDR 必须满足以下条件:
- 在每个地区的
OrganizationZonalConfig资源中都是唯一的。 - 在所有可用区中,对于每个现有的 v1 组织,该值在
OrganizationZonalConfig资源中都是唯一的。 - 不得与每个可用区的
zone-infra-cidr重叠。 - 不得与任何带有
ipam.gdc.goog/usage=network-root-range标签的全局子网重叠。
满足这些要求后,您可以继续执行默认组织引导步骤,以在新的可用区中引导 v1 组织。
为现有可用区中的 v2 组织配置 CIDR 设置
如需在现有区域中预配 v2 组织,您必须手动创建 CIDRClaim 资源 gpc-system/zone-infra-cidr。您还必须确保新 CIDR 声明中的 CIDR 块不与以下项重叠:
相应可用区中的
gpc-system/instance-CIDR 声明。宇宙中其他可用区内的任何
gpc-system/zone-infra-cidr或gpc-system/instance-CIDR 声明。
方案 CIDR 设置
打印现有
CIDRClaim资源:kubectl --kubeconfig=ROOT_ADMIN_KUBECONFIG get cidrclaim -n gpc-system检查输出中每个
CIDRClaim资源的status.ipv4AllocationStatus.cidrBlocks和status.ipv6AllocationStatus.cidrBlocks字段。例如,以下
CIDRClaim资源已预留192.0.2.0/21、198.51.100.0/26、203.0.113.0/23和2001:db8::/66CIDR 块:apiVersion: system.private.gdc.goog/v1alpha1 kind: CIDRClaim metadata: name: instance-external-cidr namespace: gpc-system spec: ipv4Spec: staticCidrBlocks: - 192.0.2.0/21 - 198.51.100.0/26 - 203.0.113.0/23 ipv6Spec: staticCidrBlocks: - 2001:db8::/66 status: ipv4AllocationStatus: cidrBlocks: - 192.0.2.0/21 - 198.51.100.0/26 - 203.0.113.0/23 ipv6AllocationStatus: cidrBlocks: - 2001:db8::/66请记下这些 CIDR 块,以便在为 v2 组织创建
zone-infra-cidr时避免使用它们。
创建 zone-infra-cidr CIDR 声明
在您的 Universe 的每个地区中,找到并记下具有命名空间
gpc-system的以下 CIDR 声明:instance-external-cidrinstance-internal-pod-network-cidrinstance-internal-cluster-ip-cidrinstance-internal-physical-network-cidrinstance-internal-cidrzone-infra-cidr
例如,以下命令会返回当前可用区的
instance-external-cidrCIDR 声明:kubectl --kubeconfig=ROOT_ADMIN_KUBECONFIG get cidrclaim -n gpc-system instance-external-cidr如需切换地区级上下文,请使用 gdcloud CLI。
创建名为
zone-infra-cidr且不与之前检查过的 CIDR 声明重叠的CIDRClaim资源:kubectl --kubeconfig=ROOT_ADMIN_KUBECONFIG apply -f - <<EOF apiVersion: system.private.gdc.goog/v1alpha1 kind: CIDRClaim metadata: name: zone-infra-cidr namespace: gpc-system spec: ipv4Spec: staticCidrBlocks: - IPV4_CIDR ipv6Spec: staticCidrBlocks: - IPV6_CIDR EOFIPv4 和 IPv6 CIDR 必须是唯一的,并且不得与当前可用区或任何其他现有可用区中
gpc-system命名空间中的任何现有instance-CIDR 声明重叠。检查
zone-infra-cidr的状态,确保其已准备就绪:kubectl --kubeconfig=ROOT_ADMIN_KUBECONFIG \ get cidrclaim -n gpc-system zone-infra-cidrCIDR 声明为
Ready后,您可以继续执行默认组织引导加载程序步骤,以在新区域中引导 v2 组织。