關於 Pod 的永久 IP 位址


本頁說明如何直接將一或多個永久 (靜態) IP 位址指派給 Google Kubernetes Engine (GKE) 叢集內的特定 Pod,以確保通訊穩定可靠。

在某些情況下,如果您執行自訂網路位址轉譯 (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
  • 內部 (僅限Google Cloud) IP 位址的 gke-persistent-regional-internal-managed

    閘道類別會在特定區域內運作。閘道類別提供基本的 IP 位址管理功能,主要用於第 3 層 (L3) 網路轉送。

閘道物件

閘道物件是管理及設定持續性 IP 位址的中心點。GKE 中的閘道物件會管理持續性 IP 位址集區。這些位址會列在清單中,並定義將這些 IP 位址指派給 GKEIPRoute 的規則。

Listener

接聽器是 GKE Gateway 設定的一部分,可控管 Gateway 命名空間中哪些 Pod 可以使用 Gateway 持有的永久 IP 位址。您可以自訂接聽程式的存取權,兼顧彈性和安全性。每個接聽程式都需要專屬名稱,並可依命名空間 (所有、以標籤為準,或僅限 Gateway 的命名空間) 篩選存取權。

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

回應模式

反應模式會決定系統在連結至持續性 IP 位址的 Pod 發生變更時的行為,例如跨節點移動,或是可使用新建立的相符 Pod 時。即使 Pod 發生變化,您也可以使用反應模式,確保持續可用的 IP 位址。

反應模式包括:

  • ReadyCondition

    在「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 Enterprise 上執行網路相關應用程式的網路和安全防護服務供應商,GKE Pod 的永久 IP 位址可解決多種用途。

GKE Pod 的永久 IP 位址可解決下列用途:

  • 控管 NAT:將持續性 IP 位址指派給執行網路功能的 Pod,即可精細控管用於傳出流量的來源 IP 位址。方便您整合專屬的 NAT 邏輯。
  • 專屬 IP 位址集區:專屬 IP 位址可讓您將特定位址與個別 5G Core Pod 配對,確保與特定供應商軟體的相容性。
  • 可靠的流量流動:由於回程流量必須透過相同的網路功能傳回,因此持續性 IP 位址可確保外部系統辨識並回應正確的 Pod,不會中斷通訊。

優點

GKE Pod 的永久 IP 位址可帶來下列優點:

  • 外部身分:如果為 Pod 指派外部永久 IP 位址,外部系統就能持續連線至該 Pod,即使 Pod 在叢集內重新啟動或移動也一樣。這項功能適用於需要外部可探索端點的服務。
  • 可靠的通訊:如果應用程式依附於具有特定 IP 位址的其他資源,則可使用持續性 IP 位址可靠地建立連線。對於具有硬式編碼 IP 位址依附元件的舊版系統或應用程式,持續性 IP 位址非常重要。
  • 舊版遷移:舊版遷移可協助遷移在轉換程序中需要特定 IP 位址的應用程式。
  • 自備 IP 位址 (BYOIP):BYOIP 可讓您在 GKE 叢集中使用自己擁有的特定 IP 位址範圍,維持控制權。

後續步驟