本文說明如何為 Google Kubernetes Engine (GKE) 叢集中的特定 Pod 指派一或多個永久 IP 位址,藉此設定可靠的通訊。對於需要高可用性的應用程式,您也可以設定這些持續性 IP 位址,以支援快速容錯移轉。
在某些情況下,如果您執行自訂網路位址轉譯 (NAT) 解決方案,您可能會希望輸出和輸入連線都使用靜態永久 IP 位址,無論是 NAT 解決方案發起連線或接收連線時都一樣。您可能也想控管分配給應用程式的 IP 位址,以便根據業務需求管理應用程式與其他系統的互動方式,或處理特定類型的要求。
根據預設,Pod 會使用介面 IP 位址傳送輸出流量。 Pod 重新啟動或移動時,介面 IP 位址會變更。如要進一步控管路由通訊,您可以手動為 GKE 中的 Pod 設定永久 IP 位址。
這些 IP 位址可以是透過網際網路通訊的外部 IP 位址,也可以是透過 Google Cloud網路通訊的內部 IP 位址。您可以選擇使用 Google 提供的 IP 位址,或自備 IP 位址 (BYOIP)。
為 GKE 中的 Pod 設定持續性 IP 位址後,您就可以對應應用程式和業務邏輯,允許特定 Pod 傳送及接收進出任何持續性 IP 位址的流量。
下圖說明具有多個網路介面的 Pod 如何使用次要網路的永久 IP 位址,同時仍透過預設網路進行通訊:
術語與概念
本頁面會使用下列概念:
閘道類別
閘道類別會管理持續性 IP 位址指派作業,並分為下列類別:
- 外部 IP 位址的 gke-persistent-regional-external-managed
- 內部 IP 位址的 gke-persistent-regional-internal-managed (僅限Google Cloud)
- 外部 IP 位址的 gke-persistent-fast-regional-external-managed, 可快速容錯移轉
適用於內部 (僅限 Google Cloud) IP 位址的 gke-persistent-fast-regional-internal-managed,可快速容錯移轉
閘道類別適用於特定區域。閘道類別提供基本的 IP 位址管理功能,主要著重於第 3 層 (L3) 網路路由。
閘道物件
閘道物件是管理及設定持續性 IP 位址的中心點。GKE 中的閘道物件會管理持續性 IP 位址集區。這些位址會列出,並定義將這些 IP 位址指派給 GKEIPRoute 的規則。
Listener
接聽器是 GKE Gateway 設定的一部分,可控管 Gateway 命名空間中哪些 Pod 可以使用 Gateway 持有的永久 IP 位址。您可以自訂接聽程式的存取權,兼顧彈性和安全性。每個接聽程式都需要不重複的名稱,並可讓您依命名空間 (所有、以標籤為準,或僅限閘道命名空間) 篩選存取權。
GKEIPRoute 物件
GKEIPRoute 物件是自訂資源,您可設定這個物件,將永久 IP 位址指派給 GKE 叢集中的特定 Pod。您可以使用 GKEIPRoute 物件的狀態部分,監控永久 IP 位址設定,並透過下列欄位取得重要資訊:
Pod
「Pod」欄位會顯示連結至持續性 IP 位址的 Pod 確切名稱。單一 Pod 可以使用多個持續性 IP 位址。
條件
「條件」欄位會顯示外部 IP 位址設定是否正常運作,如果設定無效,也有助於診斷問題。共有四項條件:
Accepted:表示GKEIPRoute資源規格是否有效。如果設定有誤,Accepted條件會顯示False,並說明原因。GCPReady:表示 Google Cloud 已準備好所有必要資源。 Google Cloud 資源佈建程序期間發生的錯誤會反映在GCPReady條件的狀態中。DPV2Ready:表示資料路徑程式設計的狀態,例如資料路徑已準備就緒並完成程式設計,可允許設定的持續性 IP 位址建立網路連線。Ready:表示您設定的固定 IP 位址有效且可運作。只要您已將應用程式設定為使用永久 IP 位址,即可透過這些位址連線至 Pod。如果前述其他三項條件也為True,這項條件就會設為True。
nodeSelector使用快速容錯移轉時,您必須使用
nodeSelector欄位指定預先設定快速容錯移轉的節點。這樣一來,發生容錯移轉時,您就能在指定節點上,使用永久 IP 位址快速啟動新的 Pod。您必須確保在這些節點上排定 Pod 的時間,並使用持續性 IP 位址。通常,您會使用 Pod 的nodeSelector來比對節點上的標籤。設定快速容錯移轉時,請使用nodeSelector欄位,並確保指定的標籤選取的節點不超過 64 個。
反應模式
反應模式會決定系統在連結至持續性 IP 位址的 Pod 發生變更時的行為,例如跨節點移動,或是可使用新建立的相符 Pod 時。即使 Pod 變更,您也可以使用反應模式,確保持續可使用永久 IP 位址。
反應模式包括:
ReadyCondition
在 ReadyCondition 模式中,持續性 IP 位址系統會優先考量 Pod 健康狀態。只有符合指定標籤且通過 Kubernetes 健康狀態探查的 Pod,才會獲得永久 IP 位址,這表示 Pod 的
Ready狀態為True。如果應用程式必須確保接收永久 IP 位址的 Pod 已完全準備好處理傳入和傳出流量,這個模式就是理想選擇。存在
「Exists」模式會優先考量 Pod 的存在狀態。如果 Pod 符合設定中的標籤,且已排定在叢集中的特定節點上執行,則會附加持續性 IP 位址。這表示 Pod 存在,且有指定的執行位置。如果需要快速指派永久 IP 位址,或在開發和測試等環境中,即時連線可能比應用程式的完整健康狀態更重要,就非常適合使用這個模式。
StatefulSets
StatefulSets 是 Kubernetes 工作負載類型,專為需要穩定 ID 和永久儲存空間的應用程式而設計。StatefulSet 中的 Pod 名稱可預測 (例如:my-app-0、my-app-1)。
部署作業
Deployment 是一種 Kubernetes 工作負載,用於管理無狀態應用程式,其中的 Pod 通常可互換。Deployment 中的 Pod 名稱無法完全預測。
用途
對於在 GKE 上執行網路相關應用程式的網路和安全服務供應商而言,GKE Pod 的永久 IP 位址可解決多種網路和安全服務使用案例。
GKE Pod 的永久 IP 位址可解決下列用途:
- 控管 NAT:將持續性 IP 位址指派給執行網路功能的 Pod,即可精細控管用於輸出流量的來源 IP 位址。這可讓您整合專屬的 NAT 邏輯。
- 專用 IP 位址集區:專用 IP 位址可讓您將特定位址與個別 5G Core Pod 相符,確保與特定供應商軟體相容。
- 可靠的流量流動:由於回程流量必須透過相同的網路功能傳回,因此持續性 IP 位址可確保外部系統辨識並回應正確的 Pod,不會中斷通訊。
- 為時間敏感型應用程式提供高可用性:對於正常運作時間有嚴格要求的應用程式 (例如電信業),您可以搭配快速容錯移轉功能使用永久 IP 位址,在發生故障時迅速將流量重新導向至運作正常的 Pod,將停機時間縮短至幾秒。
優點
GKE Pod 的永久 IP 位址可帶來下列好處:
- 外部身分:如果為 Pod 提供外部永久 IP 位址,外部系統就能持續連線至該 Pod,即使 Pod 在叢集內重新啟動或移動也一樣。這項功能適用於需要外部可探索端點的服務。
- 可靠的通訊:如果應用程式依附於具有特定 IP 位址的其他資源,就能使用持續性 IP 位址,可靠地建立連線。對於具有硬式編碼 IP 位址依附元件的舊版系統或應用程式而言,持續性 IP 位址非常重要。
- 舊版遷移:舊版遷移可協助遷移在轉換程序中需要特定 IP 位址的應用程式。
- 自備 IP:自備 IP 可讓您在 GKE 叢集中使用已擁有的特定 IP 位址範圍,並維持控制權。
- 提升應用程式運作時間:透過快速容錯移轉功能,在 Pod 發生故障時,將停機時間縮短至幾秒,大幅提升重要應用程式的運作時間。
後續步驟
- 控管與 GKE Pod 上持續性 IP 位址的通訊
- 請參閱「關於 Pod 的多網路支援功能」一文
- 請參閱「為 Pod 設定多網路支援功能」一文。