0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

KubernetesのJobとCronjobについて必死で調べた

Last updated at Posted at 2021-01-05
  • インフラ屋じゃないが、業務で必要になったため最低限調べてまとめた。

  • 個人的なメモです。ミスがあったら教えてください。

  • 21/07/24 kubernetesをガチ目に学んだので、追加でメモる。

Cronjobとは

  • Cronjobが定期的にJobを作成し、Jobがコンテナを作ってその中で処理を指定された実行する
  • Jobは、指定時間になったらpodをその中のコンテナで指定された処理を行う。
    • 多分コンテナは毎回指定時間になるたびに作り直すけど、podは作り直すわけではないんだと思う
    • たまに超複する2つのJobが作られたり、Jobが作られなかったりすることもある → Jobはidempotentであるべき。

Jobの詳細

  • 先述した処理の「実行時間」「処理内容」「並列数や完了数」、、、などを保持しており、それに応じた処理を行う
  • Jobのためにpodが作成される。そのJobが完了してもpodは消されない(terminated)になる。そのJobをdeleteしたらpodも消される。
non-parallel job と parallel jobがある
- non-parallel jobは、completionの回数だけ逐次的にjobが繰り返し実行される
- parallel jobは、
    - without worker は、completionとparallelismを指定する。
        - 今存在するpodが全て成功したらcompletionに達するなら、もうpodは作られなくなる。
        - ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/534442/61f60dfa-12eb-7296-77a4-91e31bca28f4.png)

    - with worker queue は、completionを指定しない。(1とみなされる)
        - ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/534442/b99ee56c-60fd-4d62-24a5-b9b4024c879a.png)

CronJobを使ってJobを作る方法

(1) yamlファイルを書く。

application/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 from the Kubernetes cluster
          restartPolicy: OnFailure

(2) このファイルを指定して$kubectl create -f <ファイル名>コマンドでCronJobリソースを作成する

(そもそも$kubectrl createコマンドとは、Create a resource from a file or from stdinするためのもの。このファイルのkind次第で、cronjobに限らず、podなりjobなりconfigmapなりを作成することもできる)

その他メモ

  • kubectl get cronjobでjobの一覧取得

  • kubectl get cronjobs/<cronjob名>でcronjobの一覧のうち、cronjob名と一致するcronjobのみ表示

  • kubectl delete cronjob <cronjob名>cronjobの削除

  • kubectl get job でjobの一覧取得

    • (By default Kubernetes sets the Job history limits so that only the last three successful and last failed job are retained.)
  • kubectl get jobs/<job名>でjobの一覧のうち、job名と一致するjobのみ表示

  • kubectl describe jobs <job名>で指定されたjobの実行履歴を表示

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?