JobとCronJobは、短期間の1回限りのタスク(短期間の1回限りのタスク)、つまり1回だけ実行されるタスクのバッチ処理を担当し、バッチタスクの1つ以上のポッドが正常に完了するようにします。
- ジョブ:これは、Kubernetesがバッチタイプのタスクを制御するために使用するリソースオブジェクトです。バッチ処理ビジネスと長期サーボビジネス(Deployment、Statefulset)の主な違いは、バッチ処理ビジネスには始まりと終わりがあるのに対し、長期サーボビジネスはユーザーが停止することなく永遠に実行されることです。ジョブによって管理されているポッドは、ユーザーの設定に従ってタスクが正常に完了すると自動的に終了します(ポッドは自動的に削除されます)。
- CronJob:これは時間ベースのジョブであり、Linuxシステムのcrontabファイルの行に似ており、指定された期間に指定されたジョブを実行します。
使い果たされると停止するタスクロードのこの機能は、継続的な統合などの1回限りのタスクに特に適しています。
ジョブを作成する
以下は、πから2000桁を計算して出力するジョブ構成です。ジョブの最後に、50個のポッドを実行する必要があります。この例では、πを50回印刷し、5個のポッドを並行して実行します。ポッドに障害が発生した場合は、最大5回再試行できます。
apiVersion: batch/v1
kind: Job
metadata:
name: pi-with-timeout
spec:
completions: 50 # 运行的次数,即Job结束需要成功运行的Pod个数
parallelism: 5 # 并行运行Pod的数量,默认为1
backoffLimit: 5 # 表示失败Pod的重试最大次数,超过这个次数不会继续重试。
activeDeadlineSeconds: 10 # 表示Pod超期时间,一旦达到这个时间,Job及其所有的Pod都会停止。
template: # Pod定义
spec:
containers:
- name: pi
image: perl
command:
- perl
- "-Mbignum=bpi"
- "-wle"
- print bpi(2000)
restartPolicy: Never
補完と並列処理の設定により、ジョブは以下のタイプに分類できます。
表1タスクタイプ
職種 | 説明 | 使用例 |
---|---|---|
ワンタイムジョブ | 正常に終了するまでポッドを作成します | データベースの移行 |
終了カウントが固定されたジョブ | ポッドを順番に作成し、完了が正常に完了するまで実行します | ポッド処理ワークキュー |
エンドカウントが固定された並列ジョブ | 複数のポッドを順番に作成し、完了が正常に完了するまで実行します | 複数のポッドが同時にワークキューを処理します |
パラレルジョブ | 1つが正常に終了するまで、1つ以上のポッドを作成します | 複数のポッドが同時にワークキューを処理します |
CronJobを作成する
Jobと比較すると、CronJobはタイミングが追加されたジョブであり、CronJobを実行すると、指定された時間にジョブが作成され、そのジョブによってポッドが作成されます。
apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: cronjob-example
spec:
schedule: "0,15,30,45 * * * *" # 定时相关配置
jobTemplate: # Job的定义
spec:
template:
spec:
restartPolicy: OnFailure
containers:
- name: main
image: pi
CronJobの形式は前から後ろです。
- 分
- 時間
- 曜日
- 月
- 曜日
「0,15,30,45 」は、コンマ分の前で区切られ、最初は時間を表し、2番目は月の日を表し、月は3番目、4番目を表します。曜日を表します。
毎月1日に30分ごとにタスクを実行する場合は、「0,30 1 」に設定できます。毎週日曜日の午前3時にタスクを実行する場合は、「03」に設定できます。 * 0 "。
CronJob形式の詳細については、https://zh.wikipedia.org/wiki/Cronを参照してください。