GKE 叢集管理簡介
Google Kubernetes Engine (GKE) 是業界領先的託管式 Kubernetes 服務。對於一位 Professional Cloud Architect 來說,GKE 通常是現代化、容器化微服務的首選平台。其核心重點在於維運效率、安全性以及跨可用區的可靠性。
GKE 移除了管理 Kubernetes 控制平面 (Control Plane) 的大部分「無差異化繁重工作」,讓您能專注於工作負載本身。
GKE 的一種運作模式,由 Google 管理整個叢集基礎設施,包括節點和節點池。您只需為運行的 Pod 付費,而 Google 負責處理擴展、安全性和維護。參考:https://cloud.google.com/kubernetes-engine/docs/concepts/autopilot-overview
白話文解釋 GKE 叢集管理
管理 Kubernetes 可能很複雜,讓我們用一些類比來簡化它。
類比 1 — 公寓大樓 (Standard vs. Autopilot)
- GKE Standard 就像是擁有一整棟公寓大樓。您負責維護走廊(節點)、屋頂和供暖系統。您擁有絕對的控制權,但也必須承擔所有的維護工作。
- GKE Autopilot 就像是租一間全配服務式公寓。您只需要帶著家具 (Pod) 入住。房東 (Google) 負責大樓維修、保全和電梯。您只需為實際使用的空間付費。
類比 2 — 彈性腰帶 (HPA 與叢集自動擴展)
想像您穿著一條帶有彈性腰帶的褲子。
- 水平 Pod 自動擴展 (HPA) 是當您吃得更多時(流量增加),腰帶會拉伸。它在現有的腰帶範圍內增加了更多「空間」(Pod)。
- 叢集自動擴展 (Cluster Autoscaler) 則是當彈性腰帶拉到極限時,買一條更大號的褲子。它增加了更多的物理材料(節點)來確保一切都能裝下。
類比 3 — 識別證 (Workload Identity)
在高安全性辦公室裡,您不會給每個員工一把整棟大樓的萬能鑰匙(服務帳戶金鑰 JSON 文件)。相反,您給他們一張識別證 (Workload Identity),這張卡片只被授權打開他們需要進入的房間。如果卡片丟了,它會自動失效。這是您的 App 存取 BigQuery 或 Cloud Storage 等其他 Google 服務最安全的方式。
在 PCA 考試中,如果需求是「最小化維運開銷」且「僅為 Pod 資源付費」,答案是 GKE Autopilot。參考:https://cloud.google.com/kubernetes-engine/docs/concepts/autopilot-overview
GKE Standard vs. Autopilot 叢集
- Standard (標準模式): 最適合需要高度自定義配置、特定內核調優或以特定方式使用特殊硬體(如 TPU)的場景。您需要手動管理節點池。
- Autopilot (全代管模式): (建議大多數情況使用)最適合減少維運負擔。Google 管理節點健康、擴展和安全加固。
區域性 vs. 可用區叢集
- 可用區叢集 (Zonal Clusters): 控制平面和節點位於單一可用區。成本低,但容易受到可用區故障的影響。
- 區域性叢集 (Regional Clusters): 控制平面在三個可用區中複製,且節點也分散在這些可用區。這是生產環境的標準配置,因為它能經受住整個可用區故障的考驗。
PCA 情境只要提到「生產級 GKE」或「必須能在單一可用區故障時仍維持控制平面零停機」,答案就是 Regional cluster,而不是 Zonal cluster。Zonal cluster 的控制平面只放在單一可用區,一旦該可用區掛掉,您無法執行 kubectl 操作、無法擴展節點池、也無法滾動部署新的 Deployment,直到該可用區恢復為止;現存的 Pod 雖然還能服務流量,但整個叢集等同於被凍結。Regional cluster 會把控制平面複製到區域內三個可用區。
節點池管理與自動修復
- 節點池 (Node Pools): 叢集內具有相同配置(例如「高內存」池或「GPU」池)的節點子集。
- 自動修復 (Auto-repair): GKE 持續監控節點健康狀況。如果節點故障,GKE 會自動排空 (Drain) 該節點並建立新節點。
- 自動升級: GKE 自動讓您的節點保持最新的 Kubernetes 版本和安全補丁。
叢集自動擴展與 HPA
- 水平 Pod 自動擴展 (HPA): 根據 CPU 或自定義指標擴展 Pod 的副本數量。
- 垂直 Pod 自動擴展 (VPA): 根據歷史使用情況自動調整 Pod 的 CPU 和記憶體「大小」。
- 叢集自動擴展 (Cluster Autoscaler): 當 Pod 因資源不足而無法調度時,自動向節點池添加或移除節點。
配置 GKE 網絡
- VPC 原生叢集 (IP Aliases): (建議方式)Pod IP 是 VPC 網路的一部分,使其可直接路由,並能更好地與其他 GCP 服務整合。
- Gateway API: GKE 中管理服務網路的現代方式,提供比傳統 Ingress 更有表現力且面向角色的負載平衡功能。
GKE Ingress 與負載平衡
- GKE Ingress 控制器: 當您建立 Ingress 資源時,自動建立一個 Google Cloud HTTP(S) 負載平衡器。
- 容器原生負載平衡: 流量直接從負載平衡器發送到 Pod IP(使用網絡端點群組或 NEG),減少了延遲和跳數。
Workload Identity 配置
Workload Identity 是 GKE 應用程式存取 Google Cloud 服務的建議方式。
- 運作方式: 它將 Kubernetes 服務帳戶映射到 Google Cloud 服務帳戶。
- 優點: 消除了管理和輪換 JSON 服務帳戶金鑰的需求,金鑰洩漏是重大的安全風險。
PCA 題目問 GKE Pod 該如何呼叫 BigQuery、Cloud Storage 或 Pub/Sub 時,正確答案永遠是 Workload Identity(透過 iam.workloadIdentityUser 角色,把 Kubernetes Service Account 綁定到 Google Cloud Service Account),絕對不是「把 JSON 金鑰當作 Kubernetes Secret 掛載進 Pod」。Workload Identity 會為每個 Pod 發放短效、自動輪換的憑證,徹底排除需要手動輪換與稽核的長效金鑰。
管理 ConfigMaps 與 Secrets
- ConfigMaps: 儲存非敏感的配置數據(如環境變數)。
- Secrets: 儲存敏感數據(如密碼、API 金鑰)。
- 架構師提示: 為了生產環境的安全性,建議使用 Secret Manager 並透過 CSI Secret Store 驅動程序 將秘密掛載到 GKE 中。
使用 Helm 和 Kustomize 部署應用程式
- Helm: Kubernetes 的包管理器(使用 "Charts")。非常適合複雜的多組件應用。
- Kustomize: 一種無模板的方式,用於為不同環境(開發、測試、生產)自定義 Kubernetes 清單。已直接內置於
kubectl中。
升級叢集與節點池
- 突發升級 (Surge Upgrades): 允許 GKE 在升級期間建立額外的節點,以確保容量不會下降。
- 維護窗口: 精確定義 Google 允許對您的叢集執行自動升級的時間。
FAQ — GKE 叢集管理
Q1. 我可以從 GKE Standard 切換到 Autopilot 嗎?
不可以。Standard 和 Autopilot 之間的選擇是在叢集建立時確定的,無法更改。您必須建立一個新叢集並遷移工作負載。
當團隊想要減少節點池維運負擔時,很容易誤以為可以把現有的 GKE Standard cluster「升級」成 Autopilot,但模式是在叢集建立當下就鎖死的。唯一路徑是建立新的 Autopilot cluster,並把工作負載遷移過去 — 通常透過重新套用 manifests,並用 Regional HTTP(S) Load Balancer 或 multi-cluster Gateway 切換流量。考試上,任何聲稱可以「原地」把 Standard 轉成 Autopilot 的選項都是錯的。
GKE 三種自動擴展器各司其職:HPA 依 CPU 或自訂指標調整 Pod 副本數;VPA 依歷史用量調整每個 Pod 的 CPU/記憶體 limits;Cluster Autoscaler 在 Pod 因資源不足而無法調度時,於節點池新增或移除節點。切勿在同一個指標(例如都用 CPU)上同時啟用 HPA 與 VPA,否則兩者會互相打架,造成擴展抖動。
Q2. 什麼是「VPC 原生 (VPC-Native)」叢集?
這是一種叢集,其 Pod IP 位址是從 VPC 子網路的次要 IP 範圍中分配的。這使網絡速度更快,並允許您在 Pod 中使用 VPC 功能(如 VPC 流日誌和共享 VPC)。
Q3. 如何在 GKE 中處理有狀態 (Stateful) 應用程式?
使用 StatefulSets 和 PersistentVolumeClaims (PVCs)。GKE 會自動配置 Persistent Disks,並將其掛載到正確的 Pod 上,即使 Pod 在節點之間移動也是如此。
Q4. HPA 和 VPA 有什麼區別?
HPA 增加更多 Pod(水平擴展)。VPA 讓現有的 Pod 變得「更大」(增加 CPU/RAM,垂直擴展)。在大多數情況下,不應在同一個指標(如 CPU)上同時使用兩者。
Q5. 為什麼區域性 GKE 對生產環境更好?
因為 Kubernetes 控制平面 (Master) 在三個可用區中都有副本。在可用區叢集中,如果託管 Master 的單一區域發生故障,在該區域恢復之前,您將無法對叢集進行任何更改。
最終架構師提示
在 PCA 考試中,請務必記住共享責任模型。Google 管理控制平面以及(在 Autopilot 中)管理節點,但您負責容器和應用程式程式碼的安全性。使用 Binary Authorization 確保只有經過信任和掃描的映像檔才能部署到您的 GKE 叢集中。