노드 당 Pod가 한 개씩 실행되도록 보장
로그 수입기, 모니터링 에이전트와 같은 프로그램 샐행 시 적용
Pod의 이름을 보장
특정 pod 개수의 이름만 유지시켜주는거지 어떤 노드로 작동하는지는 보장 X
예) 노드1, 노드2, 노드3에 각각 nginx-1, nginx-2, nginx-3 이렇게 있고
nginx-2를 삭제하면 자동으로 nginx-2 이름으로 다시 생성되어도 같은 노드에 pod가 생성되지는 않음
Pod의 정상적인 종료를 관리
batch 처리할때 사용
완료된 작업을 지우지 않고 보존한다.
비정상 종료가 되면 새로운 pod 생성
restartPolicy: OnFailure // Pod가 아닌 컨테이너를 재시작
backoffLimit: 3 // 3번을 모두 실패하면 Pod가 삭제된다.
restartPolicy: Never // 컨테이너가 아닌 Pod를 다시 실행한다.
레플리카스 필드가 없다
대신 비슷한 completions
Job이 완료되면 completions 수 만큼 Pod 실행
parallelism
사용시 Pod 동시 실행 가능.
parallelism: 2
: 2개씩 실행 후 완료되면 또 2개 동시 실행activeDeadlineSeconds: 5
: 5초안에 안끝나면 강제 종료 시킨다.
Job 스케쥴링 예약 사용 지원
Job의 부모, Job을 제어, 데이터백업, 이메일 보내기, 테스크 정리에 사용
스케쥴링 0 3 1 *"
분 시 일 월 날짜
완료되어있는 Job이 특정 시간에 반복실행하게 해준다.
apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: cronjob-definition
spec:
schedule: "0 3 1 * *" //cronJob 옵션
startingDeadlineSeconds: 300 //cronJob 옵션 , 해당 Job을 300초안에 실행시키지 못하면 종료시킨다
successfullJobsHistoryLimit: 3
// cronJob 옵션, 디폴트 3, 컨테이너 3개 이상 넘어가지 않게 설정,
//마지막 컨테이너가 완성되면 가장 오래된 완성된 컨테이너를 삭제
concurrencyPolicy: Forbid(or Allow) //cronJob 옵션
jobTemplate:
spec:
template: //Job 템플릿을 그대로 넣으면된다.
spec:
containers:
- name: hello
image: budybox
args:
- /bin/sh
- -c
- data; echo Hello
restartPolicy: Never
디플로이먼트 - 레플리카Set의 롤링 관리해주는 부모?
컨테이너이름=이미지이름:버전
--record
옵션을 사용하면 history 내역이 쌓여서 해당 내역으로 롤링 업데이트 가능레플리케이션 컨트롤러/레플리카셋
Selector
matchLabels
와 matchExpressions
옵션데몬셋
스테이풀 셋
크론잡
잡