本文說明如何規劃 Google Distributed Cloud 安裝項目的 IP 位址。
事前準備
請參閱 Google Distributed Cloud 總覽和安裝總覽。
IP 位址分配範例
本節提供範例,說明如何在包含下列元素的安裝作業中分配靜態 IP 位址:
管理員工作站
高可用性 (HA) 管理員叢集
一個具有五個工作站節點的高可用性使用者叢集
一個非高可用性使用者叢集,內含四個工作站節點
在本範例中,使用者叢集已啟用 Controlplane V2。使用 Controlplane V2 時,使用者叢集的控制層節點位於使用者叢集本身。
如不想為使用者叢集啟用 Controlplane V2,請參閱「規劃 IP 位址 (kubeception)」。kubeception 是指使用者叢集的控制層在管理員叢集的一或多個節點上執行的情況。我們不建議使用 kubeception。建議您啟用 Controlplane V2。
管理員叢集節點
管理員叢集有三個節點,每個節點都會執行控制層元件。
負載平衡
在本例中,假設叢集使用 MetalLB 負載平衡器。這個負載平衡器會在叢集節點上執行,因此不需要額外的 VM 進行負載平衡。
子網路
以本範例來說,假設每個叢集都位於自己的 VLAN,且叢集位於下列子網路中:
VM | 子網路 | 預設閘道 |
---|---|---|
管理員工作站和管理員叢集 | 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 |
下圖說明瞭三個 VLAN 和子網路。請注意,VIP 不會顯示與叢集中的任何特定節點相關聯。這是因為 MetalLB 負載平衡器可以選擇要由哪個節點發布個別服務的虛擬 IP。舉例來說,在使用者叢集 1 中,一個工作站節點可能會公告 172.16.21.31,另一個工作站節點則可能會公告 172.16.21.32。
範例 IP 位址:管理員工作站
在本例中,管理員工作站與管理員叢集位於同一個子網路:172.16.20.0/24。靠近節點位址的位址適合做為管理員工作站。例如 172.16.20.20。
IP 位址範例:管理員叢集節點
本範例中的管理員叢集有三個節點,因此您需要設定三個 IP 位址。舉例來說,您可以為管理員叢集中的節點預留下列 IP 位址:
管理員叢集 | IP 位址 |
---|---|
高可用性管理員叢集 | 172.16.20.2 - 172.16.20.4 |
IP 位址範例:管理員叢集的 VIP
您需要為管理員叢集的 Kubernetes API 伺服器預留 VIP。
請注意,在叢集設定檔中,這個 VIP 的欄位稱為 controlPlaneVIP
。舉例來說,您可以為管理員叢集的 Kubernetes API 伺服器預留下列 VIP:
VIP | IP 位址 |
---|---|
管理員叢集 Kubernetes API 伺服器的 VIP | 172.16.20.30 |
請注意,如果是 HA 管理員叢集,controlPlaneVIP
必須與 network.controlPlaneIPBlock 中指定的控制層節點 IP 位於相同 VLAN。
IP 位址範例:使用者叢集 1 節點
如果使用者叢集有八個節點,您需要預留九個 IP 位址。由於叢集升級、更新和自動修復時需要額外位址,因此必須提供。舉例來說,您可以為使用者叢集 1 中的節點預留下列 IP 位址:
使用者叢集 1 中節點的 IP 位址 |
---|
172.16.21.2 - 172.16.21.10 |
IP 位址範例:使用者叢集 1 的 VIP
下表舉例說明如何指派 VIP,以便在使用者叢集 1 的負載平衡器上設定:
VIP | 說明 | IP 位址 |
---|---|---|
使用者叢集 1 的 Kubernetes API 伺服器 VIP | 在使用者叢集 1 的負載平衡器上設定 | 172.16.21.30 |
使用者叢集 1 的 Ingress VIP | 在使用者叢集 1 的負載平衡器上設定 | 172.16.21.31 |
使用者叢集 1 的 Service 虛擬 IP | 類型為 LoadBalancer 的 Service 有十個位址。視需要在使用者叢集 1 的負載平衡器上設定。 請注意,這個範圍包含 Ingress VIP。 這是 MetalLB 負載平衡器的必要條件。 |
172.16.21.31 - 172.16.21.40 |
請注意,Kubernetes API 伺服器的 VIP 是在叢集設定檔的 loadBalancer.vips.controlPlaneVIP 中指定。啟用 ControlPlane V2 時,controlPlaneVIP
必須與 network.controlPlaneIPBlock 中指定的控制層節點 IP 位於相同的 VLAN。
IP 位址範例:使用者叢集 2 個節點
如果使用者叢集有五個節點,您需要預留六個 IP 位址。由於叢集升級、更新和自動修復時需要額外位址,因此必須提供。舉例來說,您可以為使用者叢集 2 中的節點預留下列 IP 位址:
使用者叢集 2 中節點的 IP 位址 |
---|
172.16.22.2 - 172.16.22.7 |
IP 位址範例:使用者叢集 2 的 VIP
下表舉例說明如何指派 VIP,以便在使用者叢集 2 的負載平衡器上設定:
VIP | 說明 | IP 位址 |
---|---|---|
使用者叢集 2 的 Kubernetes API 伺服器 VIP | 在使用者叢集 2 的負載平衡器上設定 | 172.16.22.30 |
使用者叢集 2 的 Ingress VIP | 在使用者叢集 2 的負載平衡器上設定 | 172.16.22.31 |
使用者叢集 2 的 Service VIP | 類型為 LoadBalancer 的 Service 有十個位址。視需要在使用者叢集 2 的負載平衡器上設定。 請注意,這個範圍包含 Ingress VIP。 這是 MetalLB 負載平衡器的必要條件。 |
172.16.22.31 - 172.16.22.40 |
請注意,Kubernetes API 伺服器的 VIP 是在叢集設定檔的 loadBalancer.vips.controlPlaneVIP 中指定。啟用 ControlPlane V2 時,controlPlaneVIP
必須與 network.controlPlaneIPBlock 中指定的控制層節點 IP 位於相同的 VLAN。
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.232.0/24 |
使用者叢集 1 中的服務 | 10.96.0.0/20 |
使用者叢集 2 中的服務 | 10.96.128.0/20 |
上述範例說明瞭以下幾點:
多個叢集可以共用同一個 Pod 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.232.0/24,Pod 範圍為 192.168.0.0/16 (192.168.0.1 - 192.168.255.254)。Pod 傳送至任一範圍內位址的流量,都會視為叢集內流量,不會抵達叢集外的任何目的地。
具體來說,Service 和 Pod 範圍不得與下列項目重疊:
任何叢集內節點的 IP 位址
負載平衡器機器使用的 IP 位址
控制層節點和負載平衡器使用的 VIP
vCenter 伺服器、DNS 伺服器和 NTP 伺服器的 IP 位址
建議您將 Service 和 Pod 範圍設在 RFC 1918 私人位址空間中。
建議使用 RFC 1918 位址的原因之一是:假設您的 Pod 或服務範圍包含外部 IP 位址。從 Pod 傳送至其中一個外部位址的任何流量,都會視為叢集內流量,且不會抵達外部目的地。
DNS 伺服器和預設閘道
填寫設定檔之前,您必須先知道管理員工作站和叢集節點可使用的 DNS 伺服器 IP 位址。
您也必須知道每個子網路的預設閘道 IP 位址。在上述範例中,每個子網路的預設閘道都是範圍中的第一個位址。舉例來說,在管理員叢集的子網路中,預設閘道會顯示為 172.16.20.1。