API Server 壓力最大來源是 Endpoints 上的 WATCH Cluster Autoscaler 情境減少,因為叢集已經很大了
針對團隊資源分配實做 team-resource-manager 採用 CPU & GPU Balloons 讓 Cluster Autoscaler 不會認為節點閒置而進行移除,避免產生不必要的調度壓力 採用 Pod Anti-affinity 確保 Pod 最終會被平均地分佈到各個節點上, 採用 Coscheduling 批次處理,避免 all or nothing 的情況
Ref Ray 整理
OpenAI 如何用 Kubernetes 基礎建設。
chatGPT
1 易搬遷 (Porability): 基於基礎架構即代碼 (Infrastructure as Code, IaC)、Kubernetes 聲明式宣告及一致的 API (Declarative & Consistent API)、容器映像檔不可變動性 (Container Immutable Image) 3 個特性,讓你可以在不同的雲端平台上運行你的雲原生程式
計算相關運行 MPI Jobs: 以 MPI 作為調度基礎,而非大量利用 Kubernetes 內建之 Scheduler, 最常見錯誤為 Uncorrectable ECC error
多數 1 個節點放 1 個 Pod: 因 CPU / NUMA / PCI-E / Physical Server / Bandwidth 並非調度資源的主因,調度壓力極低,主要是 GPU 資源
Log-Kubernetes 相關無進行過 etcd self-healing automation,最大的叢集單獨運行 5 個 API Server 和 5 個 etcd 節點
節點數量多,導致 API Server 記憶體吃重: 基於 7500 台節點叢集,每個 API Servers 需要 70GB 的記憶體
Cluster Autoscaler 情境減少,因為叢集已經很大了
針對團隊資源分配實做 team-resource-manager
採用 CPU & GPU Balloons 讓 Cluster Autoscaler 不會認為節點閒置而進行移除,避免產生不必要的調度壓力
採用 Pod Anti-affinity 確保 Pod 最終會被平均地分佈到各個節點上, 採用 Coscheduling 批次處理,避免 all or nothing 的情況
log採用 kube-prometheus: 對於 HTTP 429 (Too Many Requests) 和 5XX (Server Error) 發送警報相當有效果