ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [K8s] 컨트롤러 - DaemonSet, Job, CronJob
    도커 | 쿠버네티스 2023. 1. 24. 13:17

    DaemonSet

    모든 노드에 특정 파드를 최소 실행 되어야 할 개수 설정 및 생성을 한다.

    Deployment와 같이 롤링 업데이트와 롤백이 가능하다.

     

    예시

    apiVersion: apps/v1
    kind: DaemonSet
    metadata:
      name: DSnginx
      annotations:
        kubernetes.io/change-cause: version 1.16
    spec:
      selector:
        matchLabels:
          app: web
            # matchExpressions:
            #- {key: version, operator: In, values: ["1.14","1.15"]}
      template:
        metadata:
          name: nginx-pod
          labels:
            app: web
              # version: "1.14"
        spec:
          containers:
          - name: nginx-container
            image: nginx:1.16

     

    yaml 작성 시 참고사항

    spec > template > spec > nodeSelector :  파드가 생성될 노드를 특정하는 설정

     

    Job

    배치처리를 할 때 사용한다.

    자동적으로 재시작되는 것을 제어한다.

     

    재시작 제어 옵션 - restartPolicy

    • OnFailure : 비정상 종료 시 원래 실행 중이던 노드에서 컨테이너 재시작
    • Never : 비정상 종료 시 재시작을 막은 후 새로운 파드를 실행

    예시

    apiVersion: batch/v1
    kind: Job
    metadata:
      name: job-example
    spec:
      template:
        spec:
          containers:
          - name: centos-container
            image: centos:7
            command: ["bash"]
            args:
            - "-c"
            - "echo 'Hello World'; sleep 5; echo 'Bye'"
          restartPolicy: Never

     

    yaml 작성 시 참고사항

    spec > completions : 하나의 Job에서 생성할 파드의 개수를 설정
    spec > parallelism : Job이 실행될 때 한 번에 생성할 파드의 개수를 설정
    spec > activeDeadlineSeconds : Job의 실행을 정지하는 제한 시간을 설정
    spec > ttlSecondsAfterFinished : Job 종료된 뒤 설정값(초) 후 삭제

     

    CronJob

    Job에 linux cronjob의 스케줄링 기능을 추가

    CronJob 스케줄링 구조  ex) "* * * * *" 
    각 *에 들어가는 수는 각각 분(0-59) 시(0-23) 일(1-31) 월(1-12) 요일(0-7)을 의미한다.

    참고 사이트
    https://crontab.guru/

    예시

    apiVersion: batch/v1 # CronJob
    kind: CronJob
    metadata:
      name: hello
    spec:
      schedule: "* * * * *" # 매분마다
      jobTemplate:
        spec:
          template: # Job
            spec:
              containers:
              - name: hello
                image: busybox:1.28
                imagePullPolicy: IfNotPresent
                command:
                - /bin/sh
                - -c
                - date; echo Hello from the Kubernetes cluster
              restartPolicy: OnFailure
    yaml 작성 시 참고사항

    concurrencyPolicy
    1. Allow : 주기마다 실행되는 Job은 서로 유별하게 작동, 기본값
    2. Forbid : Job을 실행해야 할 때 이전 주기에 실행된 Job이 아직 완료되지 않았을 경우 생략
    3. Replace : Job을 실행해야 할 때 이전 주기에 실행된 Job이 아직 완료되지 않았을 경우 이전 Job 삭제, 새 Job 실행

    댓글

Designed by Tistory.