Hola, me llamo Miguel y esta vez les traigo este artículo.
Recientemente tuve que crear un trabajo cron en Kubernetes que ejecutaría un script de archivo de datos que archivaría los datos de la tabla MySQL inmutable para las transacciones del día anterior y cargaría el resultado en AWS S3.
El trabajo falló hoy porque hubo un problema de conectividad de red con la base de datos y mi código probó 3 veces y luego se rindió por hoy. Luego necesitaba ejecutar el trabajo para poder procesar los datos de ayer y archivarlos. Entonces hice lo que hago normalmente, tomo el YAML para el cronjob y lo modifico para convertirlo en un estándar type: Job
y luego solo aplico el YAML para ejecutar el trabajo y una vez completado, simplemente ejecuto kubectl delete -f my-onetime-job.yaml
.
Funciona pero parece un poco tedioso. Recientemente descubrí cómo hacer esto sin necesidad de un archivo YAML, podía ejecutarlo directamente desde la línea de comandos.
Aquí está el comando que utilicé:
kubectl create job --from=cronjob/s3-transactions-data-archiver s3-transactions-data-archiver-otj
Donde con marcadores de posición:
kubectl create job --from=cronjob/<name-of-cron-job> <name-of-job>
Esto creará un trabajo y lo ejecutará, puede verificar que esté completo ejecutando el siguiente comando e inspeccionando el resultado:
kubectl get jobs
La salida le mostrará los trabajos que tiene actualmente en ejecución y mi trabajo para s3-transactions-data-archiver-otj
fue listado allí como completado.
Para limpiar después, todo lo que tenemos que hacer ahora es eliminar el trabajo ejecutando el comando:
kubectl delete job s3-transactions-data-archiver-otj
Donde con marcadores de posición:
kubectl delete job <name of job>
Esta es una excelente manera de ejecutar rápidamente un trabajo cron fallido, o incluso si crea su trabajo cron y no se ejecuta de inmediato, puede activar esta ejecución manual.
Espero que esto te ayude en lo que estás buscando y gracias por leer este fragmento.
Añadir comentario