使用 Spot 低成本运行 Job 任务
作者 | 代志鋒(云果) 阿里云技術專家
導讀:本節課程有三部分內容,首先闡述 ECI 支持成本優化的幾種方式,然后重點介紹 Spot 實例是什么以及如何采用 Spot 實例進行成本優化,最后總結 Spot 實例支持的場景以及注意事項。
成本優化
ECI 除了有秒級彈性、無限容量的優勢之外,在一些特定場景下對成本的優化也是非常明顯的,通過上圖我們可以看到,相同規格的實例,在日運行時間少于 14 小時的時候,使用 ECI 會更加便宜。
除了日運行時長小于 14 小時的情形,ECI 實例還支持多種計費類型,客戶可以根據自身業務選擇相應的計費模式:long run 類型的可以采用 RI 實例券;運行時長低于 1 小時可以選用 Spot 競價實例;針對突發流量部分,采用按量實例。
Spot 實例概述
搶占式實例是一種按需實例,可以在數據計算等場景中降低計算成本。搶占式實例創建成功后擁有一小時的保護周期。搶占式實例的市場價格會隨供需變化而浮動,我們支持兩種 spot 策略,一種是完全根據市場出價,一種是指定價格上限,我們只需要給 pod 加上對應的 annotation 即可,使用方法非常簡單。
- SpotAsPriceGo:系統自動出價,跟隨當前市場實際價格(通常以折扣的形式體現)
- SpotWithPriceLimit:設置搶占實例價格上限
- 用戶價格 < Spot 市場價格,實例會處于 pending 狀態,并每 5 分鐘自動進行一次出價,當價格等于或高于市場價格時,開始自動創建實例。運行一小時后,市場價格如果高于用戶價格,則實例隨時可能會被釋放;
- 用戶價格 >= Spot 市場價格,如果庫存充足則自動創建實例,按成功創建實例時的市場價格來計價,默認市場價格為小時價,將小時價除以 3600 即可得到每秒的價格。搶占式實例按秒計費;
- 用戶價格 >= ECI 按量實例價格,使用 ECI 按量實例價格來創建實例。
創建 Spot 實例
- 根據規格查看實例按量價格,點擊查詢
首先我們查詢出【華北 2(北京)地域 ecs.c5.large 按量(小時)價格:0.62】,然后我們以此規格來創建 Spot 競價實例。
采用 Spot 實例來運行 CronJob,分別采用“指定最高限價”、“系統自動出價”的方式。隨市場價的場景目前還沒有辦法直接看到真實的價格,只能根據實例 ID 查詢賬單信息。
采用 Spot 實例運行 Deployment,在本次實驗中我們采用指定最高限價的策略,并設置一個極低的小時價格,可以看到 2 個 Pod 都創建失敗了,使用 kubectl describe 命令可以看到失敗的詳細原因為價格不匹配:The current price of recommend instanceTypes above user max price。
如上圖所示,當 Spot 實例運行超過 1 小時保護期后,有可能會因為庫存不足,或者設置的價格小于市場價而觸發實例釋放,實例釋放前 3 分鐘會有事件通知。
應用場景
您可以在搶占式實例上部署以下業務:
- 實時分析業務
- 大數據計算業務
- 可彈性伸縮的業務站點
- 圖像和媒體編碼業務
- 科學計算業務
- 地理空間勘測分析業務
- 網絡爬蟲業務
- 測試業務
搶占式實例適用于無狀態的應用場景,例如可彈性伸縮的 Web 站點服務、圖像渲染、大數據分析和大規模并行計算等。應用程序的分布度、可擴展性和容錯能力越高,越適合使用搶占式實例節省成本和提升吞吐量。
注意事項
- 如何避免出價過低導致實例搶占失敗?
需要結合自身業務特征,并充分考慮到市場價格波動的情況下選擇合理的出價。
- 系統自動出價,1 小時到期后是否會被釋放?
1 小時到期時,系統會嘗試再次出價,如庫存充足則不會被釋放。
- 系統自動出價上限是多少?
不超過相同規格按量最高價(原價)。
- 是否僅支持 ECS InstanceType 形式?
搶占式 ECI 實例依然支持 ECS InstanceType、CPU / 內存形式兩種創建方式。
- 是否支持 GPU 實例?
支持,跟非 GPU 方式一樣。
總結
以上是生活随笔為你收集整理的使用 Spot 低成本运行 Job 任务的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 低成本运行 Spark 数据计算
- 下一篇: 基于 Knative 低成本部署在线应用