examlab .net 用最有效率的方法,考取最有價值的證照
本篇導覽 約 20 分鐘

管理 Google Kubernetes Engine (GKE)

3,850 字 · 約 20 分鐘閱讀 ·

Professional Cloud Architect 深入解析 GKE:Autopilot vs Standard、區域性叢集、HPA/VPA、GKE 網絡以及 Workload Identity。

立即做 20 題練習 → 免費 · 不用註冊 · PCA

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 該如何呼叫 BigQueryCloud StoragePub/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/記憶體 limitsCluster Autoscaler 在 Pod 因資源不足而無法調度時,於節點池新增或移除節點。切勿在同一個指標(例如都用 CPU)上同時啟用 HPA 與 VPA,否則兩者會互相打架,造成擴展抖動。

Q2. 什麼是「VPC 原生 (VPC-Native)」叢集?

這是一種叢集,其 Pod IP 位址是從 VPC 子網路的次要 IP 範圍中分配的。這使網絡速度更快,並允許您在 Pod 中使用 VPC 功能(如 VPC 流日誌和共享 VPC)。

Q3. 如何在 GKE 中處理有狀態 (Stateful) 應用程式?

使用 StatefulSetsPersistentVolumeClaims (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 叢集中。

官方資料來源

更多 PCA 主題