閱讀105 返回首頁    go 直播


運行離線任務__應用管理_用戶指南_容器服務-阿裏雲

容器服務抽象出離線計算的基本模型,推出了基於 Docker 容器的離線計算功能。

其核心功能包括:

  • 作業編排
  • 作業調度與生命周期管理
  • 存儲與日誌等功能的集成

基本概念

下表中列出了離線應用與在線應用的概念對比。

概念 離線應用 在線應用
容器 任務執行單元 服務的執行單元
運行曆史 任務出錯重試的執行曆史
服務(任務) 一個特定的功能,可以分割成若幹個容器來執行 一組功能相同的容器
應用(作業) 若幹個任務的組合 若幹個服務的組合

簡言之,一個離線作業包含若幹個任務,每個任務可以由若幹個容器來執行,每個容器可以有多個運行曆史;而一個在線應用包含若幹個服務,每個服務可以有若幹個容器同時服務。

基於 Docker Compose 的作業編排

和在線應用一樣,您可以使用 Docker Compose 來描述和編排作業。Docker Compose 支持 Docker 的絕大部分功能,比如:

  • CPU、內存等資源限製
  • 數據卷(Volume)
  • 環境變量與標簽
  • 網絡模型、端口暴露

除此之外,阿裏雲容器服務還擴展了以下功能:

  • 容器數量:每個任務分成多少個容器
  • 重試次數:每個容器重試多少次
  • 移除容器:容器運行完後是否刪除,可選策略包括 remove_finished(刪除完成的容器)、remove_failed(刪除失敗的容器)、remove_all(刪除全部容器)、remove_none(不刪除)。
  • DAG 模型的任務依賴:同一個作業的任務之間可以有依賴關係,被依賴的任務會先執行。

離線作業的 Docker Compose 示例:

  1. version: "2"
  2. labels:
  3. aliyun.project_type: "batch"
  4. services:
  5. s1:
  6. image: registry.aliyuncs.com/jimmycmh/testret:latest
  7. restart: no
  8. cpu_shares: 10
  9. mem_limit: 100000000
  10. labels:
  11. aliyun.scale: "10"
  12. aliyun.retry_count: "20"
  13. aliyun.remove_containers: "remove-all"
  14. s2:
  15. image: registry.aliyuncs.com/jimmycmh/testret:latest
  16. cpu_shares: 50
  17. mem_limit: 100000000
  18. labels:
  19. aliyun.scale: "4"
  20. aliyun.retry_count: "20"
  21. aliyun.remove_containers: "remove-finished"
  22. aliyun.depends: "s1"

注意:

  • 該功能隻支持 Docker Compose 2.0。
  • 您需要在作業級別添加標簽 aliyun.project_type: "batch"。如果您未添加該標簽或標簽值不為 batch,則認為該應用為在線應用。
  • 無論您將 restart 設置為什麼值,都會被修改為 no
  • 您可以用 aliyun.depends 標簽指定依賴關係。可以依賴多個任務,用逗號(,)分隔。
  • aliyun.retry_count 的默認值為 3。
  • aliyun.remove_containers 的默認值為 remove_finished

作業生命周期管理

容器狀態由容器的運行及退出狀態決定;任務狀態由該任務中所有容器的狀態決定;作業狀態由該作業的所有任務決定。

容器狀態

  • 運行中(Running):容器在運行。
  • 完成(Finished):容器退出且 ExitCode==0
  • 失敗(Failed):容器退出且 ExitCode!=0

任務狀態

  • 運行中(Running):有容器在運行。
  • 完成(Finished):所有容器都完成了。
  • 失敗(Failed):有容器失敗次數超過給定值。

作業狀態

  • 運行中(Running):有任務在運行。
  • 完成(Finished):所有任務都完成了。
  • 失敗(Failed):有任務失敗了。

上述狀態都可以通過 API 獲取,方便您自動化運維。

共享存儲

容器之間、任務之間會有數據共享和交換,共享存儲可以解決這一問題。比如在 Hadoop上跑 MR 作業,是通過 HDFS 來交換數據的。在容器服務中,可以使用三類共享存儲,其特性及應用場景對比如下所示。

存儲 優點 缺點 適用範圍
OSSFS 數據卷 跨主機共享 讀寫、ls 性能低;修改文件會導致文件重寫 共享配置文件;附件上傳
阿裏雲 NAS 數據卷 跨主機共享;按需擴容; 高性能、高可靠性;掛載速度高 成本略高 需要共享數據的重 IO 應用,如文件服務器等;需要快速遷移的重 IO 應用,如數據庫等
您自己集成成三方存儲,如 Portworx 將集群內的雲盤虛擬成共享的大磁盤;性能高;snapshot、多拷貝 需要一定運維能力 同 NAS

具體使用數據卷的幫助,可以參考以下文檔:

集成日誌和監控服務

日誌和監控是分析離線作業的重要工具。阿裏雲容器服務集成了阿裏雲日誌服務與雲監控功能,隻要在編排模板中添加一個標簽,就可以將日誌收集到日誌服務,將容器的 CPU、內存等數據收集到雲監控。具體使用方便請參考下麵的文檔。

操作步驟

  1. 登錄 容器服務管理控製台 並創建一個集群。

    有關如何創建集群的詳細信息,參見 創建集群

  2. 單擊左側導航欄中的 應用 並單擊右上角的 創建應用

  3. 設置應用的基本信息,單擊 使用編排模板創建

  4. 填入上文中的編排模板並單擊 創建並部署

  5. 單擊 應用 並單擊創建的應用的名稱,可以查看應用的運行狀態,如下圖所示。

    離線任務狀態

最後更新:2016-11-23 16:04:16

  上一篇:go 刪除應用__應用管理_用戶指南_容器服務-阿裏雲
  下一篇:go 定時任務__應用管理_用戶指南_容器服務-阿裏雲