1. 程式人生 > 實用技巧 >Kubernetes & job

Kubernetes & job

Kubernetes & job

批處理任務通常並行(或者序列)啟動多個計算程序去處理一批工作項(work item),在處理完成後,整個批處理任務結束。

從1.2版本開始,Kubernetes支援批處理型別的應用,我們可以通過Kubernetes Job這種新的資源物件定義並啟動一個批處理任務Job。與RCDeploymentReplicaSetDaemonSet類似,Job也控制一組Pod容器。

從這個角度來看,Job也是一種特殊的Pod副本自動控制器,同時Job控制Pod副本與RC等控制器的工作機制有以下重要差別。

  • Job所控制的Pod副本是短暫執行的,可以將其視為一組Docker容器,其中的每個Docker容器都僅僅執行一次。當Job控制的所有Pod副本都執行結束時,對應的Job也就結束了。Job在實現方式上與RC等副本控制器不同,Job生成的Pod副本是不能自動重啟的,對應Pod副本的RestartPoliy

    都被設定為Never。因此,當對應的Pod副本都執行完成時,相應的Job也就完成了控制使命,即Job生成的Pod在Kubernetes中是短暫存在的。Kubernetes在1.5版本之後又提供了類似crontab的定時任務——CronJob,解決了某些批處理任務需要定時反覆執行的問題。

  • Job所控制的Pod副本的工作模式能夠多例項平行計算,以TensorFlow框架為例,可以將一個機器學習的計算任務分佈到10臺機器上,在每臺機器上都執行一個worker執行計算任務,這很適合通過Job生成10個Pod副本同時啟動運算。