管理 Kubernetes 叢集
課程概述
部署應用只是第一步,維運才是持久戰。這堂課我們來談 GKE 叢集的日常管理,包含監控、日誌、自動擴展、節點池管理,還有安全上的一些最佳實踐。

三層 Autoscaling 解不同問題:HPA 改 Pod 數、VPA 改單一 Pod 的 Request、Cluster Autoscaler 在 Pod 排不下時改 Node 數。觀測訊號驅動調整;維護視窗與 PodDisruptionBudget 保住可用副本, Workload Identity 免金鑰存取雲端服務,Namespace/RBAC 再切開團隊權限。
你將學到
- 使用 Cloud Monitoring 監控 GKE 叢集與工作負載
- 使用 Cloud Logging 收集與查詢容器日誌
- 配置 Horizontal Pod Autoscaler(HPA)與 Cluster Autoscaler
- 管理節點池升級與維護視窗
- 實作 Kubernetes RBAC 權限控制
核心概念
三層自動擴展
| 層級 | 機制 | 觸發條件 | 設定 |
|---|---|---|---|
| Pod | HPA | CPU/記憶體超過閾值 | kubectl autoscale |
| Pod | VPA | 資源 request 不合適 | VerticalPodAutoscaler CRD |
| Node | Cluster Autoscaler | Pod 無法排程 | --enable-autoscaling |
# 啟用 HPA(CPU 達 70% 時擴展,2-10 個 Pod)
kubectl autoscale deployment web-app --cpu-percent=70 --min=2 --max=10
# 啟用 Cluster Autoscaler
gcloud container clusters update my-cluster \
--enable-autoscaling --min-nodes=1 --max-nodes=10 \
--zone us-central1-a

HPA 反覆量測指標、計算 Desired Replicas,再交給 Deployment 改變 Pod 數;低負載縮減前使用 Stabilization Window 避免抖動。HPA 本身不會增加 Node,Pod 排不下時才需要 Cluster Autoscaler。
Cloud Monitoring for GKE
GKE 跟 Cloud Monitoring 是整合好的,可以分好幾層來看:
- Infrastructure:節點 CPU、記憶體、磁碟使用率
- Workloads:Pod 重啟次數、容器資源使用
- Services:請求延遲、錯誤率、吞吐量
建議設定的告警:
- Pod 重啟次數 > 5 次/小時
- 節點 CPU 使用率 > 85%
- Pod 處於非 Ready 狀態超過 5 分鐘
%%{init: {"flowchart": {"curve": "linear", "nodeSpacing": 24, "rankSpacing": 32}}}%%
flowchart TD
ALERT["告警觸發:先確認時間窗、<br/>影響比例與最近變更"] --> SCOPE{"訊號主要落在哪一層?"}
SCOPE -->|"Service"| SERVICE["看延遲、錯誤率與流量<br/>對照部署、Trace 與依賴服務"]
SCOPE -->|"Pod"| POD["看 Restart、NotReady、Events<br/>與 Logs,檢查 Probe 和 Requests"]
SCOPE -->|"Node"| NODE["看 Pressure、Unschedulable、<br/>Allocatable 與 Autoscaler"]
SERVICE --> SERVICE_ACTION["回滾版本或修復依賴<br/>再以服務 SLO 驗證"]
POD --> POD_ACTION["修正 Image、Config 或資源<br/>再驗證 Readiness"]
NODE --> NODE_ACTION["擴容、修復或升級 Node Pool<br/>並遵守 PDB"]
流程圖暫時無法顯示,請重新整理頁面後再試。
節點池管理
# 建立新節點池
gcloud container node-pools create high-mem-pool \
--cluster=my-cluster --machine-type=n2-highmem-4 --num-nodes=2
# 設定維護視窗(每週日凌晨 2-6 點)
gcloud container clusters update my-cluster \
--maintenance-window-start=2026-01-01T02:00:00Z \
--maintenance-window-end=2026-01-01T06:00:00Z \
--maintenance-window-recurrence="FREQ=WEEKLY;BYDAY=SU"

Surge Upgrade 先增加容量,再逐台 Cordon 與 Drain;PDB 若判斷驅逐會超出可用性預算,就暫停 等待。替代 Pod 到新 Node 並通過 Readiness 後,舊 Node 才能安全移除。
實作重點
- 開啟 GKE 的 Workload Identity 取代 service account key,更安全
- 使用 namespaces 隔離不同團隊或環境的工作負載
- 定期執行
gcloud container clusters upgrade保持版本更新 - 設定 PodDisruptionBudget 確保升級時服務不中斷
Skill Badge 指引
Lab 連結:Manage Kubernetes in Google Cloud — 完成此 lab 可獲得 Skill Badge
延伸學習
- PCA 認證相關:運算與儲存配置
- PCA 認證相關:可觀測性與 SRE
- 回到起點:GCP 運算服務基礎
Study Jam:雲端基礎實作 — 10/10 完成
查看系列全覽 →