本頁說明 Google Distributed Cloud Connected 的網路功能,包括子網路和負載平衡。
啟用 Distributed Cloud Edge Network API
如要在已連結的 Distributed Cloud 部署作業中設定網路,請先啟用 Distributed Cloud Edge Network API。如要這樣做,請完成本節中的步驟。根據預設,Distributed Cloud 連結網路方案伺服器出貨時,Distributed Cloud Edge Network API 已啟用。
控制台
前往 Google Cloud 控制台的「Distributed Cloud Edge Network API」頁面。
按一下「啟用」。
gcloud
使用下列指令:
gcloud services enable edgenetwork.googleapis.com
在 Distributed Cloud connected 上設定網路
本節說明如何設定 Distributed Cloud connected 部署作業的網路元件。
連線至 Distributed Cloud 的伺服器有以下限制:
- 您只能設定子網路,
- 子網路僅支援 VLAN ID,不支援以 CIDR 為基礎的子網路。
Distributed Cloud 連線的典型網路設定包含下列步驟:
選用:視需要初始化目標區域的網路設定。
建立網路。
在網路中建立一或多個子網路。
測試設定。
將 Pod 連上網路。
初始化 Distributed Cloud 區域的網路設定
在您的 Distributed Cloud connected 硬體安裝於內部部署環境後,請立即初始化 Distributed Cloud connected 可用區的網路設定。初始化區域的網路設定是一次性程序。
初始化可用區的網路設定會建立名為「default」的預設網路。這項設定可為 Distributed Cloud connected 部署作業提供與本機網路的基本上行連線。
如需操作說明,請參閱「初始化區域的網路設定」。
建立網路
如要建立新電視網,請按照「建立電視網」一文的說明操作。您也必須在網路中建立至少一個子網路,才能讓 Distributed Cloud 連線節點連上網路。
建立一或多個子網路
如要建立子網路,請按照「建立子網路」一文的指示操作。您必須在網路中至少建立一個子網路,節點才能存取網路。您建立的每個子網路所對應的 VLAN,都會自動提供給可用區中的所有節點。
測試您的設定
如要測試您建立的網路元件設定,請執行下列操作:
將 Pod 連上網路
如要將 Pod 連線至網路及設定進階網路功能,請按照「網路功能運算子」中的指示操作。這項功能不適用於虛擬機器工作負載。
(選用) 設定叢集網路隔離
Distributed Cloud 連結網路方案支援叢集網路隔離。指派給網路隔離叢集的節點無法與同一 Distributed Cloud 連線區域中的任何其他節點通訊。如要啟用叢集網路隔離功能,請在建立或修改叢集時使用 --enable-cluster-isolation 旗標。詳情請參閱「建立及管理叢集」。
(選用) 設定島嶼模式
Distributed Cloud connected 支援虛擬網路子系統的孤島模式。在 Island 模式中,您可以在 Pod 的次要網路介面上指定獨立的 IP 位址範圍。這個獨立的位址範圍與主要網路介面 VLAN 的位址範圍無關。設定為島嶼模式的 Pod 只會從這個隔離的「島嶼」位址範圍指派位址。詳情請參閱「平面與島嶼模式網路模型」。
您為孤島模式指定的獨立 IP 位址範圍不得與下列 IP 位址範圍衝突:
- 叢集中設定的任何網路的主要 VLAN CIDR
Network資源的networking.gke.io/gdce-lb-service-vip-cidrs註解中指定的負載平衡器虛擬 IP 位址範圍- 叢集中任何其他網路的島嶼模式所用 IP 位址範圍
設定島嶼模式
如要在 Pod 層級設定島嶼模式,請將 networking.gke.io/gdce-pod-cidr 註解新增至對應的 Network 自訂資源。將註解值設為目標隔離 IP 位址範圍,然後將修改後的 Network 資源套用至叢集。例如:
networking.gke.io/gdce-pod-cidr: 172.15.10.32/27
您也必須設定下列參數:
type必須設為L3。IPAMMode必須設為Internal。
例如:
apiVersion: networking.gke.io/v1
kind: Network
metadata:
name: my-network
annotations:
# Enable island mode and specify the isolated address range.
networking.gke.io/gdce-pod-cidr: 172.15.10.32/27
# Specify the VLAN ID for this secondary network.
networking.gke.io/gdce-vlan-id: "561"
# Specify the CIDR block for load balancer services on this network.
networking.gke.io/gdce-lb-service-vip-cidrs: 172.20.5.180/30
spec:
# Network type must be L3 for island mode.
type: L3
# IPAMMode must be Internal for island mode.
IPAMMode: Internal
nodeInterfaceMatcher:
interfaceName: gdcenet0.561 # The name for the target network interface.
gateway4: 172.20.5.177 # Gateway IP address; must be unique in this CR.
externalDHCP4: false
dnsConfig:
nameservers:
- 8.8.8.8
如要確認是否已啟用島嶼模式,請按照下列步驟操作:
建立測試 Pod 並套用至叢集。例如:
apiVersion: v1 kind: Pod metadata: name: island-pod-tester annotations: networking.gke.io/interfaces: '[{"interfaceName":"eth1","network":"test-network-vlan561"}]' networking.gke.io/default-interface: "eth1" spec: containers: - name: sample-container image: busybox command: ["/bin/sh", "-c", "sleep 3600"]取得 Pod 的 IP 位址:
kubectl get pod island-pod-tester -o wide這個指令會傳回 Pod 的 IP 位址,該位址位於您指定的隔離位址範圍內。
使用 ClusterIP 服務設定島嶼模式
如要使用 ClusterIP 服務設定島嶼模式,請完成上一節的步驟,然後將 networking.gke.io/gke-gateway-clusterip-cidr 註解新增至 Network 資源,並根據業務需求設定其值。Network 資源中指定的位址範圍不得重疊。例如:
apiVersion: networking.gke.io/v1
kind: Network
metadata:
annotations:
networking.gke.io/gdce-lb-service-vip-cidrs: 172.20.5.180/30
networking.gke.io/gdce-pod-cidr: 172.15.10.32/27
networking.gke.io/gdce-vlan-id: "561"
networking.gke.io/gke-gateway-clusterip-cidr: 10.20.1.0/28
name: test-network-vlan561
spec:
IPAMMode: Internal
dnsConfig:
nameservers:
- 8.8.8.8
externalDHCP4: false
gateway4: 172.20.5.177
nodeInterfaceMatcher:
interfaceName: gdcenet0.561
type: L3
負載平衡
Distributed Cloud 隨附以第 2 層模式的 MetalLB 為基礎的套裝組合網路負載平衡解決方案。您可以使用這項解決方案,透過虛擬 IP 位址 (VIP) 將 Distributed Cloud 區域中執行的服務公開給外部世界,方法如下:
- 網路管理員規劃網路拓撲,並在訂購 Distributed Cloud 時指定必要的虛擬 IPv4 位址子網路。Google 會在出貨前,相應設定 Distributed Cloud 硬體。請注意下列事項:
- 這個 VIP 子網路會由 Distributed Cloud 區域內執行的所有 Kubernetes 叢集共用。
- 子網路中的第一個 (網路 ID)、第二個 (預設閘道) 和最後一個 (廣播位址) 位址,會保留給核心系統功能使用。請勿將這些地址指派給 MetalLB 設定的地址集區。
- 每個叢集都必須使用獨立的 VIP 範圍,且該範圍必須位於已設定的 VIP 子網路內。
- 在 Distributed Cloud 區域中建立叢集時,叢集管理員會使用 CIDR 標記法指定 Pod 和 ClusterIP 服務位址集區。網路管理員會將適當的
LoadBalancerVIP 子網路提供給叢集管理員。 叢集建立完成後,叢集管理員會設定對應的 VIP 集區。建立叢集時,您必須使用
--external-lb-address-pools標記指定 VIP 集區。這個旗標接受 YAML 或 JSON 酬載的檔案,格式如下:addressPools: - name: foo addresses: - 10.2.0.212-10.2.0.221 - fd12::4:101-fd12::4:110 avoid_buggy_ips: true manual_assign: false - name: bar addresses: - 10.2.0.202-10.2.0.203 - fd12::4:101-fd12::4:102 avoid_buggy_ips: true manual_assign: false如要指定 VIP 位址集區,請在酬載中提供下列資訊:
name:說明名稱,可做為這個 VIP 位址集區的專屬 ID。addresses:要納入這個位址集區的 IPv4 位址、位址範圍和子網路清單。avoid_buggy_ips:排除結尾為.0或.255的 IP 位址。manual_assign:您可以在目標LoadBalancer服務的設定中,手動指派這個集區的位址,不必讓 MetalLB 控制器自動指派。
如要進一步瞭解如何設定 VIP 位址集區,請參閱 MetalLB 說明文件中的「指定位址集區」。
叢集管理員會建立適當的 Kubernetes
LoadBalancer服務。
單一節點集區中的 Distributed Cloud 節點共用一個第 2 層網域,因此也是 MetalLB 負載平衡器節點。
ClusterDNS 項資源
Distributed Cloud connected 支援 Google Distributed Cloud ClusterDNS 資源,可透過 spec.domains 區段為特定網域設定上游名稱伺服器。如要進一步瞭解如何設定這項資源,請參閱 spec.domains。