本文提供範例,說明如何為高可用性 (HA) 管理員叢集和兩個 HA 使用者叢集分配 IP 位址。
事前準備
如要瞭解管理員叢集、使用者叢集和高可用性,請參閱選擇部署模型。
IP 位址分配範例
本節提供範例,說明如何在包含下列元素的安裝作業中分配 IP 位址:
- 叢集節點的 IP 位址 
- Pod 的 IP 位址 
- 服務的叢集 IP 位址 
- 控制層和輸入 Proxy 的虛擬 IP 位址 (VIP) 
- 用做服務外部 IP 位址的 VIP 
管理員叢集節點
本範例中的管理員叢集有三個節點。每個節點都會執行控制層元件。
使用者叢集節點
在本範例中,每個使用者叢集有六個節點:三個控制層節點和三個工作站節點。
負載平衡
在本例中,假設叢集使用隨附的 MetalLB 負載平衡器。負載平衡器會在叢集節點上執行,因此不需要額外的機器來進行負載平衡。
子網路
以這個範例來說,假設每個叢集都位於自己的第 2 層網域,且叢集位於下列子網路:
| 叢集 | 子網路 | 預設閘道 | 
|---|---|---|
| 管理員叢集 | 172.16.20.0/24 | 172.16.20.1 | 
| 使用者叢集 1 | 172.16.21.0/24 | 172.16.21.1 | 
| 使用者叢集 2 | 172.16.22.0/24 | 172.16.22.1 | 
下圖說明這三個子網路。請注意,VIP 不會顯示與叢集中的任何特定節點相關聯。這是因為 MetalLB 負載平衡器可以選擇要由哪個節點發布個別服務的虛擬 IP。舉例來說,在使用者叢集 1 中,一個節點可能會公告 172.16.21.52,另一個節點則可能會公告 172.16.21.53。
IP 位址範例:管理員叢集節點
您需要三個 IP 位址供管理員叢集節點使用,這些節點都會執行控制層元件。舉例來說,您可以為管理員叢集中的節點使用下列 IP 位址。本範例中的位址是連續的,但這並非必要條件:
| 管理員叢集節點的 IP 位址 | 
|---|
| 172.16.20.2 - 172.16.20.4 | 
範例 IP 位址:管理員叢集的控制層 VIP
您需要為管理員叢集的 Kubernetes API 伺服器預留 VIP。
在叢集設定檔中,這稱為 controlPlaneVIP。舉例來說,您可以預留下列 IP 位址,做為管理員叢集的控制層 VIP:
| 管理員叢集的控制層 VIP | 
|---|
| 172.16.20.50 | 
IP 位址範例:使用者叢集 1 節點
舉例來說,您可以為使用者叢集 1 中的三個控制層節點和三個工作站節點使用下列 IP 位址。在這個範例中,地址是連續的,但這並非必要條件:
| 使用者叢集 1 中節點的 IP 位址 | 
|---|
| 172.16.21.2 - 172.16.21.7 | 
IP 位址範例:使用者叢集 1 的 VIP
下表舉例說明如何指派 VIP,以便在使用者叢集 1 的負載平衡器上設定。在這個範例中,VIP 是連續的,但這並非必要條件:
| VIP | 說明 | IP 位址 | 
|---|---|---|
| 使用者叢集 1 的控制層 VIP | 在使用者叢集 1 的負載平衡器上設定 | 172.16.21.50 | 
| 使用者叢集 1 的 Ingress VIP | 在使用者叢集 1 的負載平衡器上設定 | 172.16.21.51 | 
| 使用者叢集 1 的 Service 虛擬 IP | 類型為 LoadBalancer的 Service 有十個位址。視需要在使用者叢集 1 的負載平衡器上設定。 請注意,這個範圍包含 Ingress VIP。 這是 MetalLB 負載平衡器的必要條件。 | 172.16.21.51 - 172.16.21.60 | 
IP 位址範例:使用者叢集 2 個節點
例如,您可以為使用者叢集 2 中的節點使用下列 IP 位址。這個範例中的地址是連續的,但這並非必要條件:
| 使用者叢集 2 中節點的 IP 位址 | 
|---|
| 172.16.22.2 - 172.16.22.7 | 
IP 位址範例:使用者叢集 2 的 VIP
下表舉例說明如何指派要為使用者叢集 2 負載平衡器設定的 VIP。這個範例中的 VIP 是連續的,但這並非必要條件。
| VIP | 說明 | IP 位址 | 
|---|---|---|
| 使用者叢集 2 的控制層 VIP | 在使用者叢集 2 的負載平衡器上設定 | 172.16.22.50 | 
| 使用者叢集 2 的 Ingress VIP | 在使用者叢集 2 的負載平衡器上設定 | 172.16.22.51 | 
| 使用者叢集 2 的 Service VIP | 類型為 LoadBalancer的 Service 有十個位址。視需要在使用者叢集 2 的負載平衡器上設定。 請注意,這個範圍包含 Ingress VIP。 這是 MetalLB 負載平衡器的必要條件。 | 172.16.22.51 - 172.16.22.60 | 
IP 位址範例:Pod 和服務
建立叢集前,您必須指定用於 Pod IP 位址的 CIDR 範圍,以及用於 Kubernetes 服務 ClusterIP 位址的另一個 CIDR 範圍。
決定要用於 Pod 和 Service 的 CIDR 範圍。例如:
| 目的 | CIDR 範圍 | 
|---|---|
| 管理員叢集中的 Pod | 192.168.0.0/16 | 
| 使用者叢集 1 中的 Pod | 192.168.0.0/16 | 
| 使用者叢集 2 中的 Pod | 192.168.0.0/16 | 
| 管理員叢集中的服務 | 10.96.0.0/20 | 
| 使用者叢集 1 中的服務 | 10.96.0.0/20 | 
| 使用者叢集 2 中的服務 | 10.96.0.0/20 | 
上述範例說明瞭以下幾點:
- 在預設的孤島模式網路模型中,多個叢集的 Pod CIDR 範圍可以相同。在扁平模式網路中,Pod 在所有叢集中的 IP 位址不得重複。如要進一步瞭解影響 Pod 的網路模型,請參閱「Flat vs island mode network models」(平面與島嶼模式網路模型)。 
- 多個叢集可以共用同一個 Service CIDR 範圍。 
- 通常您需要的 Pod 數量會多於 Service,因此對於指定叢集,您可能需要比 Service CIDR 範圍更大的 Pod CIDR 範圍。使用者叢集的 Pod 範圍範例為 192.168.0.0/16,其中有 2^(32-16) = 2^16 個位址。但使用者叢集的服務範圍範例為 10.96.0.0/20,只有 2^(32-20) = 2^12 個位址。 
避免重疊
請注意,CIDR 範圍不得與網路中可連線的 IP 位址重疊。Service 和 Pod 範圍不得與您要從叢集內部連結的任何外部位址重疊。
舉例來說,假設您的服務範圍為 10.96.0.0/20,而 Pod 範圍為 192.168.0.0/16。Pod 傳送至任一範圍內位址的流量,都會視為叢集內流量,不會傳送至叢集外的任何目的地。
具體來說,Service 和 Pod 範圍不得與下列項目重疊:
- 任何叢集內節點的 IP 位址 
- 負載平衡器機器使用的 IP 位址 
- 控制層節點和負載平衡器使用的 VIP 
- DNS 伺服器和 NTP 伺服器的 IP 位址 
建議您將 Service 和 Pod 範圍設在 RFC 1918 私人位址空間中。
建議使用 RFC 1918 位址的原因之一是:假設您的 Pod 或服務範圍包含外部 IP 位址。如果 Pod 將流量傳送至其中一個外部位址,系統會將該流量視為叢集內流量,且不會傳送至外部目的地。
IP 位址分配方式的變化
本文提供的範例說明如何為特定類型的安裝作業分配 IP 位址。不過,您可以透過各種方式安裝 Google Distributed Cloud,而您選擇的變體會影響 IP 位址的規劃方式。
舉例來說,您可能會決定使用非 HA 叢集,或決定將叢集節點分散到多個第 2 層網域。您可能會決定使用平面模式網路,而非孤島模式網路。
如需在各類安裝項目的叢集設定檔中指定 IP 位址的範例,請參閱叢集設定範例。
如要進一步瞭解如何為不同類型的安裝作業規劃 IP 位址,請參閱下列文件:
- 
在扁平模式中,Pod 在多個叢集中具有專屬位址。 視情況調整 Pod CIDR 範圍。 
- 
節點、Pod 和服務都有 IPv4 和 IPv6 位址。IPv6 網路處於扁平模式,但 IPv4 網路可處於孤島模式或扁平模式。如果是扁平模式網路,您必須安排 Pod 可存取性。 
- 
您必須安排 Pod 可存取性。將 Pod 範圍和節點範圍設為較大範圍的子集。 
- 
您需要叢集中 BGP 揚聲器的浮動 IP 位址,且必須指定對等互連路由器的 IP 位址。 
- 
您需要叢集中 BGP 揚聲器的浮動 IP 位址,且必須指定對等互連路由器 IP 位址。 
- 設定 Network Connectivity Gateway - 您必須指定對等互連 IP 位址和本機通道 IP 位址。