1.Job
1-1.成功jobおよび動作確認
1-1-1.事前準備としてnginxおよびserviceを作成
# Job確認の事前準備としてnginxとsvcを生成
apiVersion: v1
kind: Pod
metadata:
labels:
run: nginx
name: nginx
spec:
containers:
- image: nginx
name: nginx
---
apiVersion: v1
kind: Service
metadata:
name: nginx
spec:
selector:
run: nginx
ports:
- name: http
port: 80
targetPort: 80
type: ClusterIP
1-1-2.作成確認

1-1-3.Job作成
apiVersion: batch/v1
kind: Job
metadata:
name: job-curl-succ
spec:
template:
spec:
containers:
- name: net-tools
image: sysnet4admin/net-tools
command: ["curlchk", "nginx"]
restartPolicy: Never
1-1-4.動作確認
1-1-2에서 확인했듯이 nginx와 서비스가 동작중이고 정상적으로 상태확인이 성공했다.

1-2.失敗jobおよび動作確認
1-2-1.Job作成
apiVersion: batch/v1
kind: Job
metadata:
name: job-curl-fail
spec:
template:
spec:
containers:
- name: net-tools
image: sysnet4admin/net-tools
command: ["curlchk", "hwan"] // nginxではなく、hwanを入力
restartPolicy: Never
1-2-2.動作確認
hwan은 동작중이지 않다는 에러메세지가 출력됐다.

1-3.job作成失敗および動作確認
1-3-1.Job作成
apiVersion: batch/v1
kind: Job
metadata:
name: job-make-fail
spec:
template:
spec:
containers:
- name: net-tools
image: sysnet4admin/net-tools
command: ["curlchk", "nginx"]
// restartPolicyを削除
1-3-2.動作確認

※JobにおいてrestartPolicyをOnFailureまたはNeverに設定しなければならないという、k8sの強制的なルールがある。
Jobは「一度タスクを完了すれば終了(Exit)する」ことが目的であり、Alwaysを使用するとタスクが終わっても再実行を繰り返す無限ループに陥るためである。
したがって、Jobの本質(バッチ作業の完了可否)を明確に管理するために、podを新しく立ち上げるか(Never)、内部で再起動するか(OnFailure)を選択させる仕組みになっている。
1-4 .job並列実行および動作確認
1-4-1.Job作成
completions: 実行量
※completionsが3の場合、Jobが成功したとみなされるためには、計3つのPodが順次実行され、正常に終了する必要がある。
apiVersion: batch/v1
kind: Job
metadata:
name: job-completions
spec:
completions: 3 // 3つのPodが順次実行される。
template:
spec:
containers:
- name: net-tools
image: sysnet4admin/net-tools
command: ["curlchk", "nginx"]
restartPolicy: Never
1-4-2.動作確認
podのAGEを見ると順次実行されたことが分かる。

1-4-3.Job作成
parallelism:並列性/並行性
kind: Job
metadata:
name: job-parallelism
spec:
parallelism: 3 // 同時に3つのPodを起動して、ジョブを実行する。
template:
spec:
containers:
- name: net-tools
image: sysnet4admin/net-tools
command: ["curlchk", "nginx"]
restartPolicy: Never
1-4-4.動作確認
podのAGEを見ると同時実行されたことが分かる。

1-5.job自動終了および動作確認
1-5-1.Job作成
activeDeadlineSeconds:Jobによって生成されたPodが「アクティブ(Active)」であった合計時間を基準に、Podを終了させる。
※再試行回数の設定に関わらず終了させる。
※Podが起動中の状態でも終了させるが、terminationGracePeriodSecondsが未設定の場合、デフォルト値の30秒によって30秒間の猶予時間が与えられる。30秒を超過すると強制終了(kill)される。
※処理後、Jobは削除されない。
apiVersion: batch/v1
kind: Job
metadata:
name: job-activedeadlineseconds
spec:
backoffLimit: 3
activeDeadlineSeconds: 30 //Pod作成を基準に、30秒後に終了するよう設定。
template:
spec:
containers:
- name: net-tools
image: sysnet4admin/net-tools
command: ["/bin/sh", "-c"]
args:
- sleep 80;
curlchk nginx;
restartPolicy: Never
1-5-2.動作確認

①JobによるPod作成開始の30秒後にTerminating
②terminationGracePeriodSecondsのデフォルト値による30秒の猶予
③Podの強制終了(kill)
④Jobは削除されない
1-5-3.Job作成
ttlSecondsAfterFinished:Jobによって生成されたPodの終了後、リソースをクリーンアップ。
※Jobも削除される
apiVersion: batch/v1
kind: Job
metadata:
name: job-ttlsecondsafterfinished
spec:
backoffLimit: 3
ttlSecondsAfterFinished: 30 //Jobによって起動されたPodの終了後、30秒後にリソースをクリーンアップ。
template:
spec:
containers:
- name: net-tools
image: sysnet4admin/net-tools
command:
- "/bin/sh"
- "-c"
- |
echo "start"
sleep 10
restartPolicy: Never
1-5-4.動作確認

①Podの終了後、30秒後にリソースをクリーンアップ
②Jobも削除された
2.CronJob
2-1.CronJob作成および動作確認
2-1-1.Cronルール

2-1-2.CronJob作成
successfulJobsHistoryLimit:성공한 Job 오브젝트의 이력을 보관한다. 디폴트(3)
apiVersion: batch/v1
kind: CronJob
metadata:
name: cj-1m-hist3-curl
spec:
schedule: "*/1 * * * *" //マスターノードのシステム時間を基準に起動する。
jobTemplate: # Template for job
spec: # same as before
template:
spec:
containers:
- name: net-tools
image: sysnet4admin/net-tools
command: ["curlchk", "nginx"]
restartPolicy: Never
2-1-3.動作確認

①1分ごとにCronJob起動
②successfulJobsHistoryLimitによって、cj-1m-hist3-curl-29638867-8mk6w、fqt55削除
'k8s > APP配布' 카테고리의 다른 글
| DaemonSet、StatefulSet (0) | 2026.05.09 |
|---|---|
| command/args (0) | 2026.05.09 |
| Deployment、ReplicaSet (0) | 2026.05.08 |