Overview

【yaml】
templateの中にnodeSelectorを指定するとそのLabelが指定されているNodeのみPodが生成されて、指定しない場合は全てのNodeにPodが生成される。
containerの中のhostPortに18080を設定すると18080に入ってきたtrafficはそのPodの8080 Containerへ接続される。
DamonSet
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: daemonset-1
spec:
selector:
matchLabels:
type: app
template:
metadata:
labels:
type: app
spec:
containers:
- name: container
image: <image file>
ports:
- containerPort: 8080
hostPort: 18080
DamonSet-nodeSelector
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: daemonset-2
spec:
selector:
matchLabels:
type: app
template:
metadata:
labels:
type: app
spec:
nodeSelector:
os: centos
containers:
- name: container
image: <image file>
ports:
- containerPort: 8080
2. Job
Jobもtemplateとselectorがある。
templateは特定の作業だけ実行して終了となるPodを設定する。
selectorは直接作らなくてもJobが作成する。
templateは一般的に1つのPodを作成し、そのPodがタスクを完了すると、Jobも終了となるが、
上の図のように「Completions:6」を指定すると6つのPodを1つずつ順番に実行させて、全てのタスクが終了したらJobを終了させる方法もある。
そしてparallelismに2を指定すると、2つずつPodが生成され
「activeDeadlineSeconds:30」を指定すると、そのJobは30秒後に機能が停止され、実行されているすべてのPodは削除されて実行されていないPodも今後の実行ができなくなる
もし10秒かかる作業を作ったが、30秒になっても作業が終わらないとsystem hangになっている可能性が高く、その場合はPodを削除してresourceを返却して作業がこれ以上進まないように設定するときにactiveDeadlineSecondsを使う。
【yaml】
restartPolicy:Jobの場合はNaverまたはOnfailerを設定する。(必須)
Job-1
apiVersion: batch/v1
kind: Job
metadata:
name: job-1
spec:
template:
spec:
restartPolicy: Never
containers:
- name: container
image: <image file>
command: ["sh", "-c", "echo 'job start';sleep 20; echo 'job end'"]
terminationGracePeriodSeconds: 0
Job-2
apiVersion: batch/v1
kind: Job
metadata:
name: job-2
spec:
completions: 6
parallelism: 2
activeDeadlineSeconds: 30
template:
spec:
restartPolicy: Never
containers:
- name: container
image: <image file>
command: ["sh", "-c", "echo 'job start';sleep 20; echo 'job end'"]
terminationGracePeriodSeconds: 0
3. CronJob
JobTemplateの設定通りにJobを作成する。
scheduleの設定通りに時間になったらJobを作成する。
上の図のFormatはよく使っているcron形式で、1分に1つのJobを作成する設定値である。
即ち1分間隔でJobが生成され、JobはPodを作ることになる。
※Suspendは、実行中のJobを一時停止させる機能
【yaml】
schdule와 concurrencyPolicy가 있으며 template은 Job을 만드는 내용을 지정한다
CronJob
apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: cron-job
spec:
schedule: "*/1 * * * *"
jobTemplate:
spec:
template:
spec:
restartPolicy: Never
containers:
- name: container
image: <image file>
command: ["sh", "-c", "echo 'job start';sleep 20; echo 'job end'"]
terminationGracePeriodSeconds: 0
CronJob - ConcurrencyPolicy
apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: cron-job-2
spec:
schedule: "20,21,22 * * * *"
**concurrencyPolicy: Replace**
jobTemplate:
spec:
template:
spec:
restartPolicy: Never
containers:
- name: container
image: <image file>
command: ["sh", "-c", "echo 'job start';sleep 140; echo 'job end'"]
terminationGracePeriodSeconds: 0
