¿Qué vamos a ver?
Basado en la documentación oficial de K8s (licencia CC-BY-4.0).
>_.source <(kubectl completion bash)
Comprueba que funciona escribiendo kubectl y presionando la tecla "TAB" 2 veces.Crea un namespace para aislar los recursos de este ejercicio del resto de recursos en tu clúster:
kubectl create namespace lab-jobs-cronjobs
Vamos a desplegar un Job con una tarea contenerizada determinada.
jobs/demo-job.yaml con este manifiesto:apiVersion: batch/v1
kind: Job
metadata:
name: demo-job
spec:
template:
metadata:
name: demo-job
spec:
containers:
- name: pi
image: perl
command: ["perl"]
args: ["-Mbignum=bpi", "-wle", "print bpi(2000)"]
restartPolicy: Never
kubectl apply -f jobs/demo-job.yaml -n lab-jobs-cronjobs
kubectl get pods -n lab-jobs-cronjobs
Completed cuando el Job finaliza su ejecución:kubectl get pods -n lab-jobs-cronjobs -w
Cancela el comando "watch" con CTRL + C.kubectl describe jobs demo-job -n lab-jobs-cronjobs
Cuando el Job acaba, el controlador elimina los Pods creados, pero no elimina el objeto Job, para poder comprobar sus logs y estado.kubectl get pods -n lab-jobs-cronjobs
kubectl logs [NOMBRE_POD] -n lab-jobs-cronjobs
Vamos a desplegar un CronJob con una tarea cron contenerizada determinada.
jobs/demo-cronjob.yaml con este manifiesto:apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: demo-cronjob
spec:
schedule: "*/1 * * * *"
jobTemplate:
spec:
template:
spec:
containers:
- name: hello-world
image: busybox
args:
- /bin/sh
- -c
- date; echo "Hello world from a CronJob!"
restartPolicy: OnFailure
kubectl apply -f jobs/demo-cronjob.yaml -n lab-jobs-cronjobs
kubectl get jobs -n lab-jobs-cronjobs
kubectl describe jobs demo-cronjob -n lab-jobs-cronjobs
Al desplegarse, el CronJob crea un Pod para ejecutar su tarea cron. Encuentra el nombre del Pod creado en el anterior comando y apúntalo, [NOMBRE_POD]kubectl logs [NOMBRE_POD] -n lab-jobs-cronjobs
Elimina el namespace, lo cual eliminará todos los recursos:
kubectl delete namespace lab-jobs-cronjobs
En esta práctica hemos visto cómo: