my question is -
How does k8s manage pod creation/deletion in cronjobs and how to specify memory/cpu requirements in a Kubernetes CronJob ?
Cluster information:
Kubernetes version: n/a
Cloud being used: n/a
Installation method:
Host OS: linux
CNI and version:
CRI and version:
Please take a look at kubernetes documentation for more details.
The Kubernetes controller watches for CronJob
resources and schedules Jobs based on the defined schedule (.spec.schedule
field in crontab format).
-
The Job
creates one or more Pods
to run the specified workload.
-
If .spec.concurrencyPolicy
is set to:
-
Allow
(default) → Multiple instances can run concurrently.
-
Forbid
→ A new Job won’t start if a previous Job is still running.
-
Replace
→ A new Job replaces an existing one.
-
The Pod
executes the specified container command.
-
If the Pod
completes successfully (Exit Code 0
), the Job is marked as successful.
-
If the Pod
fails, Kubernetes may retry it based on .spec.backoffLimit
.
Example for CPU, memory config
apiVersion: batch/v1
kind: CronJob
metadata:
name: my-cronjob
spec:
schedule: "0 * * * *" # Runs every hour
jobTemplate:
spec:
template:
spec:
containers:
- name: my-container
image: my-image:latest
resources:
requests:
cpu: "500m" # Requests 0.5 CPU
memory: "256Mi" # Requests 256MB of RAM
limits:
cpu: "1" # Limits to 1 CPU
memory: "512Mi" # Limits to 512MB of RAM
restartPolicy: OnFailure # Restart on failure
1 Like