Engineering · 1 min read
Headless Service 的 DNS 容量模型
一條公式把 per-pod ceiling 和 Ready pod 數連結到最大併發量。三個 KEDA 設定防禦冷啟動尖峰。
公式
Headless Service 的 DNS 每個 Ready Pod 回傳一筆記錄。正在啟動的 Pod 不會出現。Client 只看到能接單的 Pod。
決定容量的三個數字
- Per-pod ceiling。 一個 Pod 在 timeout 或 OOM 之前能同時處理多少請求。用單 Pod 做 burst test 來測量。
- Ready pod count。 只有通過 readinessProbe 的 Pod 才出現在 DNS。還在啟動的 Pod 是隱形的。
- Failure window。 從「KEDA 觸發 scale-up」到「新 Pod 通過 readiness」之間的空窗期。這段時間,現有 Pod 吸收所有流量。Burst 超過它們的上限,請求就失敗。
對抗冷啟動的三道防線
minReplicas: 基底 Pod 數量。吸收第一波 burst,不用等 KEDA。cooldownPeriod: spike 後保持 Pod 存活。吸收重複的 burst。fallbackReplicas: Prometheus 斷線時的保底 Pod 數量。
實測數字。 3 個 Pod 撐住 150 concurrent,每 Pod 約 50。推到 200 時,99 個回 502。加到 6 個 warm Pod 再試,199/200 成功。Per-pod ceiling 大約 50。
參考來源:
Related: 看 KEDA 壓測如何驗證這些數字,或回到系列總覽。