建立依據路徑的叢集

此頁顯示如何在 Google Kubernetes Engine 中建立依據路徑的叢集。

總覽

在 Google Kubernetes Engine 中,可以根據將流量從一個 Pod 轉送到另一個 Pod 的方式來區分叢集。使用 Google Cloud Platform 路徑的叢集稱為「依據路徑的叢集」。使用別名 IP 範圍的叢集稱為「虛擬私人雲端原生叢集」

預設情況下,新叢集會使用依據路徑的網路模式來建立。

事前準備

如要準備這項工作,請執行下列步驟:

  • 確認您已啟用 Google Kubernetes Engine API。
  • 啟用 Google Kubernetes Engine API
  • 確認您已安裝 Cloud SDK
  • 設定預設的專案 ID
    gcloud config set project [PROJECT_ID]
  • 如果您使用區域叢集,請設定預設的運算區域
    gcloud config set compute/zone [COMPUTE_ZONE]
  • 如果您使用地區叢集,請設定預設的運算地區
    gcloud config set compute/region [COMPUTE_REGION]
  • gcloud 更新到最新版本:
    gcloud components update

建立依據路徑的叢集

gcloud

使用 gcloud 建立依據路徑的叢集:

gcloud container clusters create [CLUSTER_NAME]

其中 [CLUSTER_NAME] 是您為叢集選擇的名稱。

主控台

  1. 造訪 GCP 主控台的 Google Kubernetes Engine 選單。

    造訪 Google Kubernetes Engine 選單

  2. 按一下 [Create cluster] (建立叢集)

  3. 輸入叢集的名稱。

  4. 按一下 [Create] (建立)

驗證您的叢集是否使用路徑

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」列,尋找其中一個叢集結點的名稱:

NAME                 NETWORK        DEST_RANGE         NEXT_HOP
...
[ROUTE_NAME]         default        10.24.0.0/24       [YOUR_NODE_NAME]
...

在輸出中,您可以看到路徑為發往特定 Pod 位址範圍的任何封包提供下一個躍點。

主控台

  1. 造訪 GCP 主控台的 Google Kubernetes Engine 選單。

    造訪 Google Kubernetes Engine 選單

  2. 按一下叢集名稱以開啟叢集詳細資料頁面。

  3. 在 [Node Pools] (節點集區) 下找到 [Instance groups] (執行個體群組),按一下執行個體群組的名稱。此時,「Instance groups」(執行個體群組) 頁面將開啟,並顯示您的叢集節點清單;請記下您的節點名稱。

  4. 前往 GCP 主控台中的「Routes」(路徑) 頁面。

    前往「Routes」(路徑) 頁面

  5. 在路徑清單的「Next hop」(下一躍點) 欄列,尋找其中一個叢集節點的名稱。按一下該列中的路徑名稱。

  6. 在「Route details」(路徑詳情) 頁面中,您可以看到路徑為發往特定 Pod 位址範圍的任何封包提供下一個躍點。

每個節點的 Pod 數量。

在根據路由的叢集中,為每個節點分配一個 /24 範圍的 Pods IP 位址。在 /24 的範圍中,有 256 個位址,但每個節點的最大 Pod 數為 110。由於擁有的 Pod 數大約等於兩倍的可用 IP 位址,當 Pod 被新增至節點或從其移除時,Kubernetes 可以減輕 IP 重複使用的問題。

Pod 位址範圍

根據路徑的叢集擁有一系列用於 Pod 和服務的 IP 位址。即使該範圍用於 Pod 和服務,它也稱為「Pod 位址範圍」。Pod 位址範圍的最後一個 /20 是用於服務。一個 /20 的範圍有 212 = 4096 個位址。因此,有 4096 個地址會用於服務,其餘範圍則用於 Pod。

在指令輸出中,Pod 位址範圍稱為 clusterIPv4Cidr,用於服務的位址範圍稱為 servicesIpv4Cidr。例如,gcloud container clusters describe 輸出包括類似以下的輸出:

clusterIpv4Cidr: 10.96.0.0/16
...
servicesIpv4Cidr: 10.96.240.0/20

若是 GKE 1.7 及更高版本,Pod 位址範圍可以來自任何 RFC 1918 區塊:10.0.0.0/8、172.16.0.0/12 或 192.168.0.0/16。若為較早期版本,Pod 位址範圍必須為 10.0.0.0/8。

您可以透過指定 CIDR 範圍來自訂 Pod 位址範圍。例如,您可以指定範圍 10.96.0.0/16

gcloud

gcloud container clusters create [CLUSTER_NAME] \
    --cluster-ipv4-cidr 10.96.0.0/16

其中 [CLUSTER_NAME] 是您為叢集選擇的名稱。

主控台

  1. 造訪 GCP 主控台的 Google Kubernetes Engine 選單。

    造訪 Google Kubernetes Engine 選單

  2. 按一下 [Create cluster] (建立叢集)

  3. 輸入叢集的名稱。

  4. 按一下 [Advanced options] (進階選項)

  5. 在「Pod address range」(Pod 位址範圍) 中輸入 10.96.0.0/16

  6. 按一下 [Create] (建立)

調整叢集大小的注意事項

指定 GKE 叢集的最大節點數、Pod 數和服務數,是由叢集子網路的大小,和 Pod 位址範圍的大小決定。在叢及建立後,您便無法變更 Pod 位址範圍大小。在建立從集時,請務必選擇夠大的 Pod 位址範圍以適應叢集的預期增長。

下表說明如何為具有 900 個節點的叢集選擇足夠的位址範圍:

範圍 指南
節點

節點 IP 位址是取自叢集子網路的主要範圍。您的叢集子網路必須夠大,以容納叢集中的節點總數。

例如,如果您計劃建立 900 個節點的叢集,則叢集子網路的大小必須至少為 /22。一個 /22 範圍有 210 = 1024 個位址。減去4 個保留的 IP 位址後,得到 1020,可以滿足 900 個節點的需求。

Pod 位址範圍

每個節點都有一個 /24 範圍的 Pods IP 位址。一個 /24 的範圍有 28 = 256 個位址。回想一下,Pod 位址範圍中有 4096 個位址可用於服務。Pod 位址範圍的剩餘部分用於 Pod,並且必須夠大以容納節點數 x 256 個位址。

假設您計劃建立 900 個節點的叢集。那麼您需要 900 x 256 = 230,400 個 Pod 的位址。現在假設您有一個 /14 Pod 位址範圍。一個 /14 的範圍有 218 = 262,144 個位址。減去用於服務的 4096 個位址,可得到 258,048,足以容納 900 個節點。

範圍大小的預設值和限制

下表提供了叢集子網路和 Pod 位址範圍的最小、最大和預設大小。

範圍 預設大小 大小下限 大小上限
節點

/20 中有 212 = 4,096 個位址。減去 4 個保留位址,您將得到 4092 個節點位址。

/29 中有 23 = 8 個位址。減去 4 個保留位址後,您會得到 4 個節點位址。

/7 中有 225 個位址。此節點大約有 3300 萬個位址。

Pod 位址範圍

/14 中有 218 = 262,144 個位址。

/19 中有 213 = 8192 個位址。

/9 中有 223 = 8,388,608 個位址。

限制

  • 您無法將虛擬私人雲端原生叢集遷移到根據路徑的叢集。
  • 您無法將根據路徑的叢集遷移到虛擬私人雲端原生叢集。

後續步驟

本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
Kubernetes Engine 說明文件