本頁面概略介紹 Google Kubernetes Engine (GKE) 的 VPC 原生叢集。
本頁面適用於為組織設計及建構網路的雲端架構師和網路專家。如要進一步瞭解 Cloud de Confiance by S3NS 內容中提及的常見角色和工作範例,請參閱「常見的 GKE 使用者角色和工作」。
總覽
在 GKE 中,叢集可根據將流量從一個 Pod 轉送至另一個 Pod 的方式來區分。
使用別名 IP 位址範圍的叢集稱為「VPC 原生叢集」。使用虛擬私有雲網路中自訂靜態路由的叢集,稱為「使用路由的叢集」。
與貴組織的網路架構師、網路管理員或任何其他網路工程師團隊合作,規劃及設計叢集設定。這些團隊負責定義、實作及維護網路架構。
VPC 原生叢集的優點
VPC 原生叢集有幾項優點:
在叢集中建立 Pod 之前,系統會在虛擬私有雲網路中預留 Pod IP 位址。這可避免與虛擬私有雲網路中的其他資源發生衝突,並讓您更妥善地規劃 IP 位址分配。
Pod IP 位址範圍不依賴自訂靜態路由。不會耗用系統產生的自訂靜態路由配額。而是由自動產生的子網路路由處理 VPC 原生叢集的路由。
您可以建立防火牆規則,僅套用至 Pod IP 位址範圍,而非叢集節點上的任何 IP 位址。
Pod IP 位址範圍和子網路次要 IP 位址範圍,通常可從使用 Cloud Router 透過 Cloud VPN 或 Cloud Interconnect 連線的地端部署網路存取。
部分功能 (例如網路端點群組 (NEG)) 僅適用於 VPC 原生叢集。
預設叢集網路模式
無論是透過 Google Cloud CLI、 Cloud de Confiance 控制台或 GKE API 建立,任何可用版本的全新叢集都預設採用虛擬私有雲原生網路模式。如要進一步瞭解可用版本,請參閱「目前版本」。
如果不想使用建議的虛擬私有雲原生網路模式,請參閱「建立使用路由的叢集」。
VPC 原生叢集的 IP 位址範圍
建立 VPC 原生叢集時,您必須在虛擬私有雲網路中指定子網路。叢集會使用下列子網路 IP 位址範圍:
IPv4 位址分配
VPC 原生叢集會為節點、Pod 和 Service 分配 IPv4 位址,如下所示。
節點 IPv4 位址:叢集會使用子網路的主要 IPv4 位址範圍,為所有節點指派 IP 位址。
Pod IPv4 位址:叢集會使用一或多個子網路次要 IPv4 位址範圍,做為所有 Pod IPv4 位址。本頁面著重於使用單一子網路次要 IPv4 位址範圍。如要瞭解如何使用多個範圍,請參閱「新增 Pod IPv4 位址範圍」。
Service IPv4 addresses:有兩個選項:
34.118.224.0/20的 Service IPv4 位址:執行 1.27 以上版本的 GKE Autopilot 叢集,以及執行 1.29 以上版本的 GKE Standard 叢集,會使用34.118.224.0/20IPv4 位址範圍做為 Service。Cloud de Confiance 會將34.118.224.0/20位址範圍用於私人用途,且不會在公開網際網路上發布這個範圍的任何路徑。您無法將這個範圍用於資源的外部 IPv4 位址。子網路次要 IPv4 位址範圍中的 Service IPv4 位址:對於所有 Service (
ClusterIP) 位址,叢集會使用與 Pod 所用範圍不同的子網路次要 IPv4 位址範圍。
IPv6 位址分配 (雙重堆疊網路)
節點和 Pod IPv6 位址:在啟用雙重堆疊網路的叢集中,節點的 IPv6 位址和所有 Pod IPv6 位址都來自節點指定的
/96IPv6 位址範圍。節點 IP 位址本身是這個範圍內的第一個/128(單一 IPv6 位址)。詳情請參閱「雙堆疊網路」。Service IPv6 位址:GKE 叢集會使用
2600:2D00:0:4::0:0/64IPv6 位址範圍做為 Service。 Cloud de Confiance會將2600:2D00:0:4::0:0/64位址範圍用於私人用途,且不會在公開網際網路上發布這個範圍的任何路徑。您無法將這個範圍用於資源的外部 IPv6 位址。
下表提供節點、Pod 和 Service 的 IP 位址範圍摘要:
| 範圍 | 說明 | 範例 |
|---|---|---|
| 節點 |
節點 IP 位址是從與叢集相關聯的子網路主要 IP 位址範圍指派。 節點 IP 位址和 Pod 的子網路次要 IP 位址範圍大小,都會限制叢集可支援的節點數量。詳情請參閱節點限制範圍。 |
如果您打算建立 900 個節點的叢集,叢集子網路的主要 IP 位址範圍必須至少為 詳情請參閱「子網路主要 IP 位址範圍」和「Pod 的子網路次要 IP 位址範圍」。 |
| 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 Service 提供位址。 在執行 1.27 以上版本的 GKE Autopilot 叢集,以及執行 1.29 以上版本的 GKE Standard 叢集中,GKE 預設會從 GKE 代管範圍 |
如果叢集最多執行 3000 個 Service,則需要 3000 個叢集 IP 位址。您需要大小為 /20 以上的次要範圍。/20 範圍的 IP 位址會產生 2(32-20) = 212 = 4,096 個 IP 位址。 詳情請參閱「Service 的子網路次要 IP 位址範圍」。 |
內部 IPv4 位址
用於 VPC 原生叢集子網路的 IPv4 位址,必須來自有效的子網路範圍。有效範圍包括私人 IPv4 位址 (例如 RFC 1918) 和私人使用的公開 IP 位址。如要進一步瞭解有效的子網路 IPv4 範圍,請參閱虛擬私有雲說明文件中的「有效範圍」和「受限制的範圍」。
如要瞭解使用非 RFC 1918 位址的私人位址相關重要資訊,請參閱「使用非 RFC 1918 私人 IPv4 位址範圍」。
如需使用私人公開 IPv4 位址範圍的重要資訊,請參閱「啟用私人公開 IP 位址範圍」。
子網路次要 IPv4 範圍指派方法
您可以將 Pod IP 位址範圍和 Service (ClusterIP) 位址範圍指派給 VPC 原生叢集。這些 IP 位址範圍可由 GKE 或使用者管理。
您必須瞭解下列重要詞彙,才能瞭解次要範圍指派方法。
指派:指派 IP 位址範圍是指將特定子網路範圍分配給 VPC 原生叢集的程序。這會建立 IP 位址集區,供叢集內的元件 (例如 Pod 和 Service) 使用。
管理:管理 IP 位址範圍是指在叢集、節點集區或 Pod 層級,持續執行建立、更新、刪除、讀取 (CRUD) 作業,這些作業與 VPC 原生叢集內指派的子網路範圍和資源分配有關。
GKE 代管的次要範圍 (預設)
如果是執行 1.27 以上版本的 GKE Autopilot 叢集,以及執行 1.29 以上版本的 GKE Standard 叢集,GKE 預設會從 GKE 代管範圍 34.118.224.0/20 指派 Service 的 IP 位址。這樣一來,您就不必為服務指定自己的 IP 位址範圍。請注意以下事項:
- 您可以使用
--services-ipv4-cidr旗標,為 Service 指定自訂範圍。 - 如果只使用
--services-ipv4-cidr旗標指定範圍「大小」(例如/22),GKE 仍會使用 GKE 代管範圍取得位址子範圍。 - 如果只指定 Pod IP 位址範圍的大小 (例如
--cluster-ipv4-cidr=/17),GKE 會自動從虛擬私有雲網路中選取可用的次要 IP 位址範圍。 - 使用 GKE 代管範圍時,GKE 不會為 Service 建立獨立的次要 IP 位址範圍。
使用者自行管理
如要完全控管 IP 位址分配,您可以手動管理 VPC 原生叢集的子網路。
您可以建立子網路的次要 IP 位址範圍,然後建立使用這些範圍的叢集。建立叢集時,請指定 Pod 和 Service 的子網路範圍名稱。如果手動建立次要範圍,則須自行管理。
如果不使用不連續的多 Pod CIDR,可建立的最小 IP 位址範圍是 /28,但該範圍只能建立 1 個節點,最多 8 個 Pod。請務必使用足夠大的範圍,以容納所需節點數量上限。
最小可用範圍也取決於每個節點的 Pod 數量上限。
請參閱「Standard 叢集中的 Pod CIDR 範圍」一文中的表格,瞭解每個節點的 Pod 數量上限值對應的最小可用 CIDR 範圍。
如果 Pod 的 IP 位址範圍用盡,請務必採取下列其中一項做法:
- 建立新的叢集,並採用更大的 Pod 位址範圍。
- 降低節點集區的
--max-pods-per-node後,重新建立節點集區。 - 使用不連續的多 Pod CIDR 擴充次要 Pod IP 位址範圍。
與使用路由的叢集之間的差異
Pod 和 Service (ClusterIP) 位址的分配配置,與使用路由的叢集所用的配置不同。您必須在叢集的子網路中選擇或建立兩個次要 IP 位址範圍,一個用於 Pod,另一個用於 Service,而不是同時為 Pod 和 Service 指定單一 CIDR。
Shared VPC 注意事項
在共用虛擬私有雲環境中建立 VPC 原生叢集時,專案擁有者、編輯者或在共用虛擬私有雲主機專案中具備網路管理員角色的 Identity and Access Management (IAM) 主體,必須手動建立叢集的子網路和次要 IP 位址範圍。建立叢集的服務專案管理員,至少必須具備共用虛擬私有雲網路主專案中子網路的子網路層級權限。
在 Shared VPC 環境中,GKE 無法管理次要 IP 位址範圍。共用虛擬私有雲主專案中的網路管理員必須先建立子網路和次要 IP 位址範圍,您才能建立叢集。如需在 Shared VPC 虛擬私有雲網路中設定 VPC 原生叢集的範例,請參閱「使用 Shared VPC 設定叢集」。
IP 位址範圍規劃
請參閱下列各節的資訊,計算叢集所用子網路的主要和次要 IP 位址範圍大小。
GKE IP 位址計算機
您可以使用這項計算工具,規劃虛擬私有雲原生標準叢集的 IP 位址分配方式,其中每個節點集區的每個節點都有固定的 Pod 數量上限。您可以輸入節點和 Pod 數量,決定適當的子網路前置字元大小,也可以輸入子網路大小,查看支援的節點和 Pod 數量上限。這項工具會分配足夠的 IP 位址範圍,避免叢集擴充時用盡。
子網路主要 IPv4 位址範圍
規劃叢集子網路的主要 IPv4 位址範圍時,請考量下列事項:
- 每個子網路都必須有主要 IP 位址範圍。GKE 會使用這個 IP 位址範圍,為內部負載平衡器和節點分配 IP 位址。
- 子網路建立後,您無法縮減或變更其主要 IP 位址範圍。
- 建立子網路後,您可以擴充主要 IP 位址範圍,但無法縮減。如果擴充的子網路是由具有授權網路的叢集使用,則必須將擴充的 IP 位址範圍新增至控制層授權網路清單。展開範圍前,請務必詳閱「展開主要 IPv4 範圍」中的限制和建議。
- 主要 IP 位址範圍的前兩個和最後兩個 IP 位址由Cloud de Confiance保留。
- 採用 Private Service Connect 的叢集會使用主要子網路範圍,佈建指派給控制層端點的內部 IP 位址。不過,您可以使用
private-endpoint-subnetwork旗標覆寫這項 IP 位址佈建作業。詳情請參閱「建立叢集並選取控制層 IP 位址範圍」。
下表列出根據子網路主要 IPv4 位址範圍的大小和叢集設定,可建立的節點數量上限:
- 情境 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 個節點 |
| /9 子網路主要 IP 位址範圍的大小上限 |
8,388,604 個節點 | 8,388,603 個節點 |
擴大主要 IP 位址範圍
如果主要 IP 位址範圍內的 IP 位址用盡,您隨時可以擴充主要 IP 位址範圍,即使 Cloud de Confiance 資源 (例如負載平衡器和網路端點群組) 使用子網路,也沒問題。
擴大主要 IP 位址範圍前,請先考量下列事項:
- 子網路中不得有重疊的 IP 位址範圍。
- GKE 會使用主要 IP 位址範圍,為內部負載平衡器和節點分配 IP 位址。
- 如果叢集使用授權網路,您必須將擴充的主要 IP 位址範圍新增至授權網路清單。
實用公式
您可以使用下列公式:
計算在採用預設子網路的叢集中,指定網路遮罩可支援的節點數量上限 N。使用 S 做為網路遮罩的大小,有效範圍介於
9至29之間 (含)。$$ N = 2^{(32 - S)} - 4 $$計算網路遮罩的大小 S,以支援最多 N 個節點:
$$ S = 32 - \lceil{log_2(N + 4)}\rceil $$\( \lceil{ }\rceil \) 是上限 (最小整數) 函式,也就是無條件進位至下一個整數。網路遮罩大小 S 的有效範圍介於
9和29之間 (含頭尾)。
在未使用 private-endpoint-subnetwork 旗標的 Private Service Connect 叢集中,您可以使用上述公式,但請將 N 的值減 1。
Pod 次要 IP 位址範圍的叢集大小考量
如要計算叢集可支援的 Pod 數量上限,請考量 Pod 子網路的大小,以及每個節點的 Pod 數量上限。Pod 數量上限取決於子網路遮罩和每個節點的 Pod 數量上限。此外,請注意,主要範圍中會保留部分 IP 位址。
重要變數
Q:每個節點的 Pod 數量上限。DS:為 Pod 子網路選取的 CIDR 區塊大小 (例如/17)。M:每個節點 Pod 範圍的網路遮罩大小。HM:節點 Pod 範圍網路遮罩的主機位元數。HD:Pod 子網路 CIDR 區塊的主機位元數。MN:可支援的節點數量上限。MP:可支援的 Pod 數量上限。S:子網路主要 IP 位址範圍的前置碼長度。N:子網路主要 IP 位址範圍內可用的 IP 位址數量。
計算 Pod 數量上限的步驟
決定每個節點的 Pod 數量上限 (
Q):- 如果是 Autopilot 叢集,
Q的值會固定為 32。 - 如果是 Standard 叢集,您可以設定
Q。
- 如果是 Autopilot 叢集,
定義 Pod 子網路的 CIDR 區塊大小 (
DS):- 決定 Pod 子網路所選的 CIDR 區塊大小 (例如
/17)。
- 決定 Pod 子網路所選的 CIDR 區塊大小 (例如
計算網路遮罩大小 (
M):$$ M = 31 - \lceil{log_2(Q)}\rceil $$將
Q替換為每個節點的 Pod 數量上限值。使用 ceiling 函式 (\( \lceil \rceil \)) 無條件進位至最接近的整數。計算 Pod 範圍 (
HM) 的主機位元:$$ HM = 32 - M $$計算所選 CIDR 區塊 (
HD) 的主機位元:$$ HD = 32 - DS $$計算節點數量上限 (
MN):$$ MN = 2^{(HD - HM)} $$計算結果即為所選 Pod 子網路可支援的節點數量上限。
計算 Pod 數量上限 (
MP):$$ MP = MN * Q $$計算結果就是叢集可支援的 Pod 數量上限。
計算主要範圍 (
N) 中可用的 IP 位址數量:$$ N = 2^{(32 - S)} - 4 $$其中
S是子網路主要 CIDR 範圍的前置碼長度。
重要注意事項
- 次要範圍中的所有 IP 位址都可供 Pod 使用。
- 這些計算結果提供的是「理論上」的最大值。實際效能可能會受到其他因素影響。
範例
假設您要建立 GKE Autopilot 叢集,並採用下列設定:
- Pod 子網路 CIDR 區塊為
/17(DS= 17)。 - 每個節點最多 32 個 Pod (
Q= 32)。
計算 Pod 數量上限:
- \( M = 31 - \lceil{log_2(32)}\rceil = 26 \)
- \( HM = 32 - 26 = 6 \)
- \( HD = 32 - 17 = 15 \)
- \( MN = 2^{(15 - 6)} = 512 \)
- \( MP = 512 * 32 = 16384 \)
這個叢集最多可支援 512 個節點和 16,384 個 Pod。
如要為 Pod 新增更多 IPv4 位址,請新增 Pod IPv4 位址範圍,或將子網路新增至叢集。
Service 的子網路次要 IP 位址範圍
請仔細規劃 Service 的次要 IP 位址範圍。由於這也是子網路次要 IP 位址範圍,因此叢集建立後即無法變更。
如果您使用多叢集服務,ServiceImport 物件會使用 Service 的次要 IP 位址範圍中的 IP 位址。
在執行 1.27 以上版本的 GKE Autopilot 叢集,以及執行 1.29 以上版本的 GKE Standard 叢集中,GKE 預設會從 GKE 代管範圍 34.118.224.0/20 為 Service 指派 IP 位址。這樣一來,您就不必為服務指定自己的 IP 位址範圍。請注意以下事項:
- 您也可以使用
--services-ipv4-cidr旗標或--services-secondary-range-name旗標,為 Service 指定自訂範圍。 - 如果只使用
--services-ipv4-cidr旗標指定範圍「大小」(例如/22),GKE 仍會使用 GKE 代管範圍取得位址子範圍。 - 使用 Google 代管範圍時,GKE 不會為 Service 建立獨立的次要 IP 位址範圍。GKE 代管範圍不會使用子網路的次要 IP 位址範圍配額。
下表顯示在子網路中,Service 的次要 IP 位址範圍大小,以及使用該子網路在單一叢集中可建立的 Service 數量上限。
| Service 的次要 IP 範圍 | 服務數量上限 |
|---|---|
| /28 次要範圍指派方法為使用者自行管理時,最小的 Service 位址範圍 |
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 位址範圍,以及 Service 的次要 IP 位址範圍。Standard 和 Autopilot 叢集都適用這項行為。
如果由集中團隊管理叢集的基礎架構,您可能需要共用 IP 位址範圍。您可以為 Pod、Service 和節點建立三個範圍,並重複使用或共用這些範圍,特別是在 Shared VPC 模型中,這樣可以減少負擔。此外,網路管理員不必為每個叢集建立特定子網路,因此能更輕鬆地管理 IP 位址。
共用控制層的自訂子網路範圍
根據預設,GKE 會使用主要子網路範圍,佈建控制層的內部端點。不過,在具有 Private Service Connect 的叢集中,您可以設定 GKE,從您建立的其他子網路佈建內部端點。您可以在其他叢集之間共用這個子網路,如果使用 Shared VPC,也可以跨專案共用。
共用節點的主要 IP 位址範圍
如果您在子網路中建立多個叢集,系統預設會共用節點的主要 IP 位址範圍。
共用節點的主要 IP 位址有下列限制:
- 如果您與兩個以上的 VPC 原生叢集共用節點的主要 IP 位址範圍,其中一個叢集可能會使用大部分的共用 IP 位址範圍,導致其他叢集沒有足夠的 IP 位址可擴充。
共用 Pod 的次要 IP 位址範圍
共用 Pod 的次要範圍時,每個 Pod 仍會取得不重複的 IP 位址。
共用 Pod 的次要 IP 位址範圍時,有下列限制:
如果與兩個以上的 VPC 原生叢集共用 Pod 的次要 IP 位址範圍,其中一個叢集可能會使用大部分的共用 IP 位址範圍,導致其他叢集沒有足夠的 IP 位址可擴充。
如要共用次要 IP 位址範圍,請使用
--cluster-secondary-range在指令列中傳遞。在使用者介面中建立叢集時,無法使用共用的次要範圍。
共用 Service 的次要 IP 位址範圍
如果使用使用者自行管理的次要範圍,兩個以上的叢集可以同時使用相同的子網路次要 IPv4 位址範圍。
如要設定兩個以上的叢集,共用 Service 的子網路次要 IPv4 位址範圍,請在建立各個叢集時,使用相同的子網路次要 IPv4 位址範圍。如要為 Service 共用一般 IPv4 位址範圍,不需另外設定旗標。
共用 Service 的通用 IPv4 位址範圍時,每個叢集都會在內部使用 Service 的整個子網路次要 IPv4 位址範圍。Service 的 IP 位址是在每個叢集的節點中設定,但不會指派給任何節點的網路介面。Service IP 位址無法在叢集的虛擬私有雲網路中轉送。Service IP 位址只能由與 Service 位於相同叢集內的用戶端 Pod 使用。
當 Pod 將封包傳送至 Service IP 位址時,節點上的 iptables 或 eBPF 設定會執行目的地網路位址轉譯 (NAT),將封包的目的地 IP 位址從 Service IP 位址變更為提供服務的 Pod IP 位址。封包會根據目的地 Pod IP 位址轉送。
共用 Service 的次要 IP 位址範圍有下列好處:
- 減少在子網路上建立的 Service 不重複次要 IP 位址範圍數量
- 使用較少 IP 位址
共用 Service 的次要 IP 位址範圍時,須遵守下列限制:
- GKE 虛擬私有雲範圍 Cloud DNS 不支援共用 Service 的次要 IP 位址範圍。
您無法共用符合下列規則運算式的範圍:
^gke-.*-services-[abcdef0-9]{8}如要共用服務的次要 IP 位址範圍,請使用
--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 位址。詳情請參閱「Pod 的可用 IP 位址空間不足」。
IPv4/IPv6 雙重堆疊網路
透過 IPv4/IPv6 雙重堆疊網路,您可以定義 GKE 如何將 IP 位址 (ipFamilies) 分配給下列物件:
- GKE 會為 Pod 和節點分配 IPv4 和 IPv6 位址。
- 針對 Service,GKE 會分配單一堆疊 (僅限 IPv4 或僅限 IPv6) 或雙重堆疊位址。
在 GKE 1.24 以上版本中,您可以為獨立和 Shared VPC 網路上的新 GKE 叢集啟用雙堆疊網路。您也可以在啟用雙堆疊網路功能後套用網路政策。
優點
雙堆疊網路具有下列優點:
- 啟用端對端 IPv6 通訊。
- 與網路位址轉譯 (NAT) 或 IP 隧道相比,可提供更佳的效能。這是因為沒有 IPv6 到 IPv4 的轉譯。
可用性
GKE 雙堆疊網路有下列限制:
- 雙堆疊網路僅適用於已啟用 GKE Dataplane V2 的 VPC 原生叢集。
- 雙堆疊網路僅支援自訂模式虛擬私有雲中的子網路。詳情請參閱「Cloud de Confiance 虛擬私有雲網路類型」。
- 不支援 Pod 或節點的單一堆疊 IPv6 位址。
- 相較於僅支援 IPv4 的叢集,雙堆疊叢集每個節點會耗用額外記憶體,以同時支援 IPv4 和 IPv6。設定大型叢集時,請考量這項特性。
- 雙重堆疊叢集不支援透過 IPv6 使用 Private Google Access。
- GKE 1.26.0-gke.2200 以上版本支援 IPv6 (AAAA 記錄),可搭配 Cloud DNS 執行叢集內部作業和外部 DNS 查詢。
ClusterIP、NodePort和LoadBalancer服務支援雙堆疊服務。- Windows 節點不支援 IPv6。
建立採用雙堆疊網路的叢集前,請先考量上述限制。詳情請參閱「如何建立採用雙堆疊網路的 VPC 原生叢集」。
指派公開和私人 IPv6 位址
下表摘要說明公開和私人 IPv6 位址,以及雙重堆疊網路行為和設定:
ipv6-access-type 旗標 |
IP 位址指派 | 子網路範圍 |
|---|---|---|
EXTERNAL |
GKE 會指派可轉送至網際網路的外部 IPv6 位址。 |
來自 2600:1900/28
|
INTERNAL |
GKE 指派的內部 IPv6 位址無法轉送至網際網路。 IPv6 存取權類型為 |
來自 fd20::/20 (整體 ULA 範圍 fc00::/7 的子集)。
|
詳情請參閱「如何為 VPC 原生叢集使用雙重堆疊網路」。
架構
採用 IPv4/IPv6 雙重堆疊網路的叢集會分配到下列範圍:
- 每個子網路的主要範圍為 /64 範圍。
- 主要範圍中的 /96 每個節點範圍,做為主要節點 IP 位址範圍。
從主要節點 IP 位址範圍中,為每個節點分配一個 /112 範圍,做為該節點的 Pod IP 位址範圍。在雙重堆疊網路中,Pod 會從整體 Pod IP 位址範圍 (類似於節點) 取得 IPv6 位址,而不是從保留給 IPv4 位址的 Pod 次要範圍取得。
整體 Pod IP 位址範圍包含主要節點 IP 範圍中不重疊的範圍。因此,這個 Pod IP 範圍不連續。
用於 Service 的 /112 範圍。這個範圍來自 Google 私人位址範圍的 /64 範圍,該範圍已保留給 GKE 的次要服務 IP 位址範圍。
下圖顯示 Cloud de Confiance 和 GKE 如何分配 IPv6 位址:
在圖表中,虛擬私有雲子網路的主要範圍是 2600:1900:0:1::/64,GKE 服務的保留範圍則是 2600:2D00:0:4::0:0/64。叢集中的每個節點都有 /96 範圍的主要節點 IP 位址範圍,以及 /112 範圍的 Pod IP 位址範圍。叢集也有 /112 次要 Service IP 位址範圍。
服務
您可以建立 ClusterIP 或 NodePort 類型的 IPv4/IPv6 雙重堆疊 Service。執行 1.29 以上版本的新 GKE 叢集支援 LoadBalancer 類型的雙堆疊 Service。
您可以使用 ClusterIP、NodePort 或 LoadBalancer 類型的 Service 公開 Deployment。針對上述每種 Service 類型,您可以將 ipFamilies 和 ipFamilyPolicy 欄位定義為 IPv4、IPv6 或雙堆疊 Service。詳情請參閱如何設定 Deployment 的範例。