為新的區域性機構預先設定 CIDR

在 Google Distributed Cloud (GDC) 氣隙宇宙中,您可以建立跨多個區域的第 1 版或第 2 版機構。不過,在建立機構前,有兩種機構建立情境需要額外的 CIDR 設定:

以下各節將說明這些情境,以及建立機構前必須完成的先決條件。

在新區域中為第 1 版機構設定 CIDR

根據預設,您無法在新區域中佈建 v1 機構,因為 v1 機構需要的許多 CIDR 聲明已指派給根機構。

您也必須使用 v1 機構的現有自訂 IP 位址功能。

方案 CIDR 設定

收集區域中設定的現有 CIDR 設定,避免新版機構中的 CIDR 重疊。

  1. 列印現有 zone-infra-cidr CIDRClaim 資源:

    kubectl --kubeconfig=ROOT_ADMIN_KUBECONFIG get cidrclaim \
        -n gpc-system zone-infra-cidr
    
  2. 檢查輸出內容中 CIDRClaim 資源的 status.ipv4AllocationStatus.cidrBlocksstatus.ipv6AllocationStatus.cidrBlocks 欄位。

    舉例來說,下列 CIDRClaim 資源已保留 192.0.2.0/21198.51.100.0/26203.0.113.0/232001:db8::/66 CIDR 區塊:

    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 時使用。

  3. 檢查每個區域的 zone-infra-cidr,並記下未使用的現有 CIDR 區塊,以免在為機構建立自訂 CIDR 時使用這些區塊。如要切換區域環境,請使用 gdcloud CLI。

  4. 列印所有現有子網路,並加上 network-root-range 標籤:

    kubectl --kubeconfig=GLOBAL_ROOT_ADMIN_KUBECONFIG get subnet \
        -l ipam.gdc.goog/usage=network-root-range -A
    
  5. 檢查每個 Subnet 資源的 status.ipv4Allocation.cidrstatus.ipv6Allocation.cidr 欄位。

    舉例來說,下列 infra-vpc-root-cidr 已保留 192.0.2.0/15 CIDR:

    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 位址

在第 1 版機構啟動程序中,您必須輸入自訂外部和自訂內部 CIDR,才能支援全域第 1 版機構啟動程序。OrganizationZonalConfig

OrganizationZonalConfig 資源規格中,您必須為外部 CIDR 和內部 CIDR 新增自訂 IP 位址設定。自訂外部和自訂內部 CIDR 會分別例項化為區域機構的 org-namespace/org-custom-external-cidrorg-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 機構。

在現有區域中為第 2 版機構設定 CIDR

如要在現有區域中佈建第 2 版機構,您必須手動建立 CIDRClaim 資源 gpc-system/zone-infra-cidr。此外,您也必須確保新 CIDR 聲明中的 CIDR 區塊不會與下列項目重疊:

  • 該區域的 gpc-system/instance- CIDR 宣告。

  • 宇宙其他區域中的任何 gpc-system/zone-infra-cidrgpc-system/instance- CIDR 宣告。

方案 CIDR 設定

  1. 列印現有 CIDRClaim 資源:

    kubectl --kubeconfig=ROOT_ADMIN_KUBECONFIG get cidrclaim -n gpc-system
    
  2. 檢查輸出內容中每個 CIDRClaim 資源的 status.ipv4AllocationStatus.cidrBlocksstatus.ipv6AllocationStatus.cidrBlocks 欄位。

    舉例來說,下列 CIDRClaim 資源已保留 192.0.2.0/21198.51.100.0/26203.0.113.0/232001:db8::/66 CIDR 區塊:

    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 聲明

  1. 找出並記下宇宙中每個區域的命名空間 gpc-system 的下列 CIDR 宣告:

    • instance-external-cidr
    • instance-internal-pod-network-cidr
    • instance-internal-cluster-ip-cidr
    • instance-internal-physical-network-cidr
    • instance-internal-cidr
    • zone-infra-cidr

    舉例來說,下列指令會傳回目前區域的 instance-external-cidr CIDR 宣告:

    kubectl --kubeconfig=ROOT_ADMIN_KUBECONFIG get cidrclaim -n gpc-system instance-external-cidr
    

    如要切換區域內容,請使用 gdcloud CLI。

  2. 建立名為 zone-infra-cidrCIDRClaim 資源,該資源不得與先前檢查的 CIDR 聲明重疊:

    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
    EOF
    

    IPv4 和 IPv6 CIDR 不得重複,也不能與目前區域或任何其他現有區域中 gpc-system 命名空間的任何現有 instance- CIDR 宣告重疊。

  3. 檢查 zone-infra-cidr 的狀態,確認是否已準備就緒:

    kubectl --kubeconfig=ROOT_ADMIN_KUBECONFIG \
        get cidrclaim -n gpc-system zone-infra-cidr
    

    CIDR 聲明完成後,您可以繼續執行預設機構的啟動程序,在新區域中啟動 v2 機構。Ready