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>''