從零入門 Serverless | 使用 Spot 低成本運行 Job 任務

做者 | 代志鋒(雲果)  阿里雲技術專家網絡

本文整理自《Serverless 技術公開課》less

導讀:本節課程有三部份內容,首先闡述 ECI 支持成本優化的幾種方式,而後重點介紹 Spot 實例是什麼以及如何採用 Spot 實例進行成本優化,最後總結 Spot 實例支持的場景以及注意事項。ide

成本優化

1.jpg

ECI 除了有秒級彈性、無限容量的優點以外,在一些特定場景下對成本的優化也是很是明顯的,經過上圖咱們能夠看到,相同規格的實例,在日運行時間少於 14 小時的時候,使用 ECI 會更加便宜。測試

2.jpg

除了日運行時長小於 14 小時的情形,ECI 實例還支持多種計費類型,客戶能夠根據自身業務選擇相應的計費模式:long run 類型的能夠採用 RI 實例券;運行時長低於 1 小時能夠選用 Spot 競價實例;針對突發流量部分,採用按量實例。大數據

Spot 實例概述

3.jpg

搶佔式實例是一種按需實例,能夠在數據計算等場景中下降計算成本。搶佔式實例建立成功後擁有一小時的保護週期。搶佔式實例的市場價格會隨供需變化而浮動,咱們支持兩種 spot 策略,一種是徹底根據市場出價,一種是指訂價格上限,咱們只須要給 pod 加上對應的 annotation 便可,使用方法很是簡單。優化

4.jpg

  • SpotAsPriceGo:系統自動出價,跟隨當前市場實際價格(一般以折扣的形式體現)
  • SpotWithPriceLimit:設置搶佔實例價格上限
    • 用戶價格 < Spot 市場價格,實例會處於 pending 狀態,並每 5 分鐘自動進行一次出價,當價格等於或高於市場價格時,開始自動建立實例。運行一小時後,市場價格若是高於用戶價格,則實例隨時可能會被釋放;
    • 用戶價格 >= Spot 市場價格,若是庫存充足則自動建立實例,按成功建立實例時的市場價格來計價,默認市場價格爲小時價,將小時價除以 3600 便可獲得每秒的價格。搶佔式實例按秒計費;
    • 用戶價格 >= ECI 按量實例價格,使用 ECI 按量實例價格來建立實例。

建立 Spot 實例

5.jpg

首先咱們查詢出【華北 2(北京)地域 ecs.c5.large 按量(小時)價格:0.62】,而後咱們以此規格來建立 Spot 競價實例。阿里雲

6.jpg

採用 Spot 實例來運行 CronJob,分別採用「指定最高限價」、「系統自動出價」的方式。隨市場價的場景目前尚未辦法直接看到真實的價格,只能根據實例 ID 查詢帳單信息。編碼

7.jpg

採用 Spot 實例運行 Deployment,在本次實驗中咱們採用指定最高限價的策略,並設置一個極低的小時價格,能夠看到 2 個 Pod 都建立失敗了,使用 kubectl describe 命令能夠看到失敗的詳細緣由爲價格不匹配:The current price of recommend instanceTypes above user max price。3d

8.jpg

如上圖所示,當 Spot 實例運行超過 1 小時保護期後,有可能會由於庫存不足,或者設置的價格小於市場價而觸發實例釋放,實例釋放前 3 分鐘會有事件通知。server

應用場景

您能夠在搶佔式實例上部署如下業務:

  • 實時分析業務
  • 大數據計算業務
  • 可彈性伸縮的業務站點
  • 圖像和媒體編碼業務
  • 科學計算業務
  • 地理空間勘測分析業務
  • 網絡爬蟲業務
  • 測試業務

搶佔式實例適用於無狀態的應用場景,例如可彈性伸縮的 Web 站點服務、圖像渲染、大數據分析和大規模並行計算等。應用程序的分佈度、可擴展性和容錯能力越高,越適合使用搶佔式實例節省成本和提高吞吐量。

注意事項

  • 如何避免出價太低致使實例搶佔失敗?

須要結合自身業務特徵,並充分考慮到市場價格波動的狀況下選擇合理的出價。

  • 系統自動出價,1 小時到期後是否會被釋放?

1 小時到期時,系統會嘗試再次出價,如庫存充足則不會被釋放。

  • 系統自動出價上限是多少?

不超過相同規格按量最高價(原價)。

  • 是否僅支持 ECS InstanceType 形式?

搶佔式 ECI 實例依然支持 ECS InstanceType、CPU / 內存形式兩種建立方式。

  • 是否支持 GPU 實例?

支持,跟非 GPU 方式同樣。

相關文章
相關標籤/搜索