本文提供範例,說明如何為高可用性 (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
下表舉例說明如何指派 VIP,以便在使用者叢集 2 的負載平衡器上設定。本例中的 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 位址。