本頁面提供 Google Kubernetes Engine (GKE) 中虛擬私有雲原生叢集的一般總覽。
本頁面適用於負責設計及建構貴機構網路的雲端架構師和網路專家。如要進一步瞭解 Google Cloud 內容中提及的常見角色和範例工作,請參閱常見的 GKE Enterprise 使用者角色和工作。
總覽
在 GKE 中,叢集可根據將流量從一個 Pod 轉送至另一個 Pod 的方式來區分叢集。
使用別名 IP 位址範圍的叢集稱為「虛擬私有雲原生叢集」。使用虛擬私人雲端網路中的自訂靜態路徑的叢集稱為「路徑導向叢集」。
與貴機構的網路架構師、網路管理員,或任何負責定義、實作及維護網路架構的網路工程師團隊,共同規劃及設計叢集設定。
虛擬私有雲原生叢集的好處
虛擬私有雲原生叢集有幾項優點:
Pod IP 位址本身可以在叢集的虛擬私有雲網路中直接轉送,以及透過虛擬私有雲網路對等互連連線的其他虛擬私有雲網路。
Pod IP 位址會先保留在虛擬私有雲網路中,再於叢集內建立 Pod。這可避免與 VPC 網路中的其他資源發生衝突,並讓您更妥善地規劃 IP 位址分配。
Pod IP 位址範圍與自訂靜態路徑無關。不會耗用系統產生和自訂的靜態路徑配額。而是由自動產生的子網路路徑處理虛擬私有雲原生叢集的路由。
您可以建立防火牆規則,只套用至 Pod IP 位址範圍,而非叢集節點上的任何 IP 位址。
一般而言,Pod IP 位址範圍和子網路次要 IP 位址範圍,可透過 Cloud Router 從連線至 Cloud VPN 或 Cloud Interconnect 的內部部署網路存取。
部分功能 (例如網路端點群組 (NEG)) 僅適用於虛擬私有雲原生叢集。
預設叢集網路模式
在 GKE 1.21.0-gke.1500 以上版本中,所有叢集預設都會使用虛擬私有雲原生模式。如果是舊版,預設的叢集網路模式取決於建立叢集的方式。
下表列出 GKE 叢集版本和叢集建立方法的預設叢集網路模式。
GKE 版本 | 叢集建立方法 | 叢集網路模式 |
---|---|---|
所有版本 | Google Cloud 控制台 | 虛擬私有雲原生 |
1.21.0-gke.1500 以上版本 | GKE API 或 Google Cloud CLI | 虛擬私有雲原生 |
您也可以在建立叢集時指定 --no-enable-ip-alias
旗標,建立路徑導向叢集。
虛擬私有雲原生叢集的 IP 位址範圍
建立虛擬私有雲原生叢集時,您必須指定虛擬私有雲網路中的子網路。叢集會使用下列子網路 IP 位址範圍:
IPv4 位址分配
虛擬私有雲原生叢集會使用指定子網路中的不同範圍,為節點、Pod 和服務分配 IPv4 位址,如下所示。
節點 IP 位址:叢集會使用子網路的主要 IPv4 位址範圍,將 IP 位址指派給所有節點。
Pod IP 位址:叢集會使用子網路中的次要 IPv4 位址範圍,做為叢集內所有 Pod 的 IPv4 位址。如要提高彈性,您可以設定不連續的多 Pod CIDR,使用額外的子網路次要 IPv4 位址範圍。
服務 IP 位址:叢集會為所有服務 (叢集 IP) 位址使用個別的次要 IP 位址範圍。如要瞭解如何讓多個叢集共用相同的服務 IPv4 範圍,請參閱「在 GKE 叢集之間共用 IP 位址範圍」。
IPv6 位址分配 (雙重堆疊網路)
- 節點和 Pod IPv6 位址:在啟用雙重堆疊網路的叢集中,節點的 IPv6 位址和所有 Pod IPv6 位址都源自節點指定的
/96
IPv6 位址範圍。節點 IP 位址本身是這個範圍內的第一個/128
(單一 IPv6 位址)。詳情請參閱雙堆疊網路。
下表摘要列出節點、Pod 和 Service 的 IP 位址範圍:
範圍 | 說明 | 範例 |
---|---|---|
節點 |
節點 IP 位址是從與叢集相關聯的子網路主要 IP 位址範圍指派。 節點 IP 位址和 Pod 子網路次要 IP 位址範圍的大小,都會限制叢集可支援的節點數量。詳情請參閱節點限制範圍。 |
如果您打算建立包含 900 個節點的叢集,則叢集子網路的主要 IP 位址範圍必須至少為 詳情請參閱「子網路主要 IP 位址範圍」和「子網路次要 IP 位址範圍 (適用於 Pod)」。 |
Pod |
Pod IP 位址是取自叢集子網路的 Pod 次要 IP 位址範圍。除非您設定不同的 每個節點 Pod 數量上限,否則 GKE 會為每個節點分配 |
如果是包含 900 個節點的叢集,且每個節點最多支援 110 個 Pod,則需要 900 × 256 = 230,400 個 Pod 的 IP 位址。(每個節點都會分配到別名 IP 範圍,網路遮罩大小為 /24)。這個叢集需要子網路,且 Pod 的次要 IP 範圍子網路遮罩不得大於 /14。這個次要 IP 範圍可為 Pod 提供 2(32-14) = 218 = 262,144 個 IP 位址。 詳情請參閱「Pod 的子網路次要 IP 位址範圍」。 |
服務 |
Service (叢集 IP) 位址是取自叢集子網路的 Service 次要 IP 位址範圍。您必須確保這個範圍夠大,足以為叢集中代管的所有 Kubernetes 服務提供位址。 在執行 1.27 以上版本的 GKE Autopilot 叢集,以及執行 1.29 以上版本的 GKE Standard 叢集中,GKE 會從 GKE 管理的範圍指派 GKE 服務的 IP 位址: |
如果是最多執行 3000 個 Service 的叢集,則需要 3000 個叢集 IP 位址。您需要大小為 /20 或更大的次要範圍。大小為 /20 的 IP 位址範圍可產生 2(32-20) = 212 = 4,096 個 IP 位址。 詳情請參閱「服務的子網路次要 IP 位址範圍」。 |
內部 IP 位址
您為虛擬私有雲原生叢集子網路使用的 IP 位址,必須來自有效的子網路範圍。有效範圍包括私有 IP 位址 (RFC 1918 和其他位址) 和私用公開 IP 位址。如要進一步瞭解有效的子網路範圍,請參閱虛擬私有雲說明文件中的「有效範圍」和「受限範圍」。
如要瞭解如何啟用這些範圍,請參閱「使用非 RFC 1918 私人 IP 位址範圍」。
如需如何使用這些範圍的操作說明,請參閱「啟用私人使用的公開 IP 位址範圍」。
次要範圍指派方法
您可以將 Pod IP 位址範圍和 Service (ClusterIP
) 位址範圍指派給虛擬私有雲原生叢集。這些 IP 位址範圍可由 GKE 代管或使用者代管。
如要瞭解次要範圍指派方法,請務必瞭解下列重要字詞。
指派:指派 IP 位址範圍是指將特定子網路範圍分配給虛擬私有雲原生叢集的程序。這會建立 IP 位址集區,供叢集內的元件使用,例如 Pod 和 Service。
管理:管理 IP 位址範圍是指在叢集、節點集區或 Pod 層級,持續進行 (建立、更新、刪除、讀取) CRUD 作業,與指派的子網路範圍和虛擬私有雲原生叢集內的資源分配相關。
GKE 管理的次要範圍 (預設)
對於執行 1.27 以上版本的 GKE Autopilot 叢集,以及執行 1.29 以上版本的 GKE Standard 叢集,GKE 預設會從 GKE 管理的範圍指派 Service 的 IP 位址:34.118.224.0/20
。這樣您就不必為服務指定自己的 IP 位址範圍。請注意下列事項:
- 您可以使用
--services-ipv4-cidr
標記,選擇性地為服務指定自訂範圍。 - 如果您只使用
--services-ipv4-cidr
旗標指定範圍大小 (例如/22
),GKE 仍會使用 GKE 管理的範圍來取得位址子範圍。 - 使用 GKE 管理的範圍時,GKE 不會為服務建立個別的次要 IP 位址範圍。
使用者自行管理
如要完全控管 IP 位址分配作業,您可以手動管理虛擬私有雲原生叢集的子網路。
您可以建立子網路的次要 IP 位址範圍,然後建立使用這些範圍的叢集。建立叢集時,請指定 Pod 和服務的子網路範圍名稱。如果您以手動方式建立次要範圍,則必須自行管理這些範圍。
如果不使用不連續的多 Pod CIDR,可建立的最小 IP 位址範圍為 /28,但該範圍最多只能建立 1 個節點,且最多可有 8 個 Pod。您應使用足夠大的範圍,以容納所需的節點數量上限。
可用範圍下限也取決於每個節點的 Pod 數量上限。
如要瞭解每個節點的 Pod 數量上限不同時,可用的最小 CIDR 範圍,請參閱「最佳化 IP 位址分配作業」一文中的表格。
如果 Pod 的 IP 位址範圍用盡,請執行下列其中一項操作:
- 建立新的叢集,並使用較大的 Pod 位址範圍。
- 減少節點集區的節點數後,請重新建立節點集區。
--max-pods-per-node
- 使用不連續的多 Pod CIDR 擴充次要 Pod IP 位址範圍。
與路徑導向叢集的差異
Pod 和 Service (ClusterIP) 位址的分配方式與路徑導向叢集使用的配置方式不同。您必須在叢集的子網路中選擇或建立兩個次要 IP 位址範圍,分別用於 Pod 和服務,而不是為 Pod 和服務一起指定單一 CIDR。
共用 VPC 的注意事項
在共用虛擬私有雲環境中建立虛擬私有雲原生叢集時,專案擁有者、編輯者或身分與存取權管理 (IAM) 主體必須在共用虛擬私有雲主專案中具備網路管理員角色,才能手動建立叢集的子網路和次要 IP 位址範圍。建立叢集的服務專案管理員,至少須具備共用虛擬私有雲網路代管專案中子網路的子網路層級權限。
在共用 VPC 環境中,次要 IP 位址範圍無法由 GKE 管理。共用 VPC 主專案中的網路管理員必須先建立子網路和次要 IP 位址範圍,您才能建立叢集。如需在共用虛擬私有雲網路中設定共用虛擬私有雲原生叢集的範例,請參閱設定使用共用虛擬私有雲的叢集。
IP 位址範圍規劃
請參閱下列各節的資訊,協助您計算叢集所用子網路的主要和次要 IP 位址範圍大小。
子網路主要 IP 位址範圍
規劃主要節點 IP 位址範圍時,請考量下列條件:
- 每個子網路都必須有主要 IP 位址範圍。這是 GKE 用於為內部負載平衡器和節點分配 IP 位址的 IP 位址範圍。
- 建立子網路後,就無法縮小或變更子網路的主要 IP 位址範圍。
- 主要 IP 位址範圍的前兩個和後兩個 IP 位址會由Google Cloud保留。
- 使用 Private Service Connect 的叢集會使用主要子網路範圍,佈建指派給控制層端點的內部 IP 位址。不過,您可以使用
private-endpoint-subnetwork
旗標覆寫這項 IP 位址佈建作業。詳情請參閱「建立叢集並選取控制層 IP 位址範圍」。
下表顯示在子網路的主要 IP 位址範圍大小和叢集設定條件下,可建立的節點數量上限:
- 情境 1:使用預設子網路的叢集節點數上限。
- 情境 2:未使用
private-endpoint-subnetwork
旗標的 Private Service Connect 叢集中的節點數量上限。
子網路主要 IP 範圍 | 情境 1 | 情境 2 |
---|---|---|
/29 子網路主要 IP 範圍的大小下限 |
4 個節點 | 3 個節點 |
/28 | 12 個節點 | 11 個節點 |
/27 | 28 個節點 | 27 個節點 |
/26 | 60 個節點 | 59 個節點 |
/25 | 124 個節點 | 123 個節點 |
/24 | 252 個節點 | 251 個節點 |
/23 | 508 個節點 | 507 個節點 |
/22 | 1,020 個節點 | 1,019 個節點 |
/21 | 2,044 個節點 | 2,043 個節點 |
/20 自動模式網路中子網路主要 IP 範圍的預設大小 |
4,092 個節點 | 4,091 個節點 |
/19 | 8,188 個節點 | 8,187 個節點 |
/8 子網路主要 IP 範圍的大小上限 |
16,777,212 個節點 | 16,777,211 個節點 |
擴展主要 IP 位址範圍
如果主要 IP 位址範圍的 IP 位址用盡,您可以隨時擴充主要 IP 位址範圍,即使負載平衡器和網路端點群組等 Google Cloud 資源使用子網路也沒問題。
擴充主要 IP 位址範圍前,請先考量以下事項:
- 子網路中不得有重疊的 IP 位址範圍。
- GKE 會使用主要 IP 位址範圍,為內部負載平衡器和節點分配 IP 位址。
實用公式
您可以使用下列公式執行下列操作:
計算特定網路遮罩在預設子網路叢集中可支援的節點數量上限 N。使用 S 做為網路遮罩的大小,有效範圍介於
8
和29
之間 (最小值和最大值包含在內)。N = 2(32 -S) - 4
計算支援最多 N 個節點所需的網路遮罩大小 S:
S = 32 - ⌈log2(N + 4)⌉
⌈⌉
是無條件進位 (最小整數) 函式,也就是無條件進位至下一個整數。子網路遮罩大小 S 的有效範圍為8
至29
(含首尾)。
在未使用 private-endpoint-subnetwork
旗標的 Private Service Connect 叢集中,您可以使用上述公式,但請將 N 的值減少 1。
Pod 的子網路次要 IP 位址範圍
請仔細規劃 Pod 的次要 IP 位址範圍。
下表顯示在所有使用子網路的叢集中,您可建立的最大節點數和 Pod 數,前提是 Pod 使用的子網路次要 IP 位址範圍大小。
下表假設每個節點的 Pod 數量上限為 110 個,這是預設的 Pod 密度。
Pod 的子網路次要 IP 範圍 | Pod IP 位址上限 | 節點數量上限 | Pod 數量上限 |
---|---|---|---|
/24 最小的 Pod IP 範圍 (次要範圍指派方法為使用者代管時) |
256 個地址 | 1 個節點 |
Autopilot:32 個 Pod 標準:110 個 Pod |
/23 只有在次要範圍指派方法為使用者代管時,才有可能 |
512 個地址 | 2 個節點 |
Autopilot:64 個 Pod 標準:220 個 Pod |
/22 只有在次要範圍指派方法為使用者代管時,才能使用 |
1,024 個地址 | 4 個節點 |
Autopilot:128 個 Pod 標準:440 個 Pod |
/21 最小的可能 Pod IP 範圍(次要範圍指派方法由 GKE 管理時) |
2,048 個地址 | 8 個節點 |
Autopilot:256 個 Pod 標準:880 個 Pod |
/20 | 4,096 個地址 | 16 個節點 |
Autopilot:512 個 Pod 標準:1,760 個 Pod |
/19 | 8,192 個地址 | 32 個節點 |
Autopilot:1,024 個 Pod 標準:3,520 個 Pod |
/18 | 16,384 個地址 | 64 個節點 |
Autopilot:2,048 個 Pod 標準:7,040 個 Pod |
/17 | 32,768 個地址 | 128 個節點 |
Autopilot:4,096 個 Pod 標準:14,080 個 Pod |
/16 | 65,536 個地址 | 256 個節點 |
Autopilot:8,192 個 Pod 標準:28,160 個 Pod |
/15 | 131,072 個地址 | 512 個節點 |
Autopilot:16,384 個 Pod 標準:56,320 個 Pod |
/14 子網路的 Pod 次要 IP 位址範圍預設大小 (次要範圍指派方法由 GKE 管理時) |
262,144 個位址 | 1,024 個節點 |
Autopilot:32,768 個 Pod 標準:112,640 個 Pod |
/13 | 524,288 個地址 | 2,048 個節點 |
Autopilot:65,536 個 Pod 標準:225,280 個 Pod |
/12 | 1,048,576 個地址 | 4,096 個節點 |
Autopilot:131,072 個 Pod 標準:450,560 個 Pod |
/11 | 2,097,152 個位址 | 8,192 個節點 |
Autopilot:262,144 個 Pod 標準:901,120 個 Pod |
/10 | 4,194,304 個地址 | 16,384 個節點 |
Autopilot:524,288 個 Pod 標準:1,802,240 個 Pod |
/9 Pod 位址範圍上限 |
8,388,608 個地址 | 32,768 個節點 |
Autopilot:1,048,576 個 Pod 標準:3,604,480 個 Pod |
如果您已變更每個節點的 Pod 數量上限,可以使用下列公式計算 Pod 的子網路次要 IP 位址範圍可支援的節點和 Pod 數量上限:
計算每個節點 Pod 範圍的網路遮罩大小 M。
M = 31 - ⌈log2(Q)⌉
其中:- Q 是每個節點的 Pod 數量
⌈⌉
是無條件進位 (最小整數) 函式,也就是無條件進位至下一個整數- 舉例來說,如果 Q 是 110,則
M = 24
計算子網路的 Pod 次要 IP 位址範圍可支援的最大節點數 N:
N = 2(M - S)
其中:- M 是每個節點的 Pod 別名 IP 位址範圍網路遮罩大小,在第一個步驟中計算
- S 是子網路次要 IP 位址範圍的子網路遮罩大小
- 舉例來說,如果 M 為 24,而 S 為 20,則
N = 16
計算子網路的 Pod 次要 IP 位址範圍可支援的最大 Pod 數 P:
P = N × Q
,其中:- N 是上一個步驟中計算出的節點數量上限
- Q 是每個節點的 Pod 數量
- 舉例來說,如果 N 為 16,而 Q 為 110,則
P = 1760
您可以使用不連續的多 Pod CIDR,為 Pod 新增更多 IP 位址。
服務的子網路次要 IP 位址範圍
請仔細規劃 Service 的次要 IP 位址範圍。由於這也是子網路次要 IP 位址範圍,因此叢集建立後就無法變更這個範圍。
如果您使用多叢集服務,ServiceImport
物件會使用服務的次要 IP 位址範圍中的 IP 位址。
在執行 1.27 以上版本的 GKE Autopilot 叢集,以及執行 1.29 以上版本的 GKE Standard 叢集中,GKE 預設會從 GKE 管理的範圍指派 Service 的 IP 位址:34.118.224.0/20
。這樣您就不必為服務指定自己的 IP 位址範圍。請注意下列事項:
- 您可以使用
--services-ipv4-cidr
標記或--services-secondary-range-name
標記,選擇性地為服務指定自訂範圍。 - 如果您只使用
--services-ipv4-cidr
標記指定範圍大小 (例如/22
),GKE 仍會使用 GKE 管理的範圍來取得位址子範圍。 - 使用 Google 管理的範圍時,GKE 不會為服務建立個別的次要 IP 位址範圍。GKE 管理的範圍不會使用子網路的次要 IP 位址範圍配額。
下表顯示在單一叢集中,使用子網路可建立的服務數量上限,前提是子網路的服務次要 IP 位址範圍大小。
服務的次要 IP 範圍 | 服務數量上限 |
---|---|
/28 次要範圍指派方法為使用者代管時,最小的可能服務位址範圍 |
16 項服務 |
/27 次要範圍指派方法由 GKE 管理時,最小的可能 Service 位址範圍 |
32 項服務 |
/26 | 64 項服務 |
/25 | 128 項服務 |
/24 | 256 項服務 |
/23 | 512 個服務 |
/22 | 1,024 個服務 |
/21 | 2,048 個服務 |
/20 當次要範圍指派方法是由 GKE 管理時,服務的子網路次要 IP 範圍預設大小 |
4,096 個服務 |
/19 | 8,192 項服務 |
/18 | 16,384 個服務 |
/17 | 32,768 項服務 |
/16 最大的可能服務位址範圍 |
65,536 個服務 |
在 GKE 叢集之間共用 IP 位址範圍
您可以在相同子網路中的叢集之間,共用主要範圍、Pod 的次要 IP 位址範圍,以及服務的次要 IP 位址範圍。這項行為適用於 Standard 和 Autopilot 叢集。
如果您有集中式團隊負責管理叢集的基礎架構,可能需要共用 IP 位址範圍。您可以建立三個範圍 (分別用於 Pod、服務和節點),並重複使用或共用這些範圍,藉此減少額外負擔,尤其是在共用虛擬私有雲模型中。此外,網路管理員不必為每個叢集建立特定子網路,因此管理 IP 位址時也更輕鬆。
分享控制層的自訂子網路範圍
根據預設,GKE 會使用主要子網路範圍佈建控制層的內部端點。不過,在具有 Private Service Connect 的叢集中,您可以設定 GKE 從您建立的其他子網路佈建內部端點。您可以與其他叢集共用這個子網路,或在使用共用虛擬私有雲時,跨專案共用這個子網路。
共用節點的主要 IP 位址範圍
如果您在子網路中建立多個叢集,節點的主要 IP 位址範圍預設會共用。
共用節點的主要 IP 位址有下列限制:
- 如果節點的主要 IP 位址範圍與兩個以上的虛擬私有雲原生叢集共用,其中一個叢集可能會使用共用 IP 位址範圍的大部分,導致其他叢集沒有足夠的 IP 位址可供擴充。
共用 Pod 的次要 IP 位址範圍
共用 Pod 的次要範圍時,每個 Pod 仍會取得專屬 IP 位址。
共用 Pod 的次要 IP 位址範圍有以下限制:
如果兩個以上的虛擬私有雲原生叢集共用 Pod 的次要 IP 位址範圍,其中一個叢集可能會使用共用 IP 位址範圍的大部分,導致其他叢集沒有足夠的 IP 位址可供擴充。
在不同類型的次要範圍中,GKE 管理和額外的 Pod 範圍都無法在叢集之間共用。
如要共用次要 IP 位址範圍,請在指令列中傳遞
--cluster-secondary-range
。 在 UI 中建立叢集時,您無法使用共用的次要範圍。
共用服務的次要 IP 位址範圍
使用使用者管理的次要範圍時,兩個以上的叢集可以同時使用服務的相同子網路次要 IPv4 位址範圍。
如要設定兩個以上的叢集共用服務的通用子網路次要 IPv4 位址範圍,請在建立每個叢集時使用相同的子網路次要 IPv4 位址範圍。無須設定額外的設定標記,即可為服務共用 IPv4 位址範圍。
共用服務的通用 IPv4 位址範圍時,每個叢集都會在內部使用整個子網路次要 IPv4 位址範圍。服務的 IP 位址是在每個叢集的節點內進行程式設計,但不會指派給任何節點的網路介面。服務 IP 位址無法在叢集的虛擬私有雲網路中透過路由傳送。服務 IP 位址只能由與服務位於同一叢集內的用戶端 Pod 使用。
當 Pod 將封包傳送至服務 IP 位址時,節點上的 iptables 或 eBPF 設定會執行目的地網路位址轉譯 (NAT),將封包的目的地 IP 位址從服務 IP 位址變更為提供服務的 Pod IP 位址。封包會根據目的地 Pod IP 位址進行路由。
共用服務的次要 IP 位址範圍可帶來下列好處:
- 減少在子網路上建立的服務專用不重複次要 IP 位址範圍數量
- 減少使用的 IP 位址數量
共用 Service 的次要 IP 位址範圍有以下限制:
- GKE 虛擬私有雲範圍 Cloud DNS 不支援共用服務的次要 IP 位址範圍。
您無法分享符合下列規則運算式的範圍:
^gke-.*-services-[abcdef0-9]{8}
如要共用服務的次要 IP 位址範圍,請在指令列中傳遞該範圍 (在 UI 中建立叢集時,無法使用共用的服務次要範圍)。
--cluster-secondary-range
節點限制範圍
指定 GKE 叢集的 Pod 和 Service 數量上限取決於叢集的次要範圍大小。叢集中的節點數量上限受限於叢集子網路的主要 IP 位址範圍和叢集的 Pod 位址範圍大小。
如果看到下列錯誤訊息,表示子網路的主要 IP 位址範圍或叢集的 Pod IP 位址範圍 (子網路的 Pod 次要 IP 位址範圍) 已用盡:
Instance [node name] creation failed: IP space of [cluster subnet] is
exhausted
如要為節點新增更多 IP 位址,可以擴充主要子網路,也可以使用不連續的多 Pod CIDR 為 Pod 新增 IP 位址。詳情請參閱「沒有足夠的 IP 空間可供 Pod 使用」。
IPv4/IPv6 雙重堆疊網路
透過 IPv4/IPv6 雙堆疊網路,您可以定義 GKE 如何將 IP 位址 (ipFamilies
) 分配給下列物件:
- 對於 Pod 和節點,GKE 會同時分配 IPv4 和 IPv6 位址。
- 對於服務,GKE 會分配單一堆疊 (僅限 IPv4 或僅限 IPv6) 或雙重堆疊位址。
在 GKE 1.24 以上版本中,您可以為獨立和共用 VPC 網路上的新 GKE 叢集啟用雙堆疊網路。您也可以在啟用雙堆疊網路時套用網路政策。 如果從 1.24 版升級至 1.25 或 1.26 版的 GKE 叢集啟用雙堆疊網路時發生驗證錯誤,請與 Google Cloud 支援團隊聯絡。
優點
雙堆疊網路具有下列優點:
- 啟用端對端 IPv6 通訊。
- 與網路位址轉譯 (NAT) 或 IP 隧道相比,可提升效能。這是因為系統不會將 IPv6 轉譯為 IPv4。
可用性
使用 GKE 雙堆疊網路時,會受到下列限制:
- 雙堆疊網路僅適用於啟用 GKE Dataplane V2 的虛擬私有雲原生叢集。
- 雙重堆疊網路僅支援自訂模式虛擬私有雲中的子網路。詳情請參閱Google Cloud 虛擬私有雲網路類型。
- 系統不支援 Pod 或節點的單一堆疊 IPv6 位址。
- 與僅限 IPv4 的叢集相比,雙堆疊叢集每個節點會消耗額外記憶體,以同時支援 IPv4 和 IPv6。設定大規模叢集時,請考量這項特性。
- 雙重堆疊叢集不支援透過 IPv6 存取私人 Google 存取權。
- GKE 1.26.0-gke.2200 以上版本支援 IPv6 (AAAA 記錄),可搭配 Cloud DNS 進行叢集內部作業和外部 DNS 查詢。
- 雙堆疊服務支援
ClusterIP
、NodePort
和LoadBalancer
服務。 - Windows 節點不支援 IPv6。
使用雙堆疊網路建立叢集前,請先考量上述限制。詳情請參閱如何建立具有雙重堆疊網路的虛擬私有雲原生叢集。
指派公開和私人 IPv6 位址
下表彙整了雙重堆疊網路行為和設定的公開與私人 IPv6 位址:
ipv6-access-type 旗標 |
IP 位址指派 | 子網路範圍 |
---|---|---|
EXTERNAL |
GKE 會指派可路由至網際網路的外部 IPv6 位址。 |
2600:1900/28 起
|
INTERNAL |
GKE 會指派無法連上網際網路的內部 IPv6 位址。 如果叢集的 |
從 fd20::/20 (這是整體 ULA 範圍的子集:fc00::/7 )。
|
詳情請參閱如何為虛擬私有雲原生叢集使用雙重堆疊網路。
架構
具有 IPv4/IPv6 雙重堆疊網路的叢集會分配下列範圍:
- 每個子網路的 /64 範圍做為主要範圍。
- 從主要範圍為每個節點指派 /96 範圍,做為主要節點 IP 位址範圍。
每個節點的 /112 範圍,來自主要節點 IP 位址範圍,用做該節點的 Pod IP 位址範圍。使用雙堆疊網路時,Pod 會從整體 Pod IP 位址範圍 (類似於節點) 取得 IPv6 位址,而不是從預留給 IPv4 位址的 Pod 次要範圍取得。
整體 Pod IP 位址範圍是由主要節點 IP 範圍中不重疊的範圍組成。因此,這個 Pod IP 範圍是不連續的。
用於服務的 /112 範圍。這個範圍來自 Google 私人位址範圍的 /64 範圍,該範圍已保留給 GKE 的次要服務 IP 位址範圍。
下圖顯示 Google Cloud 和 GKE 如何分配 IPv6 位址:
在圖中,VPC 子網路的主要範圍是 2600:1900:0:1::/64
,而 GKE 服務的保留範圍是 2600:2D00:0:4::0:0/64
。叢集中的每個節點都有一個 /96 範圍,用於主要節點 IP 位址範圍,以及一個 /112 範圍,用於 Pod IP 位址範圍。叢集也有 /112 次要服務 IP 位址範圍。
服務
您可以建立 IPv4/IPv6 雙重堆疊服務,類型為 ClusterIP
或 NodePort
。執行 1.29 以上版本的新 GKE 叢集支援 LoadBalancer
類型的雙堆疊服務。
您可以使用 ClusterIP
、NodePort
或 LoadBalancer
類型的 Service 公開 Deployment。針對每種服務類型,您可以將 ipFamilies
和 ipFamilyPolicy
欄位定義為 IPv4、IPv6 或雙堆疊服務。詳情請參閱設定 Deployment 的範例。