什么是 Cluster Autoscaler
- 首先你需要有一朵云「公有 Or 私有」
- Node 不足 Or Node GG 是一件很麻煩的事情
- CA 很好的解決了松却,根據(jù)預(yù)先給到的上下限 Node 數(shù) & 利用率自動(dòng) Up & Down
CA 模塊拆解
- autoscaler: 核心模塊葡公,擴(kuò)縮容功能
- Estimator: 計(jì)算擴(kuò)容節(jié)點(diǎn) 「Bin Packing Problem」
- Simulator:模擬調(diào)度拦止,計(jì)算縮容節(jié)點(diǎn)
- Cloud Provider: 云廠商交互核心「廠商好不好主要看這個(gè) & 虛擬機(jī)彈性」
核心代碼邏輯
main.go - run(healthCheck) - autoscaler.RunOnce(loopStart)
core/autoscaler.go - static_autoscaler.go - RunOnce # 判斷是否需要 Up Or Down
scale_up.go - ScaleUp - context.ExpanderStrategy.BestOption
estimator/binpacking_estimator.go #核心算法
注意點(diǎn)
- Down:watch 現(xiàn)有 node 的情況,利用 cpu + mem 的利用率情況來進(jìn)行評(píng)估是否需要縮多少壁顶,如果 Node 為空為批量操作,如果 Node 不為空為 For 循環(huán)
- Up:這個(gè)就比較簡單了,當(dāng)看到有 Pod Pending 的話修档,就開始同樣使用 cpu + mem 希望用的量來進(jìn)行計(jì)算得出多少 Node 后通知云 API 進(jìn)行擴(kuò)容 ,Bin Packing Problem 為核心算法 「類似出去玩整理行李」
-
綜上:如果當(dāng)彈性出現(xiàn)致命問題的時(shí)候
- 廠商無機(jī)器「庫存問題」
- 廠商 Down & Up 回調(diào) k8s api 出現(xiàn)問題 「占著坑位 Or 坑位門關(guān)了但是里面沒東西」
- 廠商 Up 機(jī)器過慢的問題么府框,就是虛擬機(jī)的問題了
文檔總結(jié)
Ps. 別人寫的很好 ...