本頁說明 Google Distributed Cloud connected 的網路功能,包括子網路、BGP 對等互連工作階段和負載平衡。
本頁的程序僅適用於 Distributed Cloud connected 機架,負載平衡除外,因為負載平衡適用於 Distributed Cloud connected 機架和 Distributed Cloud connected 伺服器。
IPv4/IPv6 雙重堆疊網路
透過 Distributed Cloud Connected,您可以建立使用 IPv4/IPv6 雙堆疊網路的叢集。如要使用這項功能,請務必訂購已啟用雙堆疊 IPv4/IPv6 網路的 Distributed Cloud 連線。您無法重新設定已連線至 IPv4/IPv6 雙重堆疊網路的 Distributed Cloud 現有 IPv4 專屬部署作業。如要檢查部署作業是否支援 IPv4/IPv6 雙堆疊網路,請按照「取得機器相關資訊」中的操作說明,檢查 dualstack_capable 標籤的回傳值。
在雙重堆疊叢集中,IPv4 堆疊會使用島嶼模式,而 IPv6 堆疊則會使用平面模式。因此,您必須指定屬於相同子網路的個別節點和 Pod IPv6 位址。詳情請參閱平面與島嶼模式網路模型。
舉例來說,如果 Distributed Cloud 連線節點和其他本機電腦位於相同的第 2 層網域,您可以為叢集指定 IPv6 CIDR 區塊,如下所示:
| 封鎖用途 | 封鎖範圍 | 區塊大小 |
|---|---|---|
| IPv6 子網路 | fd12::/56 | 2^72 |
| Pod | fd12::1:0/59 | 2^69 |
| 服務 | fd12::2:0/59 | 2^69 |
本範例假設:
- 節點、Pod 和服務 CIDR 區塊屬於 fd:12::/56 超網路。
- 節點、Pod 和服務 IP 位址是指定 CIDR 區塊的子網路。
- 子網路之間沒有重疊。
IPv4/IPv6 雙重堆疊網路需要第 2 層負載平衡,才能進行 IPv4 BGP 對等互連,並需要第 3 層負載平衡,才能進行 IPv6 對等互連。詳情請參閱負載平衡。
如要進一步瞭解如何在 IPv4/IPv6 雙堆疊叢集上部署工作負載,請參閱下列內容:
啟用 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 連線的典型網路設定包含下列步驟:
選用:視需要初始化目標區域的網路設定。
建立網路。
在網路中建立一或多個子網路。
使用對應的互連網路連結,與 PE 路由器建立北向 BGP 對等互連工作階段。
使用對應的子網路,與執行工作負載的 Pod 建立南向 BGP 對等互連工作階段。
選用:建立迴路 BGP 對等互連工作階段,確保高可用性。
測試設定。
將 Pod 連上網路。
初始化 Distributed Cloud 區域的網路設定
在您的 Distributed Cloud connected 硬體安裝於內部部署環境後,請立即初始化 Distributed Cloud connected 可用區的網路設定。初始化區域的網路設定是一次性程序。
初始化區域的網路設定會建立名為 default 的預設路由器,以及名為 default 的預設網路。此外,系統也會建立相應的互連網路連結,將 default 路由器設定為與您訂購 Distributed Cloud 連線硬體時要求的所有互連網路對等互連。這項設定可為 Distributed Cloud 連線部署作業提供基本上行鏈路連線,連至本機網路。
如需操作說明,請參閱「初始化區域的網路設定」。
建立網路
如要建立新電視網,請按照「建立電視網」一文的說明操作。您也必須在網路中建立至少一個子網路,才能讓 Distributed Cloud 連線節點連上網路。
建立一或多個子網路
如要建立子網路,請按照「建立子網路」一文的指示操作。您必須在網路中至少建立一個子網路,節點才能存取網路。您建立的每個子網路所對應的 VLAN,都會自動提供給可用區中的所有節點。
如果是 Distributed Cloud 連線伺服器,您只能使用 VLAN ID 設定子網路。不支援以 CIDR 為基礎的子網路。
建立北向 BGP 對等互連工作階段
建立網路和對應的子網路時,這些網路和子網路會位於 Distributed Cloud connected 可用區。如要啟用輸出連線,您必須在網路和對等互連邊緣路由器之間,建立至少一個北向 BGP 對等互連工作階段。
如要建立北向 BGP 對等互連工作階段,請按照下列步驟操作:
列出可用區中的互連網路,然後選取這個對等互連工作階段的目標互連網路。
在選取的互連網路上建立一或多個互連網路連結。互連網路連結會將您在下一個步驟中建立的路由器,連結至所選互連網路。
建立路由器。這個路由器會使用您在上一步建立的互連網路連結,在互連網路和您的網路之間傳送流量。
為您在本程序稍早建立的每個互連網路連結,在路由器中新增介面。針對每個介面,請使用 Distributed Cloud 連線機架中對應機架頂端 (ToR) 交換器的 IP 位址。如需操作說明,請參閱「建立北向對等互連工作階段」。
為您在上一步驟中於路由器上建立的每個介面新增對等互連。
建立南向 BGP 對等互連工作階段
如要從本機網路啟用工作負載的連入連線,您必須在對等互連邊緣路由器和 Pod 所屬的子網路之間,建立一或多個南向 BGP 對等互連工作階段。每個子網路的閘道 IP 位址,是 Distributed Cloud 連線機架中對應 ToR 交換器的 IP 位址。
如要建立南向 BGP 對等互連工作階段,請執行下列操作:
針對要提供連入連線的每個子網路,在目標網路的路由器中新增介面。如需操作說明,請參閱「建立南向對等互連工作階段」。
為您在前一步驟中於路由器上建立的每個介面新增對等互連。
選用:建立迴路 BGP 對等互連工作階段
如要在工作負載與本機網路之間啟用高可用性連線,您可以在目標 Pod 與 Distributed Cloud 連線機架中的兩個 ToR 交換器之間,建立迴路 BGP 對等互連工作階段。迴路介面互連工作階段會為 Pod 建立兩個獨立的互連工作階段,每個 ToR 交換器各有一個。
如要建立迴路 BGP 對等互連工作階段,請按照下列步驟操作:
在目標網路的路由器中新增迴路介面。如需操作說明,請參閱「建立迴路對等互連工作階段」。
為迴路介面新增對等互連。
測試您的設定
如要測試您建立的網路元件設定,請執行下列操作:
將 Pod 連上網路
如要將 Pod 連線至網路及設定進階網路功能,請按照「網路功能運算子」中的指示操作。
負載平衡
Distributed Cloud 連結網路方案隨附下列負載平衡解決方案:
- 使用 MetalLB 進行第 2 層負載平衡
- 使用 Google Distributed Cloud 負載平衡器進行第 3 層負載平衡
Distributed Cloud connected 內建的負載平衡解決方案無法使用重疊的 Kubernetes 服務虛擬 IP 前置字元。如果您有使用第 2 層 MetalLB 負載平衡的現有 Distributed Cloud 連線部署作業,且想改用第 3 層負載平衡搭配 Google Distributed Cloud 負載平衡器,則必須使用與第 2 層 MetalLB 負載平衡設定所用前置字元不重疊的服務虛擬 IP 前置字元。
使用 MetalLB 進行第 2 層負載平衡
Distributed Cloud 隨附以第 2 層模式的 MetalLB 為基礎的套裝組合網路負載平衡解決方案。您可以使用這項解決方案,透過虛擬 IP 位址 (VIP) 將 Distributed Cloud 區域中執行的服務公開給外部世界,方法如下:
- 網路管理員規劃網路拓撲,並在訂購 Distributed Cloud 時指定必要的虛擬 IPv4 和 IPv6 位址子網路。Google 會在出貨前,相應設定 Distributed Cloud 硬體。請注意下列事項:
- 這個 VIP 子網路會由 Distributed Cloud 區域內執行的所有 Kubernetes 叢集共用。
- 系統會透過 Distributed Cloud 區域與本機網路之間的 BGP 工作階段,通告所要求 VIP 子網路的路徑。
- 子網路中的第一個 (網路 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 和 IPv6 位址、位址範圍和子網路清單。avoid_buggy_ips:排除結尾為.0或.255的 IP 位址。manual_assign:您可以在目標LoadBalancer服務的設定中,手動指派這個集區的位址,不必讓 MetalLB 控制器自動指派。
如要進一步瞭解如何設定 VIP 位址集區,請參閱 MetalLB 說明文件中的「指定位址集區」。
叢集管理員會建立適當的 Kubernetes
LoadBalancer服務。
單一節點集區中的 Distributed Cloud 節點共用一個第 2 層網域,因此也是 MetalLB 負載平衡器節點。
使用 Google Distributed Cloud 負載平衡器進行第 3 層負載平衡
Distributed Cloud connected 隨附套裝組合的網路負載平衡解決方案,以第 3 層模式為基礎,並設定為 BGP 揚聲器。這項解決方案以Google Distributed Cloud 套裝組合負載平衡器為基礎。您可以使用這項解決方案,透過 VIP 將 Distributed Cloud 連線區域中執行的服務公開給外部世界。
您可以使用 metallb-config ConfigMap,為對應的 LoadBalancer 服務指定 VIP 範圍。例如:
kind: ConfigMap
apiVersion: v1
data:
config: |
address-pools:
- name: default
protocol: bgp
addresses:
- 10.100.10.66/27
metadata:
name: metallb-config
namespace: metallb-system
在上述範例中,您設定的每個 LoadBalancer 服務都會自動從 ConfigMap 中指定的 10.100.10.66/27 範圍指派虛擬 IP 位址。然後,在 ToR 交換器上設定的 Distributed Cloud BGP 揚聲器,會透過 BGPPeer 資源,向北通告這些 VIP。
建立 Distributed Cloud 叢集時,系統會在該叢集上自動建立下列資源:
BGPLoadBalancer資源,可例項化 BGP 負載平衡器。NetworkGatewayGroup資源,用於指定 BGP 揚聲器使用的本機浮動 IP 位址。系統會自動將這些 IP 位址設為指派給叢集的 Kubernetes 節點子網路的最後兩個 IP 位址。
有了這些資源,您就能設定 BGP 工作階段,方法是設定對應的 BGPPeer 資源,連線至 Distributed Cloud ToR 交換器。如要執行這項操作,您必須擁有必要的自治系統編號 (ASN) 和 ToR 交換器的迴路對等互連 IP 位址。這些 IP 位址是預設網路資源上的 ToR 交換器 BGP 工作階段端點。請注意,network 參數的值必須為 pod-network。
以下是兩個 BGPPeer 資源的範例:
kind: BGPPeer
apiVersion: networking.gke.io/v1
metadata:
name: bgppeertor1
labels:
cluster.baremetal.gke.io/default-peer: "true"
namespace: kube-system
spec:
network: pod-network
localASN: 64777
peerASN: 64956
peerIP: 10.112.0.10
sessions: 1
kind: BGPPeer
apiVersion: networking.gke.io/v1
metadata:
name: bgppeertor2
labels:
cluster.baremetal.gke.io/default-peer: "true"
namespace: kube-system
spec:
network: pod-network
localASN: 64777
peerASN: 64956
peerIP: 10.112.0.11
sessions: 1
為 IPv6 對等互連設定第 3 層 BGP 負載平衡自動化
如要在 IPv4/IPv6 雙堆疊網路叢集上使用 IPv6 對等互連,請先與 Google 支援團隊合作,在 Distributed Cloud 連線部署中啟用 Google Distributed Cloud 負載平衡器自動化功能。
建立第 3 層 LoadBalancer 服務
在 Distributed Cloud 連線部署作業中啟用 Google Distributed Cloud 負載平衡器自動化功能後,請例項化第 3 層 LoadBalancer 服務。例如:
apiVersion: v1
kind: Service
metadata:
name: my-service
labels:
app.kubernetes.io/name: MyApp
spec:
ipFamilyPolicy: PreferDualStack
ipFamilies:
- IPv6
- IPv4
selector:
app.kubernetes.io/name: MyApp
type: LoadBalancer
ports:
- protocol: TCP
port: 80
檢查 BGP 工作階段和負載平衡服務的狀態
如要檢查 BGP 工作階段的狀態,請使用下列指令:
kubectl get bgpsessions.networking.gke.io -A
指令會傳回類似以下範例的輸出內容:
NAMESPACE NAME LOCAL ASN PEER ASN LOCAL IP PEER IP STATE LAST REPORT
kube-system bgppeertor1-np-den6-120demo-den6-04-6ad5b6f4 64777 64956 10.100.10.61 10.112.0.10 Established 2s
kube-system bgppeertor2-np-den6-120demo-den6-04-6ad5b6f4 64777 64956 10.100.10.61 10.112.0.11 Established 2s
如要確認 BGP 播送器是否正在宣傳 LoadBalancer 服務,請使用下列指令:
kubectl get bgpadvertisedroutes.networking.gke.io -A
指令會傳回類似以下範例的輸出內容:
NAMESPACE NAME PREFIX METRIC
kube-system bgplb-default-service-tcp 10.100.10.68/32
kube-system bgplb-default-service-udp 10.100.10.77/32
Distributed Cloud Ingress
除了負載平衡外,Distributed Cloud Connected 也支援 Kubernetes Ingress 資源。Kubernetes Ingress 資源可控管 HTTP(S) 流量,並將流量導向在 Distributed Cloud 連線叢集上執行的 Kubernetes 服務。以下範例說明典型的 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 服務,系統預設會從 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 連線伺服器不支援這項功能。
停用預設的 Distributed Cloud Ingress 資源
根據預設,建立 Distributed Cloud 連線叢集時,Distributed Cloud 會自動為叢集設定 istio-ingress 服務。您可以選擇建立 Distributed Cloud 連線叢集,而不使用 istio-ingress 服務。若要這樣做,請完成下列步驟:
gcloud
建立名為
SystemsAddonConfig.yaml的 YAML 設定檔,並在當中加入下列內容:systemAddonsConfig: ingress: disabled: true
在叢集建立指令中使用
--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
在叢集建立要求的 JSON 酬載中,新增下列 JSON 內容:
"systemAddonConfig" { "ingress" { "disabled": true } }按照「建立叢集」一文的說明,提交叢集建立要求。
NodePort 服務
Distributed Cloud connected 支援 Kubernetes NodePort 服務,可監聽 Distributed Cloud 節點上所選通訊埠號碼的連線。NodePort 服務支援 TCP、UDP 和 SCTP 通訊協定。例如:
apiVersion: v1
kind: pod
metadata:
name: socat-nodeport-sctp
labels:
app.kubernetes.io/name: socat-nodeport-sctp
spec:
containers:
- name: socat-nodeport-sctp
...
ports:
- containerPort: 31333
protocol: SCTP
name: server-sctp
---
apiVersion: v1
kind: service
metadata:
name: socat-nodeport-sctp-svc
spec:
type: NodePort
selector:
app.kubernetes.io/name: socat-nodeport-sctp
ports:
- port: 31333
protocol: SCTP
targetPort: server-sctp
nodePort: 31333
SCTP 支援
Distributed Cloud Connected 支援主要網路介面上的串流控制傳輸通訊協定 (SCTP),適用於內部和外部網路。SCTP 支援 NodePort、LoadBalancer 和 ClusterIP 服務類型。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
Distributed Cloud 連線伺服器不支援這項功能。
SCTP 核心模組
從 1.5.0 版開始,Distributed Cloud connected 會將 sctp Edge OS 核心模組設定為可載入。這樣您就能在核心使用者空間中載入自己的 SCTP 協定堆疊。
此外,Distributed Cloud connected 預設會將下列模組載入核心:
| 模組名稱 | 設定名稱 |
|---|---|
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 connected 支援 Google Distributed Cloud ClusterDNS 資源,可透過 spec.domains 區段為特定網域設定上游名稱伺服器。如要進一步瞭解如何設定這項資源,請參閱 spec.domains。
Distributed Cloud 連線伺服器不支援這項功能。