kubectl run testpod --image=centos:7 --command sleep 5
5초후에 컨테이너가 종료가 된다. 하지만 kubenetes 의 가장 기본기능이 24/7 pod 가 살아있게(Running) 하는거니까 Restart 시킨다.
RESTARTS 가 계속해서 증가한다.
해당 pod가 batch 작업 (로그를 db로 다 옴기거나) 이 정상적으로 끝났다면 pod가 종료되더라도 다시 실행 안시키고 만약 batch 작업을 완료하지 못하고 비정상적으로 끝났다면 다시 실행시킨다.
50초후에 종료 되는 job이다
restartPolicy :Never = 해당 컨테이너에 문제가 생기면 아예 새로운 pod를 실행시킨다.
restartPolicy: OnFailure + backoffLimit:3 이면 컨테이너가 정상적으로 실행되지 않거나 비정상적으로 종료되면 container를 3번까지 run 해보고 3번 초과시 해당 pod를 지워버린다.
completions: 5 == 해당 job이 완료가 되면 이 job을 방금것 포함해서 5번 실행시키겠다.
parallelism: 2 == 총 5번 job을 실행시킬떄 2개씩 차례대로 실행시키겠다. running 되는것이 2개까지 유지하고 싶다.
2개가 먼저 실행되고 둘중 하나가 먼저 끝나게 되면 1개만 추가적으로 실행된다. 총 2개를 유지하고 싶은 것이니까
activeDeadlineSeconds: 5 == 5초안에 job이 안끝나면 강제로 complete 시키겠다
all of its running Pods are terminated and the Job status will become type: Failed with reason: DeadlineExceeded.
job이 complete 되더라도 종료되지않는다. 해당 pod의 정보를 보존하기 위해
kubectl delete jobs.batch <NAME> 으로 해당 컨트롤러(job)을 종료시킨다.
CronJob = 사용자가 원하는 시간에 Job 실행 예약 지원
0분 03시 1일 매달 매주 , 어떤 JOB을 실행시킨다. linux의 cron 과 유사하다
1-2 == 1에서 2까지
*/5 == 5분에 한번씩 실행 , 5는 여기서 step이다. 시간이 이었으면 5시간마다 한번씩 실행하게 되는것이다.
schedule 만 추가 되었다. 그리고 jobTemplate에 써있는 Job을 그대로 반복시켜주겠다.
매분 반복해서 jobTemplate을 실행시켜준다.
concurrencyPolicy: 는 deafult 가 allow 다. == 한 번에 여러개의 job이 돌고 있어도 괜찮다.
만약 forbid 이고 sleep 이 80 이면 매분(60초) 마다 실행시키게 되는데 concurrencypolicy가 forbid임으로 매분 실행되지 못한다. 2분에 한개식 실행하겠지 1분을 격분?으로 skip 할테니까
1분 마다 하나씩 실행이되고 job이 다 끝나면 completed로 status가 변경된다.
kubectl get cronjobs.batch -o yaml 로 살펴보면 successfulJobHistoryLimit :3 에 설정된 수 많큼 complete된 job만 보관을 한다.
'Cloud > Kubernetes' 카테고리의 다른 글
[따배쿠] 7-1, 2. 쿠버네티스 Service 개념과 종류 + 실습 (0) | 2022.02.11 |
---|---|
[따배쿠] Appendix1. 멀티마스터 쿠버네티스 클러스터(multi-master - HA Kuberenetes cluster) 운영 (0) | 2022.02.11 |
[따배쿠] 6-4,5. 쿠버네티스 DaemonSet! + RollingUpdate, StatefulSet (0) | 2022.02.06 |
[따배쿠] 6-3. 쿠버네티스 RollingUpdate를 위한 Deployment (0) | 2022.02.05 |
[따배쿠] 6-2. ReplicaSet(ReplicationController와의 차이점은?) 쿠버네티스 pod 개수 보장 (0) | 2022.02.05 |