Kubernetes - Job, CronJob
Job, CronJob - Kubernetes
이 글은 김태민님의 대세는 쿠버네티스 강의를 참고하여 정리하였습니다!
🔍 테스트해 볼 내용
-
Job 구성
-
CronJob 구성
도커 이미지는 김태민님께서 만들어두신 이미지를 사용합니다.
🚀 Job
Job이라는 것이 무엇인지 알아봅시다.
Pod가 만들어지는 경우는 다음과 같습니다.
-
직접 만드는 경우
-
ReplicaSet을 사용해서 만드는 경우
-
Job을 통해서 만드는 경우
모두 같은 Pod들이지만 어떤 경우에 의해 만들어졌냐에 따라 다르게 됩니다.
Node가 다운 될 때, Controller에 의해 만들어진 Pod는 다른 Node에 재생성되게 됩니다.
ReplicaSet에의해 Recreate된 Pod가 구동하지 않을 경우 Restart까지 해줍니다.
즉, 서비스가 중단되지 않는 것을 목표로서 동작하는 것 입니다.
Restart는 Pod는 그대로 유지시키고, Container만 재구동 시키는 것을 의미합니다.
Job에 의해 만들어진 Pod는 프로세스가 일을 하지 않으면 Finish시킵니다.
Finish는 Pod를 지우는 것이 아닌, 노드의 자원을 사용하지 않겠다는 것을 뜻합니다.
Finish된 Pod에 접속하여 Log 등을 확인할 수 있고 원하는 경우 직접 삭제할 수 있습니다.
이제 Job을 만들어 보도록합시다
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을 종료시키겠다는 것을 뜻합니다.
job이 만들어지면서 Pod또한 만들어진 것을 볼 수 있습니다.
Sat, 26 Mar 2022 02:29:22 에 Pod가 Running중인 것을 확인할 수 있습니다.
20초가 지나고 Pod의 상태를 확인해봅시다.
Pod가 종료된 것을 확인하였습니다.
이제, Pod에 접속해서 Log를 확인해보도록합시다!
kubectl logs -f pod/job-1-g5sfh
🚀 CronJob
CronJob은 Job들을 주기적으로 시간에 따라 생성을 하는 역할입니다.
Job을 하나 단위로 쓰지는 않고 CronJob을 만들어서 특정시간에 반복적으로 사용하기 위해서 만듭니다.
ex) 예약메일, 주기적인 Update확인.
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을 생성하는 것을 볼 수 있습니다!
이상으로 마치겠습니다. 🙋🏻♂️
Author And Source
이 문제에 관하여(Kubernetes - Job, CronJob), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@sungjin0757/Kubernetes-Job-CronJob저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)