[k8s] job


雑(job)
指定した数のシードが正常に終了するまで、1つ以上のシードを作成してシードを管理するリソース.

  • キャプチャによって生成されたシードは正常に終了しても削除されないため、ログを分析したり、結果を実行したりすることができます.

  • バッチ・ジョブに適しています
  • vi simple-job.yaml
  • apiVersion: batch/v1
    kind: Job
    metadata:
      name: pingpong
      labels:
        app: pingpong
    spec:
      parallelism: 3						# 동시에 실행하는 포드의 수 (=병렬로 실행)
      template:								# 포드를 정의
        metadata:
          labels:
            app: pingpong
        spec:
          containers:
            - name: pingpong
              image: gihyodocker/alpine:bash
              command: ["/bin/bash"]  
              args: 
              - "-c"
              - |
                echo [`date`] ping!
                sleep 10
                echo [`date`] pong!
          restartPolicy: Never				# 포드 종료 후 재실행 여부 설정 (Always, Never, OnFailure)
          									# 포드는 Always가 기본값
          									# 잡은 Always로 설정 불가, Never, OnFailure만 설정 가능

  • シードの作成
  • kubectl apply -f simple-job.yaml

  • ログチェック
  • kubectl logs -l app=pinpong
  •   [Wed Feb 24 10:35:37 UTC 2021] ping!	← (1) 37초
      [Wed Feb 24 10:35:47 UTC 2021] pong!
      [Wed Feb 24 10:35:39 UTC 2021] ping!	← (2) 39초
      [Wed Feb 24 10:35:49 UTC 2021] pong!
      [Wed Feb 24 10:35:53 UTC 2021] ping!	← (3) 53초
      [Wed Feb 24 10:36:03 UTC 2021] pong!

  • ステータスの確認
  • kubectl get pods -l app=pingpong -o wide
  • コロンゾ(CronJob)
    フォードを定期的に運転する

  • 1回のみの取得を実行し、クローン取得のスケジュールを指定し、定期的に取得を実行します.

  • cronなどの定期的な運用に最適なタスク

  • Yamlファイルの作成
  •   # 크론탭 날짜 지정 방식
      *      *      *      *      *
      분(0-59)  시간(0-23)  일(1-31)  월(1-12)   요일(0-7)
  • vi simple-cronjob.yaml
  •   apiVersion: batch/v1beta1
      kind: CronJob
      metadata:
        name: pingpong
      spec:
        schedule: "*/1 * * * *"                    # 파드를 실행할 스케줄을 정의
        jobTemplate:                               # 파드를 정의
          spec:
            template:
              metadata:
                labels:
                  app: pingpong
              spec:
                containers:
                  - name: pingpong
                    image: gihyodocker/alpine:bash
                    command: ["/bin/bash"]
                    args: 
                    - "-c"
                    - |
                      echo [`date`] ping!
                      sleep 10 
                      echo [`date`] pong!
                restartPolicy: OnFailure

  • 実行
  • kubectl apply -f simple-cronjob.yaml

  • 確認
  • kubectl get job -l app=pingpong
  •     pingpong-1614219360   1/1           21s        2m6s         <= 약 60초 간격으로 실행
        pingpong-1614219420   1/1           15s        66s
        pingpong-1614219480   0/1           5s         5s

  • ログチェック
  • kubectl logs -l app=pingpong
  •     [Thu Feb 25 02:22:09 UTC 2021] ping!
        [Thu Feb 25 02:22:19 UTC 2021] pong!
        [Thu Feb 25 02:23:10 UTC 2021] ping!
        [Thu Feb 25 02:23:20 UTC 2021] pong!
        [Thu Feb 25 02:24:12 UTC 2021] ping!
        [Thu Feb 25 02:24:22 UTC 2021] pong!
        [Thu Feb 25 02:25:15 UTC 2021] ping!