KubernetesのJobとDaemonSetについて
こんにちわ
がじぇったー (@hackmylife7) | Twitter
です。ガジェット情報をいち早くツイートすることを生きがいにしているのでよかったらフォローください。
今日はJobとDaemonSetについてです。
TL;DR(要約)
- JobはKubernetesクラスタ上で実行されるバッチのイメージ
- DaemonSetはDatadogやFluentdなどどのNodeでも動かしたい用途で使うCotroller機能
Job
いわゆるk8sクラスタ上でバッチ処理を実行したいときに用いるCotrollerサービスがJobになります。
1つ以上のPodを作成し、指定された数のPodが正常に終了するように管理します。
例えば、顧客から受け取ったメールを3時間間隔でs3にあげたり、外部のAPIを一定の間隔で叩きたいときに使えます。
考え方はVMのCronjobと何ら考えは変わりません。
Jobには以下の種類があります
- Non-parallel jobs
- Parallel jobs with a fixed completion count
- Parallel jobs with a work queue
- Cron jobs
Non-parallel jobs
非並列的なジョブであり、1つのPodのみを作成し(Podが正常に終了しなかった場合は再作成され)、Podが正常に終了したときに完了するジョブ。
Parallel jobs with a fixed completion count
完了したPodをカウントする並列ジョブで、一定数のPodが正常に終了したときに完了するジョブ。
Completionsの項目数をマニフェストファイルで使用して使用します
Parallel jobs with a work queue
複数の並列JobをQueueで実行します
図解
上記3つの種類を下手くそな絵で表現するとこんな感じ
Cronjob
前述の3つの種類はJobの実行の仕方、という点で3つにわかれていたが、Cronjobは
時間指定で動かすことができる前述のJobとは少し異なる
前述の画像に書き出すとCronJobのイメージはこんなかんじ
Cronjobが時間指定でJobを動かすイメージ
繰り返すことも可能
マニフェストファイルのイメージはこんな感じ
# cronjob.yaml apiVersion: batch/v1beta1 kind: CronJob metadata: name: hello spec: schedule: "*/1 * * * *" jobTemplate: spec: template: spec: containers: - name: hello image: busybox args: - /bin/sh - -c - date; echo "Hello, World!" restartPolicy: OnFailure
DaemonSet
どのNodeでも動かしたいPodがいる際に使う。
具体的なMWをイメージするとわかりやすいが、DatadogやFluentd等などのモニタリング、ログ収集サービスで使われる。
参考(Kubernetesの最強参考書)
Kubernetes完全ガイド (impress top gear)
- 作者: 青山真也
- 出版社/メーカー: インプレス
- 発売日: 2018/09/21
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
Kubernetesの他の記事へは下記の一覧から飛べるようにしているので参照ください。