GCP 架構

Kubernetes 的發源地:Google Kubernetes Engine(GKE)與 GKE Autopilot 深度解析

GKE 是 Google 對外提供的 Kubernetes 託管服務,而 Kubernetes 這個專案本身的設計思路,深受 Google 內部用了十幾年的叢集管理系統 Borg 影響。GKE 有兩種操作模式:標準模式讓你自己管理節點的規格與數量,Autopilot 模式則把節點層完全交給 Google,依 Pod 實際用量計費,兩者的取捨核心在於你想不想自己碰節點。
Kubernetes 的發源地:Google Kubernetes Engine(GKE)與 GKE Autopilot 深度解析:文章重點卡

Kubernetes 的發源地:Google Kubernetes Engine(GKE)與 GKE Autopilot 深度解析

很多人學 Kubernetes 的時候,會把它當成一個從天而降的新技術。但如果回頭看它的血緣,會發現這其實是一段已經跑了二十年的老故事,主角是 Google 內部一套叫做 Borg 的系統。

這篇想把兩件事講清楚:Kubernetes 跟 Borg 之間的關係到底是什麼,以及 Google Cloud 對外提供的 GKE,標準模式跟 Autopilot 模式該怎麼選,才不會選錯之後在維運上吃虧。

你將學到什麼

血緣:Borg 到 Kubernetes

Google 內部跑了十幾年的叢集管理系統 Borg,直接影響了 Kubernetes 的設計思路。

GKE 標準模式

你決定節點的機型與數量,換來對底層的完整控制,也扛下對應的維運責任。

GKE Autopilot 模式

節點層完全交給 Google 管理,依 Pod 實際使用的運算資源計費,不用自己顧節點。

怎麼選不會後悔

判斷標準是你的團隊有沒有精力顧節點層,而不是哪個模式聽起來比較先進。

理解 GKE 最快的方式,不是先背名詞,而是先搞懂 Google 為什麼會做出 Kubernetes,以及它想解決的問題原本長什麼樣子。

血緣:從 Borg 到 Kubernetes

在 Kubernetes 出現之前很多年,Google 內部就已經在用一套叫做 Borg 的系統,管理跨越好幾千台機器的容器化工作負載。官方在 2015 年正式對外發表了描述 Borg 設計的論文。

Kubernetes 在 2014 年由幾位工程師發起,後續加入的開發者裡有不少來自 Borg 團隊。Google 官方多次公開說明,Kubernetes 的設計深受 Borg 與另一個內部實驗性系統 Omega 的影響。

這段歷史的實際意義是:Kubernetes 處理的很多「棘手問題」,例如排程、健康檢查、滾動更新,Google 內部其實已經用真實流量驗證了十幾年,不是憑空設計出來的理論。

不是同一套程式碼

需要澄清一個常見誤解:Kubernetes 不是 Borg 開源之後的版本,而是重新設計、重新寫的獨立專案。血緣指的是設計思路與核心開發者的經驗傳承,不是程式碼本身的延續。

GKE:Google 把這套經驗包裝成對外服務

Google Kubernetes Engine 是 Google Cloud 對外提供的 Kubernetes 託管服務,官方在 2015 年推出。它把建立、升級、修補、監控叢集這些原本要自己動手的工作,變成一個受管理的服務。

GKE 有兩種操作模式,這是這篇文章要花最多篇幅講清楚的部分:標準模式與 Autopilot 模式。兩者共用同一套 Kubernetes API,差別在於「節點層由誰管理」。

GKE 標準模式:你決定節點,你負責節點

標準模式下,你要自己決定節點池用什麼機型、開幾台、怎麼設定自動擴縮的上下限。好處是控制權完整,你可以針對特殊硬體需求或成本模型做精細調整。

代價也很直接:節點層的容量規劃、資源使用率、部分資安設定,都要自己負責。如果團隊裡沒有人熟悉 Kubernetes 節點層的維運細節,這件事很容易被忽略,直到出問題才發現。

GKE Autopilot:把節點層整個交出去

Autopilot 模式的核心承諾是:你只需要描述工作負載要多少資源,Google 負責把對應的節點生出來、擴縮、打安全性補丁、依發行版本管道自動升級。

計費邏輯也跟著改變。一般工作負載走的是依 Pod 實際請求資源計費,需要特定硬體(例如 GPU 或特定機型)的工作負載,則是按底層基礎設施加上管理費計費。

面向GKE 標準模式GKE Autopilot 模式
節點管理使用者自行設定節點池、機型與擴縮策略Google 自動佈建與調整節點
計費方式依購買的節點運算資源計費一般工作負載依 Pod 實際用量計費
安全性設定使用者需自行加固並套用補丁預設套用強化設定與自動安全性更新
適合情境需要深度客製節點層或特殊硬體排程邏輯希望把心力放在應用層而非基礎設施
2026 年的一個變化:ComputeClass

GKE 目前把 Autopilot 背後的容器最佳化運算平台,透過 ComputeClass 的形式也開放給標準模式叢集使用,讓你可以針對個別工作負載選擇要不要套用 Autopilot 式的管理,而不是整個叢集二選一。實際可用的 ComputeClass 種類與支援版本,請查官方最新文件。

多叢集與跨區域負載平衡:不是只有單一叢集這回事

實務上很少有團隊只跑一個叢集打天下。多個地區各自跑一個叢集,再靠跨區域的負載平衡機制把流量分配過去,是常見的高可用架構。

GKE 支援跨叢集的服務發現與流量路由,讓你可以把同一個服務部署到多個地區的叢集,依延遲、健康狀態或容量把使用者導向最合適的一個。這一層跟前面談的節點管理模式是分開的,標準模式與 Autopilot 叢集都能參與同一套多叢集架構。

選擇多叢集架構的常見理由,是想在單一地區發生問題時,讓其他地區的叢集接手流量,而不是把所有雞蛋放進同一個地區的同一個叢集裡。

怎麼選:判斷標準不是新舊,是團隊的維運容量

  1. 先問團隊有沒有精力顧節點層。 沒有專職維運人力的團隊,Autopilot 通常能省下大量瑣碎的維運工作。
  2. 再看工作負載形狀特不特殊。 需要極度客製化的節點排程邏輯,或依賴特殊硬體驅動的工作負載,標準模式會更彈性。
  3. 用實際流量試算成本。 兩種計費模式在不同用量模式下的結果差很多,紙上談兵沒有意義,拿真實的資源使用量試算才準。
  4. 不用急著一次選死。 ComputeClass 這類機制讓「整個叢集二選一」不再是唯一選項,可以先從局部工作負載開始嘗試。
本文源起本文依 Google Cloud 官方文件、Kubernetes 官方部落格關於 Borg 血緣的說明,以及 GKE Autopilot 概觀頁面整理,由酒Ann 以自己的視角編寫成中文導覽。實際功能與計費規則請以 Google Cloud 官網 為準。

延伸學習

把這篇文章分享給需要的人FacebookLINEThreadsX

常見問答

Kubernetes 是不是 Google 開源版的 Borg?
不完全是,但關係很深。Kubernetes 是全新寫的專案,並非直接開源 Borg 的程式碼,但早期核心開發者裡有不少人來自 Borg 團隊,Google 官方也公開說明過 Kubernetes 深受 Borg 與另一個內部系統 Omega 影響。可以理解成「把十幾年營運大規模容器化系統的經驗,重新設計成一個對外的開源專案」。
GKE Autopilot 是不是就是「更貴的 GKE」?
計費方式不同,不能簡單說貴或便宜。標準模式是你自己買節點的運算資源,不管有沒有用滿都要付錢。Autopilot 是依 Pod 實際請求的資源計費,如果你的工作負載本來就會有閒置的節點容量,Autopilot 換算下來未必比較貴,實際成本要看你自己的用量模式試算。
Autopilot 模式下我還能不能碰底層設定?
能碰的範圍比較小,這是刻意的設計。Autopilot 會自動處理節點佈建、擴縮、資安性補丁與版本升級,你能調整的主要是工作負載本身的宣告,例如透過 ComputeClass 指定特定硬體需求。如果你的團隊需要深度客製節點層的設定,標準模式會更適合。
已經在用標準模式的叢集,可以中途改用 Autopilot 嗎?
兩者是不同的操作模式,遷移方式與是否支援直接切換,會隨 GKE 版本與官方政策調整。這種遷移屬於架構層級的決定,建議動手前先查官方文件當下針對你叢集版本的遷移指引,而不是假設一定能無痛切換。
多叢集、跨區域的負載平衡,Autopilot 也能做嗎?
可以。無論標準模式還是 Autopilot,都能搭配 GKE 的多叢集功能與跨區域負載平衡機制,把流量分散到不同地區的叢集。差別只在於每個叢集內部的節點怎麼管理,跨叢集的路由設計是另一層,兩者不衝突。