觀點 · 資訊分享

GKE 混合協定負載平衡正式上線:TCP 與 UDP 共用一個 IP,Dataplane V2 節點上限也翻倍

Google Kubernetes Engine 在 7/27 公布兩項更新:LoadBalancer 服務可同時處理 TCP 與 UDP 並共用同一個 IP(GA),以及 1.36 版 Dataplane V2 搭配 NetworkPolicy 的單叢集節點上限由 7,500 提高到 15,000。

發布
2026-07-27
篇幅
約 4 分鐘 · 1,608 字
結構
8 節 + 3 題常見問題
標籤
#Google Cloud#GKE#負載平衡#Kubernetes
GKE 混合協定負載平衡正式上線:TCP 與 UDP 共用一個 IP,Dataplane V2 節點上限也翻倍

一句話看懂:GKE 的 LoadBalancer 服務現在可以同一個 IP 同時接 TCP 與 UDP(正式版),另外 Dataplane V2 搭配 NetworkPolicy 的單叢集節點上限,也從 7,500 提高到 15,000。

GKE 混合協定 LB 正式上線,節點上限翻倍資訊圖卡:GKE 混合協定負載平衡正式 GA,TCP 與 UDP 共用同一個 IP

先用白話講:TCP、UDP 與負載平衡器

網路傳資料有兩種常見方式:TCP 像掛號信,確認對方收到才算完成,網頁、API 都用它;UDP 像平信,丟出去就算,速度快,常用在即時語音、影音、遊戲與 DNS。

負載平衡器則是大樓的櫃台,把進來的訪客分給後面的多台伺服器。以前 GKE 要對外開放一個同時用到 TCP 與 UDP 的應用,通常得開兩個 LoadBalancer 服務,連帶有兩個 IP;現在一個就夠了。

發生什麼事

GKE 在 7 月 27 日的發行說明中公布兩項更新:

  • 混合協定 LoadBalancer 服務正式上線(GA):內部與外部的直通式網路負載平衡器,都能在同一個 IP 上同時處理 TCP 與 UDP,支援 IPv4、IPv6 與雙協定,需要 1.36.2-gke.1498000 以上版本。正式版也修正了預覽階段的流量路由錯誤
  • Dataplane V2 的節點上限提高:1.36 以上版本,Dataplane V2 搭配 NetworkPolicy 的單叢集節點上限由 7,500 提高到 15,000;超過 5,000 個節點的叢集,要聯絡 Cloud 客戶支援申請配額

混合協定怎麼設定?

官方文件的外部負載平衡器範例,重點是指定 loadBalancerClass,並在 ports 同時列出兩種協定:

apiVersion: v1
kind: Service
metadata:
  name: mixed-protocol-external-lb
spec:
  loadBalancerClass: "networking.gke.io/l4-regional-external"
  type: LoadBalancer
  selector:
    app: mixed-app
  ports:
    - name: tcp-port
      protocol: TCP
      port: 8080
    - name: udp-port
      protocol: UDP
      port: 8080

內部版本把 loadBalancerClass 改成 networking.gke.io/l4-regional-internal 即可。

使用前要知道的限制

  • 叢集必須啟用 HttpLoadBalancing 附加元件;內部負載平衡器還要啟用 GKE 子集功能
  • 1.34.1 到 1.36.2 之前的版本,只支援外部、IPv4 的混合協定
  • 帶有 gke.networking.io/l4-ilb-v1 或 l4-netlb-v1 終結器的既有服務不能直接用,要刪除後重建
  • 更新連接埠可能造成短暫的流量中斷
  • 不能掛 Private Service Connect

計費差別

依官方文件,計費項目是轉發規則、外部 IP 位址與傳送的資料量。1.36.2-gke.1498000 以上的外部混合協定使用單一的 L3 轉發規則;更早的版本則是 TCP、UDP 各一條,共 2 條。

我的看法

這個更新對「只有網頁與 API」的團隊沒有太大感覺,但對要在 Kubernetes 上開 UDP 的服務很實用,例如自架 DNS、即時語音或是遊戲伺服器。以前兩個 IP 要分別處理防火牆、DNS 紀錄,客戶端也得記兩組,現在可以收斂成一個。

15,000 節點的上限對小團隊幾乎碰不到,不過它透露一件事:GKE 在大型叢集裡,網路政策的規模限制正在往上推。提醒一下,正式使用前要先確認叢集版本與既有服務的終結器,這類「要刪除重建」的限制,最好在測試環境先走過一遍。

名詞小辭典

  • TCP/UDP:網路傳資料的兩種方式,前者確認送達、後者追求速度。
  • 負載平衡器:把流量分配給多台伺服器的設備或服務。
  • GKE:Google 提供的託管 Kubernetes 服務。
  • Dataplane V2:GKE 的新一代網路資料平面,支援網路政策。

資料來源

常見問題

什麼是混合協定負載平衡?
以前常需要為同一個應用的 TCP 與 UDP 流量各建一個服務,也就會有兩個 IP。混合協定讓同一個 LoadBalancer 服務同時接 TCP 與 UDP,對外只有一個 IP,適合同時要用兩種協定的服務。
它怎麼設定?
官方文件的做法是在 Service 的 spec.loadBalancerClass 指定 networking.gke.io/l4-regional-external(外部)或 networking.gke.io/l4-regional-internal(內部),並在 ports 裡同時列出 TCP 與 UDP。叢集需啟用 HttpLoadBalancing 附加元件,內部負載平衡器還要啟用 GKE 子集功能。
要多付錢嗎?
照一般的 Google Cloud 計費:依轉發規則數、外部 IP 位址與傳送資料量計費。依官方文件,1.36.2-gke.1498000 以上的外部 IPv4 混合協定使用 1 條轉發規則、1 個外部 IP;舊版本的外部混合協定要用 2 條轉發規則。
LINE