설명
startingDeadlineSeconds는 정해진 시각을 놓친 작업을 언제까지 시작할 수 있는지 정하는 값입니다. 이 값이 없으면 컨트롤러 지연이나 클러스터 문제 뒤에 오래된 작업이 뒤늦게 실행될 수 있습니다. 모든 누락 실행이 반드시 재실행되는 것은 아닙니다.
이 설정은 실행 중인 Job의 최대 실행 시간이 아닙니다. 늦게 실행해도 되는 작업은 생략할 수 있으며, 시간에 민감한 작업은 허용 지연을 명확히 정해야 합니다.
잠재적 영향
- 오래 지연된 작업이 현재 데이터나 상태에 부적절한 영향을 줄 수 있습니다.
- 너무 짧은 deadline은 정상적인 컨트롤러 지연에도 실행을 건너뛰게 할 수 있습니다.
해결 방법
- 늦은 실행을 제한해야 한다면 spec.startingDeadlineSeconds를 허용 가능한 지연에 맞춰 지정하세요. 컨트롤러의 확인 주기와 운영 지연을 고려하세요.
- 중복 실행에 안전한 작업을 만들고 concurrencyPolicy와 실패 재시도를 검토하세요. 실행 시간 제한이 필요하면 Job의 activeDeadlineSeconds를 별도로 설정하세요.
예시
스케줄 설정을 비교하는 예시입니다. 실제 작업 명령과 검증된 이미지 버전은 따로 지정하고, 100초는 작업 요구에 맞게 조정하세요.
변경 전
yaml
apiVersion: batch/v1
kind: CronJob
metadata:
name: hello
spec:
schedule: "*/1 * * * *"
jobTemplate:
spec:
template:
spec:
containers:
- name: hello
image: busybox
restartPolicy: OnFailure
시작 지연에 대한 명시적 마감 시간이 없습니다. 늦은 실행이 허용되는지 검토해야 합니다.
변경 후
yaml
apiVersion: batch/v1
kind: CronJob
metadata:
name: hello
spec:
schedule: "*/1 * * * *"
startingDeadlineSeconds: 100
jobTemplate:
spec:
template:
spec:
containers:
- name: hello
image: busybox
restartPolicy: OnFailure
예정 시각으로부터 100초의 시작 마감 시간을 둡니다. Job이 시작된 뒤 100초에 종료시키는 설정은 아닙니다.