設定多區域互連網路

本頁說明新區域加入部署作業時,您必須在多區域部署作業的現有區域中進行哪些必要設定。這項設定可讓您建立與新區域的連線。

1. 事前準備

如要在 Google Distributed Cloud (GDC) 氣隙隔離環境中設定多區域互連,您必須具備下列條件:

  • 產生的 kubeconfig 檔案和環境變數。詳情請參閱 IAM-R0004 執行手冊。
  • 基礎架構操作人員 (IO),具備根管理員叢集的暫時存取權。詳情請參閱 IAM-R0005 執行手冊。

2. 設定多區域互連網路

  1. 在多區域部署的每個區域中設定 MultiZoneNetworkConfig 資源:

    1. 找出要互動的正確叢集。如果根管理員叢集正在執行,請使用根管理員叢集的 kubeconfig。否則,請使用 kubeconfig 啟動 bootstrap kind 叢集。詳情請參閱 IAM-R0004 執行手冊。在此填入 kubeconfig 路徑:

      KUBECONFIG=KUBECONFIG_PATH
      
    2. 建立名為 multizone_network_config.yaml 的 YAML 檔案。

    3. 在檔案中加入以下內容:

      apiVersion: system.private.gdc.goog/v1alpha1
      kind: MultiZoneNetworkConfig
      metadata:
        name: multizone-network-config
        namespace: gpc-system
      spec:
        carrierType: CARRIER_TYPE
        zones:
          - zoneID: ZONE_1_ID
            asn: ZONE_1_ASN
            externalSubnets:
              - METERING_SUBNET_1
          - zoneID: ZONE_2_ID
            asn: ZONE_2_ASN
            externalSubnets:
              - METERING_SUBNET_2
        ports:
          - port: PORT_1
          - port: PORT_2
        portSetting:
          mtu: MTU
      

      更改下列內容:

      • CARRIER_TYPE:多區域骨幹載波類型。必須為 L2L3

      • ZONE_1_ID:GDC 區域中第一個可用區的 ID。

      • ZONE_1_ASN:GDC 區域中第一個可用區的資料網路 BGP 自治系統編號 (ASN)。

      • METERING_SUBNET_1:這個區域的計量付費子網路。這個欄位必須填入相關聯區域根管理員叢集中的 zone-infra-cidr CIDRClaim 資源子網路。這個欄位僅供計量用途,不會影響子網路廣告的控管。您必須確保這個欄位與實際通告的子網路同步。如未指定這個欄位,系統就不會計算這個區域的流量。

      • ZONE_2_ID:GDC 區域中第二個可用區的 ID。

      • ZONE_2_ASN:GDC 區域中第二個區域的資料網路 BGP ASN。

      • METERING_SUBNET_2:這個區域的計量付費子網路。這個欄位必須填入相關聯區域根管理員叢集中的 zone-infra-cidr CIDRClaim 資源子網路。這個欄位僅供計量用途,不會影響子網路廣告的控管。您必須確保這個欄位與實際通告的子網路同步。如未指定這個欄位,系統就不會計算這個區域的流量。

      • PORT_1:參與多區域互連的第一個連接埠。詳情請參閱「設定連接埠」。

      • PORT_2:參與多區域互連的第二個連接埠。詳情請參閱「設定連接埠」。

      • MTU:套用至所有通訊埠的 MTU 值。如未指定,則預設值為 9216。

      如需常見的部署範例,請參閱「多區域設定範例」。

    4. multizone_network_config.yaml 檔案套用至叢集:

      kubectl apply -f multizone_network_config.yaml --kubeconfig=KUBECONFIG_PATH
      
    5. 確認 MultiZonetNetworkConfig 資源建立成功:

      kubectl get multizonenetworkconfig -n gpc-system --kubeconfig=KUBECONFIG_PATH
      

      以下範例顯示含有互連連結的輸出內容:

      NAME                       AGE   READY
      multizone-network-config   26h   True
      
    6. 選用:檢查 MultiZoneNetworkPeeringConfig 資源,瞭解互連 BGP 設定和狀態。

      實際的 BGP 設定是由網路協調器設定,並儲存在 MultiZoneNetworkPeeringConfig 資源中。每個 MultiZoneNetworkPeeringConfig 資源代表從一個區域到另一個區域的所有 BGP 設定。例如:

      • 名為 zone-1-zone-2-peering-configMultiZoneNetworkPeeringConfig 資源可能如下所示:
      apiVersion: system.private.gdc.goog/v1alpha1
      kind: MultiZoneNetworkPeeringConfig
      metadata:
        name: zone-1-zone-2-peering-config
        namespace: gpc-system
      spec: ...
      status:
        borderLeafSwitches:
        - blswID: 1
          blswName: aa-aa-blsw01
          evpnBGPSessions:
          - bgpSessionConfig:
              addressFamily: EVPN
              bfdConfig:
                bfdMode: MultiHopBFD
              localASN: 65501
              localIP: 192.168.201.65/32
              md5SecretRef:
                name: zone-1-blsw-1-zone-2-blsw-1-evpn-bgp-password
                namespace: gpc-system
              peerASN: 65502
              peerIP: 192.168.202.65
              sourceInterface: loopback2
            bgpSessionStatus:
              prefixCounters:
                received: 4
                sent: 23
              sessionStatus: Up
              uptime: P6DT20H26M59S
          ipv4BGPSessions:
          - bgpSessionConfig:
              addressFamily: IPv4
              bfdConfig:
                bfdMode: PlainBFD
              localASN: 65501
              localIP: 192.168.208.0/31
              md5SecretRef:
                name: zone-1-blsw-1-zone-2-blsw-1-ipv4-bgp-password
                namespace: gpc-system
              peerASN: 65502
              peerIP: 192.168.208.1
            bgpSessionStatus:
              prefixCounters:
                received: 11
                sent: 11
              sessionStatus: Up
              uptime: P6DT20H27M1S
            port:
              port: 6
      

      這個範例的狀態包含所有 BGP 工作階段設定,以及從區域一到區域二的 BGP 工作階段狀態。

      • 如果是 L3 運送商模式,名為 MultiZoneNetworkPeeringConfig 的資源 (代表從一個可用區到 L3 運送商的所有 IPv4 BGP 工作階段) 可能如下所示:zone-1-ipv4-peering-config
      apiVersion: system.private.gdc.goog/v1alpha1
      kind: MultiZoneNetworkPeeringConfig
      metadata:
        name: zone-1-ipv4-peering-config
        namespace: gpc-system
      spec: ...
      status:
        borderLeafSwitches:
        - blswID: 1
          blswName: aa-aa-blsw01
          ipv4BGPSessions:
          - bgpSessionConfig:
              addressFamily: IPv4
              bfdConfig:
                bfdMode: PlainBFD
              localASN: 65501
              localIP: 192.168.208.0/31
              md5SecretRef:
                name: zone-1-blsw-1-port-6-ipv4-bgp-password
                namespace: gpc-system
              peerASN: 65502
              peerIP: 192.168.208.1
            bgpSessionStatus:
              prefixCounters:
                received: 11
                sent: 11
              sessionStatus: Up
              uptime: P6DT20H27M1S
            port:
              port: 6
      

2.1. 設定通訊埠

ports 設定取決於電信業者類型。設定 ports 時,請遵守下列規則:

  • 如果載體類型為 L2,則必須在 Spec.Ports 中指定 n 個連接埠,其中 n 等於可用區數量乘以 2。第一個連接埠必須連線至第一個鄰近區域的第一個邊界 Leaf 交換器 (依交換器名稱排序)。第二個連接埠必須連線至第一個鄰近區域的第二個邊界葉片交換器。第三個連接埠會連線至第二個鄰近區域的第一個邊界葉片交換器。後續連線也遵循這個模式。如需說明,請參閱 L2 載波部署作業

  • 如果載波類型為 L3,則必須在 Spec.Ports 中指定兩個連接埠。目前區域中的兩個邊界葉片交換器都必須使用第一個連接埠,個別連線至第一個供應商邊緣裝置,並使用第二個連接埠,個別連線至第二個供應商邊緣裝置。詳情請參閱 L3 運送業者部署作業

2.2. 多區域設定範例

本節包含常見的部署範例。

2.2.1. L2 電信業者部署

這個部署作業具有下列設定:

  • 三個區域,ASN 分別為 65501、65502 和 65503
  • L2 載波
  • 這個部署作業的邏輯連線如下圖所示:

    multizone-pnet-l2-carrier-topology

以下是 MultiZoneNetworkConfig YAML 檔案的範例:

apiVersion: system.private.gdc.goog/v1alpha1
kind: MultiZoneNetworkConfig
metadata:
  name: multizone-network-config
  namespace: gpc-system
spec:
  carrierType: L2
  zones:
    - zoneID: 1
      asn: 65501
    - zoneID: 2
      asn: 65502
    - zoneID: 3
      asn: 65503
  ports:
    - port: 10
    - port: 11
    - port: 12
    - port: 13

2.2.2. L3 電信業者部署

這個部署作業具有下列設定:

  • 三個區域,ASN 分別為 65501、65502 和 65503
  • L3 載波
  • 這個部署作業的邏輯連線如下圖所示:

    multizone-pnet-l3-carrier-topology

以下是 MultiZoneNetworkConfig YAML 檔案的範例:

  apiVersion: system.private.gdc.goog/v1alpha1
  kind: MultiZoneNetworkConfig
  metadata:
    name: multizone-network-config
    namespace: gpc-system
  spec:
    carrierType: L3
    zones:
      - zoneID: 1
        asn: 65501
        carrierASN: 60010
      - zoneID: 2
        asn: 65502
        carrierASN: 60010
      - zoneID: 3
        asn: 65503
        carrierASN: 60010
    ports:
      - port: 10
      - port: 11

2.3. 選用:設定多區域 BFD 驗證

所有多區域 IPv4 和 EVPN 工作階段都會設定雙向轉送偵測 (BFD)。根據預設,系統會設定單一躍點純 BFD。請按照本節的操作說明,部署具驗證功能的多跳 BFD:

  1. 為多區域 EVPN BGP 工作階段啟用雙向轉送偵測 (BFD) 驗證。如要建立及啟用 BFD 工作階段,請確保兩個區域中的配對 BGP 工作階段都設定了相同的 BFD 驗證金鑰 ID 和金鑰字串:

    1. 定義金鑰類型。建議您在啟動程序機器上執行這項指令。為確保安全,請使用至少 SHA-1 的金鑰。視需要使用更安全的設定金鑰:

      export KEY_TYPE=SHA1
      
    2. 設定金鑰 ID 和金鑰字串。在各個區域的配對互連網路連線中,金鑰 ID 不得重複。找出未使用的金鑰 ID,並指派給變數:

      export KEY_ID=1
      
    3. 使用 chronyc keygen 產生 SHA-1 驗證金鑰:

      CHRONY_OUTPUT=$(chronyc keygen ${KEY_ID:?} ${KEY_TYPE:?})
      

      輸出內容範例:

      echo $CHRONY_OUTPUT
      1 SHA1 HEX:887F1B88085BD0BDE4458EA7C2C4393C50A498EF
      
    4. 擷取並驗證驗證金鑰:

      export KEY_STR=$(echo ${CHRONY_OUTPUT:?} | awk '{ split($3,key,":"); print key[2]}')
      
      echo $KEY_STR
      887F1B88085BD0BDE4458EA7C2C4393C50A498EF
      
    5. 將 BFD 驗證資訊修補至所選互連網路工作階段:

      kubectl --kubeconfig=KUBECONFIG_PATH patch secret zone-LOCAL_ZONE_ID-blsw-LOCAL_BLSW_ID-zone-REMOTE_ZONE_ID-blsw-REMOTE_BLSWID-bfd-auth-key -n gpc-system -p='{
        "stringData": {
          "bfdKeyID": "'"${KEY_ID}"'",
          "bfdKeyValue": "'"${KEY_STR}"'"
        }
      }'
      
    6. 確認 BFD 工作階段正在執行:

      switch# show bfd neighbors vrf default
      
    7. 確認 State 欄位顯示的值為 Up,且 Type 欄位為 SHMH

      OurAddr         NeighAddr       LD/RD                 RH/RS           Holdown(mult)     State       Int                   Vrf                              Type     BSID
      192.168.208.31  192.168.208.30  1090519041/1090519042 Up              5237(3)           Up          Eth1/11               default                          SH       N/A
      192.168.208.91  192.168.208.90  1090519042/1090519042 Up              5624(3)           Up          Eth1/12               default                          SH       N/A
      192.168.202.66  192.168.201.65  1090519071/1090519060 Up              629(3)            Up          Lo2                   default                          MH       N/A
      192.168.202.66  192.168.201.66  1090519072/1090519061 Up              545(3)            Up          Lo2                   default                          MH       N/A
      

2.4. 選用:設定多區域 BGP 密碼

邊界閘道通訊協定 (BGP) 密碼有兩種:IPv4 BGP 工作階段密碼和 EVPN BGP 工作階段密碼。

根據預設,所有 BGP 密碼都是空白。請按照本節的指示更新密碼。

2.4.1. 更新 IPv4 BGP 密碼

如果使用 L2 載波,請更新套用至目前區域中一個邊界葉片交換器,以及另一個區域中另一個邊界葉片交換器之間 IPv4 BGP 工作階段的 IPv4 BGP 密碼:

kubectl patch secret zone-LOCAL_ZONE_ID-blsw-LOCAL_BLSW_ID-zone-REMOTE_ZONE_ID-blsw-REMOTE_BLSWID-ipv4-bgp-password -p='{"stringData":{"password":"PASSWORD"}}'

更改下列內容:

  • LOCAL_ZONE_ID:目前區域的數值 ID。
  • LOCAL_BLSW_ID:目前區域的邊界葉片交換器數值 ID。這個值必須為 12
  • REMOTE_ZONE_ID:遠端區域的數值 ID。
  • REMOTE_BLSW_ID:遠端區域邊界葉片交換器的數值 ID。這個值必須為 12
  • PASSWORD:套用至本機邊界 Leaf 交換器與遠端邊界 Leaf 交換器之間 IPv4 BGP 工作階段的 BGP 密碼。

如果使用第 3 層電信業者,請更新目前區域中一個邊界葉片交換器與第 3 層電信業者邊緣裝置之間的 IPv4 BGP 工作階段所套用的 IPv4 BGP 密碼:

kubectl patch secret zone-LOCAL_ZONE_ID-blsw-LOCAL_BLSW_ID-port-PORT_ID-ipv4-bgp-password -p='{"stringData":{"password":"PASSWORD"}}' -n gpc-system --kubeconfig=KUBECONFIG_PATH

更改下列內容:

  • LOCAL_ZONE_ID:目前區域的數值 ID。
  • LOCAL_BLSW_ID:目前區域的邊界葉片交換器數值 ID。這個值必須為 12
  • PORT_ID:連接至供應商邊緣裝置的乙太網路連接埠索引。
  • PASSWORD:套用至本機邊界 Leaf 交換器與供應商邊緣裝置之間 IPv4 BGP 工作階段的 BGP 密碼。

2.4.2. 更新 EVPN BGP 密碼

如要更新套用至目前區域中一個邊界 Leaf 交換器與另一個區域中另一個邊界 Leaf 交換器之間 EVPN BGP 工作階段的 EVPN BGP 密碼,請執行下列指令:

kubectl patch secret zone-LOCAL_ZONE_ID-blsw-LOCAL_BLSW_ID-zone-REMOTE_ZONE_ID-blsw-REMOTE_BLSWID-evpn-bgp-password -p='{"stringData":{"password":"PASSWORD"}}' -n gpc-system --kubeconfig=KUBECONFIG_PATH

更改下列內容:

  • LOCAL_ZONE_ID:目前區域的數值 ID。
  • LOCAL_BLSW_ID:目前區域的邊界葉片交換器數值 ID。這個值必須為 12
  • REMOTE_ZONE_ID:遠端區域的數值 ID。
  • REMOTE_BLSW_ID:遠端區域邊界葉片交換器的數值 ID。這個值必須為 12
  • PASSWORD:套用至本機邊界 Leaf 交換器和遠端邊界 Leaf 交換器之間 EVPN BGP 工作階段的 BGP 密碼。

3. 進階設定選項

本節將介紹多區域網路 API 提供的進階設定選項。

3.1. 設定電信業者 BGP 設定覆寫

根據預設,邊界葉片交換器會使用預設 IP 位址分配,與電信業者 PE 裝置建立 BGP 對等互連連線。如要查看目前使用的特定 BGP 對等互連 IP 位址,請檢查 MultiZoneNetworkPeeringConfig 資源 zone-<ZONE_ID>-ipv4-peering-config。例如:

   apiVersion: system.private.gdc.goog/v1alpha1
   kind: MultiZoneNetworkPeeringConfig
   metadata:
     name: zone-1-ipv4-peering-config
     namespace: gpc-system
   spec: ...
   status:
     borderLeafSwitches:
     - blswID: 1
       blswName: aa-aa-blsw01
       ipv4BGPSessions:
       - bgpSessionConfig:
           addressFamily: IPv4
           bfdConfig:
             bfdMode: PlainBFD
           localASN: 65501
           localIP: 192.168.208.0/31
           md5SecretRef:
             name: zone-1-blsw-1-port-6-ipv4-bgp-password
             namespace: gpc-system
           peerASN: 65502
           peerIP: 192.168.208.1
   ...

如要使用自訂 IP 位址計畫,請按照下列步驟覆寫預設的電信業者 BGP 設定:

  1. 執行 kubectl edit MultiZoneNetworkPeeringConfig zone-<ZONE_ID>-ipv4-peering-config -n gpc-system,在 spec.Peerings 下方新增 carrierBGPConfigOverride 區段。範例:
apiVersion: system.private.gdc.goog/v1alpha1
kind: MultiZoneNetworkPeeringConfig
metadata:
  name: zone-1-ipv4-peering-config
  namespace: gpc-system
  ...
spec:
  peeringConfigType: L3-IPv4
  peerings:
  - carrierBGPConfigOverride:
      peeringIP:
        localIP: 192.168.78.5/31
        peerIP: 192.168.78.4
    peerA:
      blswID: 1
      port:
        port: 11
      zoneID: 1
    ...

在本例中,指定 carrierBGPConfigOverride.peeringIP 會將對等互連子網路覆寫為 192.168.78.4/31。

3.2. 設定通訊埠覆寫

Google 建議所有區域中的所有邊界葉片交換器都使用同一組連接埠。如果需要精細控管通訊埠,這項設定就非常實用。

本機區域是您要部署的區域。

遠端區域是同一個多區域世界中的其他區域。

根據預設,您必須使用同一區域的兩個邊界葉片交換器,才能連線至其他區域或電信業者。不過,您可以啟用通訊埠覆寫選項,為區域間的連線指定其他通訊埠。

如要設定通訊埠覆寫功能,請按照下列步驟操作:

  1. 啟用 portOverride 功能:

    kubectl patch MultiZoneNetworkConfig multizone-network-config -n gpc-system --type='merge' -p '{"spec":{"enablePortOverride":true}}' --kubeconfig=KUBECONFIG_PATH
    
  2. 找出本機區域邊界 Leaf 交換器和遠端區域邊界 Leaf 交換器,然後修改本機邊界 Leaf 交換器通訊埠:

    kubectl edit MultiZoneNetworkPeeringConfig zone-ZONE_1_ID-zone-ZONE_2_ID -n gpc-system --kubeconfig=KUBECONFIG_PATH
    

    更改下列內容:

    • ZONE_1_ID:本地可用區 ID 和遠端可用區 ID 中較小的可用區 ID。舉例來說,如果本機區域 ID 為 1,遠端區域 ID 為 2,請在此提供 1 值。
    • ZONE_2_ID:當地時區 ID 和遠端時區 ID 中較大的時區 ID。

    MultiZoneNetworkPeeringConfig 資源可能如下所示:

    apiVersion: system.private.gdc.goog/v1alpha1
    kind: MultiZoneNetworkPeeringConfig
    metadata:
      name: zone-2-zone-3-peering-config
      namespace: gpc-system
    spec:
      peeringConfigType: L2
      peerings:
      - peerA:
          blswID: 1
          port:
            port: 12
          zoneID: 2
        peerB:
          blswID: 1
          port:
            port: 12
          zoneID: 3
        secrets:
        - secretRef:
            name: zone-2-blsw-1-zone-3-blsw-1-ipv4-bgp-password
            namespace: gpc-system
          type: ipv4-bgp-password
        - secretRef:
            name: zone-2-blsw-1-zone-3-blsw-1-evpn-bgp-password
            namespace: gpc-system
          type: evpn-bgp-password
        - secretRef:
            name: zone-2-blsw-1-zone-3-blsw-1-bfd-auth-key
            namespace: gpc-system
          type: bfd-auth-key
      - peerA:
          blswID: 1
          port:
            port: 12
          zoneID: 2
        peerB:
          blswID: 2
          port:
            port: 12
          zoneID: 3
        secrets:
        - secretRef:
            name: zone-2-blsw-2-zone-3-blsw-2-ipv4-bgp-password
            namespace: gpc-system
          type: ipv4-bgp-password
        - secretRef:
            name: zone-2-blsw-2-zone-3-blsw-2-evpn-bgp-password
            namespace: gpc-system
          type: evpn-bgp-password
        - secretRef:
            name: zone-2-blsw-2-zone-3-blsw-2-bfd-auth-key
            namespace: gpc-system
          type: bfd-auth-key
    

    您必須更新構成區域間對等互連的其中一個邊界 Leaf 交換器的通訊埠值。在 Spec.peerings 欄位中,尋找跨區域的對等互連。在這個範例中,區域 2 和區域 3 之間有這個對等互連連線:

    peerA:
      blswID: 1
      port:
        port: 12
      zoneID: 2
    peerB:
      blswID: 2
      port:
        port: 12
      zoneID: 3
    

    輸出內容會顯示兩個邊界 Leaf 交換器,分別以 blswID: 1blswID: 2 識別。針對 blswID: 1 識別的第一個邊界葉片交換器,將通訊埠更新為 20 的新值:

    peerA:
      blswID: 1
      port:
        port: 20
      zoneID: 2
    peerB:
      blswID: 2
      port:
        port: 12
      zoneID: 3
    

    在這個範例中,我們將第一個邊界葉子交換器的通訊埠值更新為 port: 20