Distributed Cloud 網路功能

本頁說明 Google Distributed Cloud 的網路功能,包括子網路、BGP 對等互連工作階段和負載平衡。

啟用 Distributed Cloud Edge Network API

如要設定 Distributed Cloud 網路,請先啟用 Distributed Cloud Edge Network API。如要這樣做,請完成本節中的步驟。

控制台

  1. 前往 Google Cloud 控制台的「Distributed Cloud Edge Network API」頁面。

    啟用 API

  2. 按一下「啟用」

gcloud

使用下列指令:

gcloud services enable edgenetwork.googleapis.com

設定 Distributed Cloud 網路

本節說明如何設定 Distributed Cloud 網路元件。

Distributed Cloud 的一般網路設定包含下列步驟:

  1. 選用:視需要初始化目標區域的網路設定。

  2. 建立網路。

  3. 在網路中建立一或多個子網路。

  4. 使用對應的互連網路連結,與 PE 路由器建立北向 BGP 對等互連工作階段。

  5. 使用對應的子網路,與執行工作負載的 Pod 建立南向 BGP 對等互連工作階段。

  6. 選用:建立迴路 BGP 對等互連工作階段,確保高可用性。

  7. 測試設定。

  8. 將 Pod 連上網路。

選用:初始化 Distributed Cloud 區域的網路設定

在下列情況下,您必須初始化 Distributed Cloud 區域的網路設定:

  • Distributed Cloud 硬體安裝完成後,
  • 您在現有的 Distributed Cloud 部署作業中升級至 Distributed Cloud 1.3.0 以上版本,但未參與 Distributed Cloud Edge Network API 的不公開預先發布計畫。

初始化區域的網路設定會建立名為 default 的預設路由器,以及名為 default 的預設網路。此外,當您訂購 Distributed Cloud 硬體時,系統也會建立相應的互連網路連結,並將 default 路由器設定為與您要求的所有互連網路對等互連。這項設定可為 Distributed Cloud 部署作業提供連至本機網路的基本上行連結連線。

初始化區域的網路設定是一次性程序。如需完整操作說明,請參閱「初始化區域的網路設定」。

建立網路

如要建立新電視網,請按照「建立電視網」一文的說明操作。您也必須在網路中建立至少一個子網路,才能讓 Distributed Cloud 節點連線至網路。

建立一或多個子網路

如要建立子網路,請按照「建立子網路」一文的指示操作。您必須在網路中至少建立一個子網路,節點才能存取網路。您建立的每個子網路所對應的 VLAN,都會自動提供給可用區中的所有節點。

建立北向 BGP 對等互連工作階段

建立網路和對應的子網路時,這些網路和子網路會位於 Distributed Cloud 區域。如要啟用輸出連線,您必須在網路和對等互連邊緣路由器之間,建立至少一個北向 BGP 對等互連工作階段。

如要建立北向 BGP 對等互連工作階段,請按照下列步驟操作:

  1. 列出可用區中的互連網路,然後選取這個對等互連工作階段的目標互連網路。

  2. 在選取的互連網路上建立一或多個互連網路連結。互連網路連結會將您在下一個步驟中建立的路由器,連結至所選互連網路。

  3. 建立路由器。這個路由器會使用您在上一步建立的互連網路連結,在互連網路和您的網路之間傳送流量。

  4. 為您在本程序稍早建立的每個互連網路連結,在路由器中新增介面。針對每個介面,請使用 Distributed Cloud 機架中對應機架頂端 (ToR) 交換器的 IP 位址。如需操作說明,請參閱「建立北向對等互連工作階段」。

  5. 為您在上一步驟中於路由器上建立的每個介面新增對等互連

建立南向 BGP 對等互連工作階段

如要從本機網路啟用工作負載的連入連線,您必須在對等互連邊緣路由器和 Pod 所屬的子網路之間,建立一或多個南向 BGP 對等互連工作階段。每個子網路的閘道 IP 位址,是 Distributed Cloud 機架中對應 ToR 交換器的 IP 位址。

如要建立南向 BGP 對等互連工作階段,請執行下列操作:

  1. 針對要提供連入連線的每個子網路,在目標網路的路由器中新增介面。如需操作說明,請參閱「建立南向對等互連工作階段」。

  2. 為您在前一步驟中於路由器上建立的每個介面新增對等互連

選用:建立迴路 BGP 對等互連工作階段

如要在工作負載與本機網路之間啟用高可用性連線,您可以在目標 Pod 和 Distributed Cloud 機架中的兩個 ToR 交換器之間,建立迴路 BGP 對等互連工作階段。迴路介面連線對等互連工作階段會為 Pod 建立兩個獨立的對等互連工作階段,每個 ToR 交換器各有一個。

如要建立迴路 BGP 對等互連工作階段,請按照下列步驟操作:

  1. 在目標網路的路由器中新增迴路介面。如需操作說明,請參閱「建立迴路對等互連工作階段」。

  2. 為迴路介面新增對等互連

測試您的設定

如要測試您建立的網路元件設定,請執行下列操作:

  1. 檢查網路的運作狀態

  2. 檢查每個子網路的佈建狀態

  3. 檢查互連網路的運作狀態

  4. 檢查互連附件的運作狀態

  5. 檢查路由器運作狀態

將 Pod 連上網路

如要將 Pod 連線至網路及設定進階網路功能,請按照「網路功能運算子」中的操作說明進行。

負載平衡

Distributed Cloud 隨附以第 2 層模式的 MetalLB 為基礎的套裝組合網路負載平衡解決方案。您可以使用這項解決方案,透過虛擬 IP 位址 (VIP) 將 Distributed Cloud 區域中執行的服務公開給外部世界,方法如下:

  1. 網路管理員規劃網路拓撲,並在訂購 Distributed Cloud 時指定必要的虛擬 IPv4 位址子網路。Google 會在出貨前,相應設定 Distributed Cloud 硬體。請注意下列事項:
    • 這個 VIP 子網路會由 Distributed Cloud 區域內執行的所有 Kubernetes 叢集共用。
    • 系統會透過 Distributed Cloud 區域與本機網路之間的 BGP 工作階段,通告所要求 VIP 子網路的路徑。
    • 子網路中的第一個 (網路 ID)、第二個 (預設閘道) 和最後一個 (廣播位址) 位址,會保留給核心系統功能使用。請勿將這些地址指派給 MetalLB 設定的地址集區。
    • 每個叢集都必須使用獨立的 VIP 範圍,且該範圍必須位於已設定的 VIP 子網路內。
  2. 在 Distributed Cloud 區域中建立叢集時,叢集管理員會使用 CIDR 標記法指定 Pod 和 ClusterIP 服務位址集區。網路管理員會將適當的 LoadBalancer VIP 子網路提供給叢集管理員。
  3. 叢集建立完成後,叢集管理員會設定對應的 VIP 集區。如為遠端控制平面叢集,您必須使用 kubectl editkubectl replace 指令,編輯 metallb-system 命名空間中的 metallb-config ConfigMap。請勿使用 kubectl apply 指令,否則 Distributed Cloud 會覆寫您的變更。

    以下範例說明這類設定:

    # metallb-config.yaml
    apiVersion: v1
    kind: ConfigMap
    metadata:
      namespace: metallb-system
      name: metallb-config
    data:
      config: |
        address-pools:
        - name: default
          protocol: layer2
          addresses:
          - 192.168.1.2-192.168.1.254
    

    如果是本機控制層叢集,您必須在建立叢集時使用 --external-lb-ipv4-address-pools 標記指定虛擬 IP 集區。詳情請參閱存續模式

  4. 叢集管理員會建立適當的 Kubernetes LoadBalancer 服務

單一節點集區中的 Distributed Cloud 節點共用第 2 層網域,因此也是 MetalLB 負載平衡器節點。在Google Cloud 上執行的 Distributed Cloud 控制層節點不會做為負載平衡器節點。

Distributed Cloud Ingress

除了負載平衡,Distributed Cloud 也支援 Kubernetes Ingress 資源。Kubernetes Ingress 資源可控管 HTTP(S) 流量流向,將流量導向在 Distributed Cloud 叢集上執行的 Kubernetes Service。以下範例說明典型的 Ingress 資源:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: my-ingress
spec:
  rules:
  - http:
      paths:
      - backend:
          service:
            name: my-service
            port:
              number: 80
        path: /foo
        pathType: Prefix

設定完成後,網路流量會流經 istio-ingress Service,系統預設會從 MetalLB 設定中指定的虛擬 IP 位址集區,隨機指派 IP 位址。您可以使用 istio-ingress 服務定義中的 loadBalancerIP 欄位,從 MetalLB 設定中選取特定 IP 位址或虛擬 IP 位址。例如:

apiVersion: v1
kind: Service
metadata:
  labels:
    istio: ingress-gke-system
    release: istio
  name: istio-ingress
  namespace: gke-system
spec:
  loadBalancerIP: <targetLoadBalancerIPaddress>

停用預設的 Distributed Cloud Ingress 資源

根據預設,建立 Distributed Cloud 叢集時,Distributed Cloud 會自動為叢集設定 istio-ingress 服務。您可以選擇建立不含 istio-ingress 服務的 Distributed Cloud 叢集。若要這樣做,請完成下列步驟:

gcloud

  1. 建立名為 SystemsAddonConfig.yaml 的 YAML 設定檔,並在當中加入下列內容:

    systemAddonsConfig:
     ingress:
       disabled: true
    
  2. 在叢集建立指令中使用 --system-addons-config 旗標,傳遞 SystemsAddonConfig.yaml 檔案。你必須使用 gcloud alpha 版本,才能使用這項功能。例如:

    gcloud alpha edge-cloud container clusters create MyGDCECluster1 --location us-west1 \
        --system-addons-config=SystemsAddonConfig.yaml
    

    如要進一步瞭解如何建立 Distributed Cloud 叢集,請參閱「建立叢集」。

API

  1. 在叢集建立要求的 JSON 酬載中,新增下列 JSON 內容:

    "systemAddonConfig" {
       "ingress" {
               "disabled": true
       }
    }
    
  2. 按照「建立叢集」一文的說明,提交叢集建立要求。

SCTP 支援

Distributed Cloud 支援內部和外部網路的主要網路介面上的串流控制傳輸通訊協定 (SCTP)。SCTP 支援包括 NodePortLoadBalancerClusterIP 服務類型。Pod 可以使用 SCTP 與其他 Pod 和外部資源通訊。以下範例說明如何使用 SCTP,將 IPERF 設定為 ClusterIP 服務:

apiVersion: v1
kind: Pod
metadata:
  name: iperf3-sctp-server-client
  labels:
    app.kubernetes.io/name: iperf3-sctp-server-client
spec:
  containers:
  - name: iperf3-sctp-server
    args: ['-s', '-p 31390']
    ports:
      - containerPort: 31390
        protocol: SCTP
        name: server-sctp
  - name: iperf3-sctp-client
    ...

---

apiVersion: v1
kind: Service
metadata:
  name: iperf3-sctp-svc
spec:
  selector:
    app.kubernetes.io/name: iperf3-sctp-server-client
  ports:
    - port: 31390
      protocol: SCTP
      targetPort: server-sctp

SCTP 核心模組

從 1.5.0 版開始,Distributed Cloud 會將 sctp Edge OS 核心模組設定為可載入。這樣您就能在核心使用者空間中載入自己的 SCTP 協定堆疊。

此外,Distributed Cloud 預設會將下列模組載入核心:

模組名稱 設定名稱
fou CONFIG_NET_FOU
nf_conntrack_proto_gre CONFIG_NF_CT_PROTO_GRE
nf_conntrack_proto_sctp CONFIG_NF_CT_PROTO_SCTP
inotify CONFIG_INOTIFY_USER
xt_redirect CONFIG_NETFILTER_XT_TARGET_REDIRECT
xt_u32 CONFIG_NETFILTER_XT_MATCH_U32
xt_multiport CONFIG_NETFILTER_XT_MATCH_MULTIPORT
xt_statistic CONFIG_NETFILTER_XT_MATCH_STATISTIC
xt_owner CONFIG_NETFILTER_XT_MATCH_OWNER
xt_conntrack CONFIG_NETFILTER_XT_MATCH_CONNTRACK
xt_mark CONFIG_NETFILTER_XT_MARK
ip6table_mangle CONFIG_IP6_NF_MANGLE
ip6_tables CONFIG_IP6_NF_IPTABLES
ip6table_filter CONFIG_IP6_NF_FILTER
ip6t_reject CONFIG_IP6_NF_TARGET_REJECT
iptable_mangle CONFIG_IP_NF_MANGLE
ip_tables CONFIG_IP_NF_IPTABLES
iptable_filter CONFIG_IP_NF_FILTER

ClusterDNS 項資源

Distributed Cloud 支援 Google Distributed Cloud ClusterDNS 資源,可透過 spec.domains 區段為特定網域設定上游名稱伺服器。如要進一步瞭解如何設定這項資源,請參閱 spec.domains

後續步驟