Kubernetes: Aplicación con CronJob
En este caso práctico, vamos a generar una aplicación web que consta de un Pod, un Service y un CronJob.
• Pod: el primer objeto es de tipo Pod, y consta de etiquetas “nginx”. Se crea un contenedor llamado “front”, que va a usar un volumen persistente en la carpeta “/mnt/web”. Y como podéis intuir, se genera un servidor “nginx” al que se le monta un volumen persistente.
• Service: para darle visibilidad desde el interior, generaremos un servicio, en este caso LoadBalancer, y que va a abrir el puerto 80.
• CronJob: adicionalmente, vamos a generar un objeto que nos permite crear una programación. Lo lanzaremos cada minuto mediante un job, que tiene el mismo volumen que el servidor web y lanza una imagen “Ubuntu”, y desde esa imagen usaremos el comando ECHO poniendo un “.” en el fichero index.html de la aplicación web.
Contenido del fichero YML, hay que tener cuidado con los espacios al generarlo:
Creamos los directorios necesarios en los workers:
raulunzue@KUBERNETES02:~$ sudo mkdir /mnt/web
raulunzue@KUBERNETES02:~$ sudo mkdir /usr/share/nginx/html -p
Se ejecuta el fichero yml con el siguiente comando:
raulunzue@KBMASTER:~$ kubectl create -f cronjob.yml
pod/nginx created
service/nginx created
cronjob.batch/nginx created
Comprobamos los pods, servicios y cronjobs generados y que no hay errores:
raulunzue@KBMASTER:~$ kubectl get svc,cronjobs,pods
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.96.0.1
service/nginx LoadBalancer 10.96.39.155
NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE
cronjob.batch/nginx */1 * * * * False 0 27s 8m52s
NAME READY STATUS RESTARTS AGE
pod/nginx 1/1 Running 0 8m52s
pod/nginx-1584740520-p4rc6 0/1 Completed 0 2m22s
pod/nginx-1584740580-nzvt5 0/1 Completed 0 81s
pod/nginx-1584740640-nptmd 0/1 Completed 0 21s
Si nos vamos a un navegador, hemos expuesto el puerto a través del puerto 80:32599, y podemos ver el resultado. Cada punto se añade cada minuto:
Borrado de cronjobs, servicio y pods:
raulunzue@KBMASTER:~$ kubectl delete cronjobs nginx
cronjob.batch nginx" deleted
raulunzue@KBMASTER:~$ kubectl delete svc nginx
service "nginx" deleted
raulunzue@KBMASTER:~$ kubectl delete pods nginx
pod "nginx" deleted
¿Te ha gustado la entrada SÍGUENOS EN TWITTER?
Te ha gustado la entrada SGUENOS EN TWITTER O INVITANOS A UN CAFE?