本頁說明如何在 Google Kubernetes Engine (GKE) 中建立路徑導向叢集。
總覽
在 GKE 中,叢集可根據將流量從一個 Pod 轉送至另一個 Pod 的方式來區分叢集。使用Google Cloud 路徑的叢集稱為「路徑導向叢集」。使用別名 IP 的叢集稱為「虛擬私人雲端原生叢集」。
建議使用虛擬私有雲原生類型,此為 GKE 1.21.0-gke.1500 以上版本新叢集的預設類型。如要建立路徑導向叢集,您必須明確關閉虛擬私人雲端原生選項。
事前準備
開始之前,請確認你已完成下列工作:
- 啟用 Google Kubernetes Engine API。 啟用 Google Kubernetes Engine API
- 如要使用 Google Cloud CLI 執行這項工作,請安裝並初始化 gcloud CLI。如果您先前已安裝 gcloud CLI,請執行
gcloud components update
,取得最新版本。
建立路徑導向叢集
您可以使用 gcloud CLI 或Google Cloud 控制台建立依據路徑的叢集。
gcloud
如要建立路徑導向叢集,請在叢集建立指令中加入 --no-enable-ip-alias
旗標:
gcloud container clusters create CLUSTER_NAME --no-enable-ip-alias
將 CLUSTER_NAME
替換成您為叢集選擇的名稱。
控制台
在 Google Cloud 控制台中,前往「建立 Kubernetes 叢集」頁面。
輸入叢集的名稱。
在導覽窗格的「叢集」底下,按一下 [網路]。
在「進階網路選項」底下,取消勾選「啟用虛擬私有雲原生流量轉送功能 (使用別名 IP)」核取方塊。
點選「建立」。
建立路徑導向叢集,並選取控制層 IP 範圍
根據預設,使用 Private Service Connect 的叢集會使用主要子網路範圍,佈建指派給控制層端點的內部 IP 位址。您只能在建立叢集時選取不同的子網路範圍,藉此覆寫這項預設設定。以下各節說明如何使用 Private Service Connect 建立叢集,並覆寫子網路範圍。
gcloud
使用 Private Service Connect 建立叢集:
gcloud container clusters create CLUSTER_NAME --no-enable-ip-alias \
--private-endpoint-subnetwork=SUBNET_NAME \
--location=CONTROL_PLANE_LOCATION
更改下列內容:
CLUSTER_NAME
:GKE 叢集名稱。SUBNET_NAME
:現有子網路的名稱。CONTROL_PLANE_LOCATION
:叢集控制層的 Compute Engine 位置。為地區叢集提供地區,或為區域叢集提供區域。
控制台
修課條件
如要將子網路指派給新叢集的控制層,請先新增子網路。
建立叢集並指派控制層 IP 範圍
在 Google Cloud 控制台中,前往「建立 Kubernetes 叢集」頁面。
輸入叢集的名稱。
在導覽窗格的「叢集」底下,按一下 [網路]。
在「控制層存取權」下方,設定控制層端點的存取權。
在「Advanced networking options」(進階網路選項) 部分,勾選「Override control plane's default private endpoint subnet」(覆寫控制層的預設私人端點子網路) 核取方塊。
在「Private endpoint subnet」(私有端點子網路) 清單中,選取您建立的子網路。
取消勾選「啟用虛擬私有雲原生流量轉送功能 (使用別名 IP)」核取方塊。
點選「建立」。
確認叢集使用路徑
gcloud
列出您的叢集節點:
kubectl get nodes
顯示節點名稱的輸出:
NAME STATUS ... AGE VERSION
gke-xxx-default-pool-83e239a7-kcg8 Ready ... 42m v1.9.7-gke.6
gke-xxx-default-pool-83e239a7-qm6b Ready ... 42m v1.9.7-gke.6
gke-xxx-default-pool-83e239a7-wnrq Ready ... 42m 1.9.7-gke.6
列出您的路徑:
gcloud compute routes list
在輸出中的「NEXT_HOP」NEXT_HOP欄,尋找其中一個叢集節點的名稱:
NAME NETWORK DEST_RANGE NEXT_HOP
...
[ROUTE_NAME] default 10.24.0.0/24 [YOUR_NODE_NAME]
...
在輸出中,路徑為發往特定 Pod 位址範圍的任何封包提供下一個躍點。
控制台
前往 Google Cloud 控制台的「Google Kubernetes Engine」頁面。
在叢集清單中,按一下要檢查的叢集名稱。
在「Cluster details」(叢集詳細資料) 頁面中,按一下「Nodes」(節點) 分頁標籤。
在「Nodes」(節點) 區段中,記下任何節點的名稱。
前往 Google Cloud 控制台的「Routes」(路徑) 頁面。
在路徑清單的「Next hop」(下一躍點) 欄列,尋找其中一個叢集節點的名稱。按一下該列的路徑名稱。
在「Route details」(路徑詳情) 頁面中,查看「Next hop」(下一個躍點) 區段,確認路徑為發往特定 Pod 位址範圍的任何封包提供下一個躍點。
每個節點的 Pod 數量。
在路徑導向叢集中,為每個節點分配一個 /24 範圍的 Pods IP 位址。在 /24 的範圍中,有 256 個位址,但每個節點的最大 Pod 數為 110。由於擁有的 Pod 數大約等於兩倍的可用 IP 位址,當 Pod 新增至節點或從其移除時,Kubernetes 可以減輕 IP 重複使用的問題。
Pod 位址範圍
路徑導向叢集擁有一系列用於 Pod 和 Service 的 IP 位址。即使該範圍用於 Pod 和 Service,它也稱為「Pod 位址範圍」。Pod 位址範圍的最後一個 /20 是用於 Service。一個 /20 的範圍有 212 = 4096 個位址。因此,有 4096 個地址會用於 Service,其餘範圍則用於 Pod。
在指令輸出中,Pod 位址範圍稱為 clusterIpv4Cidr
,用於 Service 的位址範圍稱為 servicesIpv4Cidr
。舉例來說,gcloud container clusters describe
的輸出會包含類似以下的輸出:
clusterIpv4Cidr: 10.96.0.0/16
...
servicesIpv4Cidr: 10.96.240.0/20
Pod 位址範圍可以是任何 RFC 1918 區塊:10.0.0.0/8
、172.16.0.0/12
或 192.168.0.0/16
。
您可以透過指定 CIDR 範圍來自訂 Pod 位址範圍。例如,您可以指定範圍 10.96.0.0/16
。
gcloud
gcloud container clusters create CLUSTER_NAME \
--no-enable-ip-alias \
--cluster-ipv4-cidr 10.96.0.0/16
將 CLUSTER_NAME
替換成您為叢集選擇的名稱。
控制台
在 Google Cloud 控制台中,前往「建立 Kubernetes 叢集」頁面。
輸入叢集的名稱。
在導覽窗格的「叢集」底下,按一下 [網路]。
在「進階網路選項」底下,取消勾選「啟用虛擬私有雲原生流量轉送功能 (使用別名 IP)」核取方塊。
在「Pod address range」(Pod 位址範圍) 欄位中輸入
10.96.0.0/16
。點選「建立」。
調整叢集大小的注意事項
指定 GKE 叢集的最大節點數、Pod 數和 Service 數,是由叢集子網路的大小,和 Pod 位址範圍的大小決定。在叢集建立後,您便無法變更 Pod 位址範圍大小。在建立叢集時,請務必選擇夠大的 Pod 位址範圍以適應叢集的預期增長。
下表說明如何為具有 900 個節點的叢集選擇足夠的位址範圍:
範圍 | 指南 |
---|---|
節點 |
節點 IP 位址是取自叢集子網路的主要範圍。您的叢集子網路必須夠大,以容納叢集中的節點總數。 例如,如果您計劃建立 900 個節點的叢集,則叢集子網路的大小必須至少為 /22。一個 /22 範圍有 210 = 1024 個位址。減去 4 個無法使用的 IP 位址後,得到 1020,可以滿足 900 個節點的需求。 |
Pod 位址範圍 |
每個節點都有一個 /24 範圍的 Pod IP 位址。一個 /24 的範圍有 28 = 256 個位址。回想一下,Pod 位址範圍中有 4096 個位址可用於 Service。Pod 位址範圍的剩餘部分用於 Pod,並且必須夠大以容納節點數 x 256 個位址。 假設您計劃建立 900 個節點的叢集。那麼您需要 900 x 256 = 230,400 個 Pod 的位址。現在假設您有一個 /14 Pod 位址範圍。 一個 /14 的範圍有218 = 262,144 個位址。減去用於 Service 的 4096 個位址,可得到 258,048,足以容納 900 個節點。 |
範圍大小的預設值和限制
下表提供了叢集子網路和 Pod 位址範圍的最小、最大和預設大小。
範圍 | 預設大小 | 大小下限 | 大小上限 |
---|---|---|---|
節點 | /20 中有 212 = 4096 個位址。減去 4 個保留位址,您將得到 4092 個節點位址。 |
/29 中有 23 = 8 個位址。減去 4 個保留位址後,您會得到 4 個節點位址。 |
/7 中有 225 個位址。此節點大約有 3300 萬個位址。 |
Pod 位址範圍 | /14 中有 218 = 262,144 個位址。 |
/19 中有 213 = 8192 個位址。 |
/9 中有 213 = 8,388,608 個位址。 |
限制
- 您無法將虛擬私有雲原生叢集遷移到路徑導向叢集。
- 您無法將路徑導向叢集遷移至虛擬私有雲原生叢集。
- 以路徑為基礎的叢集只能使用 RFC 1918 範圍內的位址做為私人 IP 位址。虛擬私有雲原生叢集有較大的可用地址範圍。
- 使用路由的叢集不支援雙重堆疊網路。