잡 · 크론잡 (Job & CronJob)
디플로이먼트는 파드가 몇 개 떠 있는지를 지키고, 잡은 몇 번 성공했는지를 셉니다. 정산이나 데이터 이관처럼 끝나야 하는 일을 개수로 다루면 파드가 끝날 때마다 빈자리로 보여 영원히 다시 뜹니다. 잡은 정해진 완료 횟수를 채우면 새 파드를 만들지 않고 멈추고, 크론잡은 그 잡을 정해진 시각마다 찍어냅니다.
01잡 · 크론잡 (Job & CronJob)
개념 한눈에 보기웹 서버는 계속 떠 있어야 하지만, 정산이나 데이터 이관처럼 끝나야 하는 일도 있습니다. 이런 일을 디플로이먼트에 맡기면 어긋납니다.
일을 마친 파드가 빈자리로 보입니다. 하나를 선언했는데 하나가 없으니, 같은 일을 처음부터 다시 시작합니다.
잡은 떠 있는 개수 대신 성공한 횟수를 셉니다. 여섯 번 끝나면 완료라고 선언하고, 한 번에 둘씩 돌립니다.
잡 컨트롤러가 파드 둘을 만듭니다. 동시에 도는 개수를 정하는 값이 parallelism 입니다.
하나가 일을 마칩니다. 완료 수가 하나 오르고, 빈자리에 다음 파드가 곧바로 들어갑니다.
끝난 파드는 지워지지 않고 남습니다. 로그를 봐야 하기 때문이고, 쌓이는 것은 ttlSecondsAfterFinished 가 치웁니다.
한 파드가 오류로 끝납니다. 잡은 그 몫을 포기하지 않고 새 파드를 만들어 다시 시도합니다.
다시 띄우는 간격은 배로 늘어납니다. 실패가 backoffLimit(기본 6)을 넘으면 잡 자체가 실패로 끝납니다.
여섯 번째 완료가 채워집니다. 잡은 Complete 로 표시되고 더 이상 새 파드를 만들지 않습니다.
이 일을 매일 새벽 세 시에 돌리고 싶다면 크론잡을 얹습니다. 크론잡이 만드는 것은 파드가 아니라 잡입니다.
지난 실행도 기록으로 남습니다. 정해진 개수만큼만 두고 오래된 잡부터 지우므로, 어제 것을 열어 보는 정도만 가능합니다.
02 쉽게 이해하기
For Everyone디플로이먼트는 떠 있는 개수를 지키고 잡은 성공한 횟수를 셉니다. 끝나는 일을 개수로 다루면 일을 마치고 빠진 자리를 계속 새로 채우게 됩니다.
잡은 completions(채워야 할 성공 횟수)와 parallelism(동시에 도는 개수) 두 값으로 움직입니다.
파드가 성공으로 끝나면 완료 수가 하나 오르고 빈자리에 다음 파드가 들어가며, 완료 수가 채워지면 잡이 Complete 로 표시되고 더 만들지 않습니다.
실패로 끝난 파드는 새 파드로 다시 시도하되 간격이 배로 늘고, 실패가 backoffLimit(기본 6)을 넘으면 잡 자체가 실패로 끝납니다.
파드의 restartPolicy 는 Never 나 OnFailure 만 쓸 수 있습니다 — Always 는 끝나는 일과 모순이라 아예 거부됩니다.
끝난 파드는 지워지지 않고 남아 로그를 볼 수 있는데, 그만큼 쌓이므로 정리는 ttlSecondsAfterFinished 가 맡습니다.
크론잡은 파드가 아니라 잡을 만듭니다(CronJob → Job → Pod).
앞선 실행이 아직 안 끝났을 때 어떻게 할지는 concurrencyPolicy(Allow·Forbid·Replace)가 정하고, 지난 실행은 successfulJobsHistoryLimit(기본 3) 만큼만 남습니다.
실행 시각이 정확히 지켜지지는 않습니다 — 놓친 실행을 언제까지 만회할지는 startingDeadlineSeconds 가 정합니다.
- –배치·데이터 이관 작업을 디플로이먼트 대신 잡으로 옮기기
- –completions·parallelism 으로 일감 나누기
- –재시도 한도와 실패 판정 잡기
- –정기 작업을 크론잡으로 옮길 때 중복 실행 정책 고르기
03 자주 묻는 질문
FAQ잡 · 크론잡 (Job & CronJob)란 무엇인가요?+
디플로이먼트는 파드가 몇 개 떠 있는지를 지키고, 잡은 몇 번 성공했는지를 셉니다. 정산이나 데이터 이관처럼 끝나야 하는 일을 개수로 다루면 파드가 끝날 때마다 빈자리로 보여 영원히 다시 뜹니다. 잡은 정해진 완료 횟수를 채우면 새 파드를 만들지 않고 멈추고, 크론잡은 그 잡을 정해진 시각마다 찍어냅니다.
잡 · 크론잡 (Job & CronJob)은(는) 어디에 사용하나요?+
배치·데이터 이관 작업을 디플로이먼트 대신 잡으로 옮기기, completions·parallelism 으로 일감 나누기, 재시도 한도와 실패 판정 잡기, 정기 작업을 크론잡으로 옮길 때 중복 실행 정책 고르기
잡 · 크론잡 (Job & CronJob)를 쉽게 비유하면?+
디플로이먼트는 떠 있는 개수를 지키고 잡은 성공한 횟수를 셉니다. 끝나는 일을 개수로 다루면 일을 마치고 빠진 자리를 계속 새로 채우게 됩니다.
