job example kubernetes kubectl kubernetes-jobs

kubernetes cron job example



Kubernetes-Decir cuando el trabajo está completo (3)

Estoy buscando una manera de saber (desde dentro de un guión) cuando se ha completado un trabajo de Kubernetes. Luego quiero sacar los registros de los contenedores y realizar la limpieza.

¿Cuál sería una buena manera de hacer esto? ¿Sería la mejor manera de ejecutar kubectl describe job <job_name> y grep para 1 Succeeded o algo por el estilo?


Desde la versión 1.11, puedes hacer:

kubectl wait --for=condition=complete job/myjob

y también puede establecer un tiempo de espera:

kubectl wait --for=condition=complete --timeout=30s job/myjob


Puede ver visualmente el estado de un trabajo con este comando:

kubectl get jobs myjob -w

La opción -w vigila los cambios. Usted está buscando la columna SUCCESSFUL para mostrar 1 .

Para esperar en un script de shell, usaría este comando:

until kubectl get jobs myjob -o jsonpath=''{.status.conditions[? (@.type=="Complete")].status}'' | grep True ; do sleep 1 ; done


Puedes usar el Python kubernetes-client oficial de Python kubernetes-client .

https://github.com/kubernetes-client/python

Crear nuevo virtualenv Python:

virtualenv -p python3 kubernetes_venv activarlo con

source kubernetes_venv/bin/activate

e instalar el cliente kubernetes con:

pip install kubernetes

Crea un nuevo script de Python y ejecuta:

from kubernetes import client, config config.load_kube_config() v1 = client.BatchV1Api() ret = v1.list_namespaced_job(namespace=''<YOUR-JOB-NAMESPACE>'', watch=False) for i in ret.items: print(i.status.succeeded)

Recuerde configurar su kubeconfig específico en ~/.kube/config y el valor válido para el espacio de nombres de su trabajo -> ''<YOUR-JOB-NAMESPACE>''