DaemonSets run one pod per node; Jobs run to completion; CronJobs run on a schedule.
DaemonSets and Jobs
# DaemonSet — one pod per node (logging, monitoring)
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: fluentd
spec:
selector:
matchLabels:
app: fluentd
template:
metadata:
labels:
app: fluentd
spec:
containers:
- name: fluentd
image: fluentd:latest
# Job — run to completion
apiVersion: batch/v1
kind: Job
metadata:
name: db-migrate
spec:
template:
spec:
containers:
- name: migrate
image: myapp:latest
command: ["python", "manage.py", "migrate"]
restartPolicy: OnFailure
# CronJob — scheduled job
spec:
schedule: "0 2 * * *" # 2am daily
jobTemplate: ...