Skip to content
All writing Part 11 of 12 · 在容器裡遙控 Chrome 的完整路由
Engineering · 3 min read

KEDA 壓測方法論:「Ready」不等於「能用」

四步壓測流程驗證 KEDA ScaledObject,加上 Ready 狀態不可靠背後的初始化延遲問題。

四步壓測法

一個可重複的測試流程,在上線前驗證 KEDA ScaledObject 的行為。

第一步:Baseline(基線) kubectl get scaledobject → MIN, MAX, READY, ACTIVE 第二步:Burst(突發流量) 發 N 個同時請求 → 50 → 100 → 150 → 200 第三步:觀察 KEDA ScaledObject 切到 ACTIVE?新 Pod 被排程?metric 過 threshold? 第四步:檢查分散 nslookup → 所有 Ready IP 都回來了?每 Pod log 量均勻?

Cold vs Warm 對照

同一個 burst 量跑兩次:

  1. Cold: Pod 正在擴展中,KEDA 剛觸發。
  2. Warm: 所有 Pod 都 Ready。

比較結果。Cold 失敗但 Warm 成功,代表問題是啟動時間,不是 Pod 容量。

每次 Burst 後,檢查四件事

  • HTTP 狀態分佈(200 vs 502/503)
  • 延遲範圍(p1 到 p99)
  • 錯誤計數器(chrome_errors_total
  • Pod 數量和 ScaledObject ACTIVE 狀態

「Ready」不等於「能用」

Resource 的 status 欄位是一個組件的自我回報。其他組件可能還沒跟上。

回報「Ready」 真正能用 GPU node:kubelet 註冊 NVIDIA driver 裝完(1-4 分鐘) 新 node:狀態 Ready DaemonSet 全部跑起(30s-2 min) Pod:狀態 Running Readiness probe 通過(幾秒)

「Ready」到真正能用之間的落差,叫做初始化延遲。

年齡檢查規則

Resource 失敗時,看它的年齡來決定怎麼處理。

Resource 失敗 新的(< 5 分鐘) 等 3-5 分鐘再試。 再檢查一次。 很可能是暫時的。 舊的(> 5 分鐘) 真的壞了。 查根因。

GPU node 顯示 Ready 的時候,GPU 還不能用。我當時以為遇到硬體故障。兩分鐘後,三個 Chrome Pod 全跑起來了。那台 node 一直都在初始化。


參考來源:

Related: 看這些測試驗證的容量公式,或回到系列總覽

Tags #kubernetes #chrome-devtools #containers
// connect

Be brave | Be wise | Be grateful

21 BreakinCode

// elsewhere
LinkedInMedium (lang: en)Youtube
wh:~$William Hung· © 2026 Taipei · GMT+8 · Available for collaboration