Kubernetes - Job, CronJob


Job, CronJob - Kubernetes


この文章はクバーネディスの講座を参考に金泰民の大勢を整理したものだ.
ソース:https://www.inflearn.com/course/%EC%BF%A0%EB%B2%84%EB%84%A4%ED%8B%B0%EC%8A%A4-%EA%B8%B0%EC%B4%88/dashboard

🔍 テスト内容


  • ジョブ構成

  • CronJobの設定
    Dockerイメージはキム・テミンを使ったイメージです

    🚀 Job


    Jobとは何かを見てみましょう.
    Podの作成時:

  • 手動で作成した場合

  • ReplicaSetを使用して作成:

  • ジョブによって作成:
  • 同じPodですが、これはどのような場合に作成されるかによって異なります.
    ノードがオフの場合、コントローラが作成したPodは他のノードで再生されます.
    ReplicaSetによって再作成されたPodが起動していない場合は、再起動できます.
    これは、サービスが中断されないようにすることを目的としています.
    Restartは、Podがそのままで、Containerのみを再起動することを意味します.
    プロセスが動作していない場合、ジョブによって作成されたPodは完了します.
    Finishは、Podをクリアするのではなく、ノード上のリソースを使用しないことを示します.
    完了したPodに接続してログを表示したり、必要に応じてログを直接削除したりできます.
    今からジョブを作ろう
    Job1.yaml
    apiVersion: batch/v1
    kind: Job
    metadata:
      name: job-1
    spec:
      template:
        spec:
          restartPolicy: Never
          containers:
          - name: container
            image: kubetm/init
            command: ["sh", "-c", "echo 'job start';sleep 20; echo 'job end'"]
          terminationGracePeriodSeconds: 0
    20秒で終わるジョブ


    jobの作成に伴いpodの作成も表示されます.

    Sat,26 Mar 2022:29:22,Podは実行中です.
    20秒後にPodの状態を確認しましょう

    Podが閉じていることを確認.
    今Podに接続してログを確認しましょう!kubectl logs -f pod/job-1-g5sfh
    ***

    🚀 CronJob


    CronJobは、周期的に時間ごとにJobを作成する役割です.
    特定の時間に繰り返し使用するために、Job単位ではなくCronJobを作成します.
    ex)予約メール、定期更新確認.
    1分おきにJobのCronJobを生成する
    cj.yaml
    apiVersion: batch/v1
    kind: CronJob
    metadata:
      name: cj
    spec:
      schedule: "*/1 * * * *"
      jobTemplate:
        spec:
          template:
            spec:
              restartPolicy: Never
              containers:
              - name: container
                image: kubetm/init
                command: ["sh", "-c", "echo 'job start';sleep 20; echo 'job end'"]
              terminationGracePeriodSeconds: 0


    タイムゾーンに注意すると、1分おきにJobが作成されます.

    これで終わりです。🙋🏻‍♂️