Tengo un comportamiento extraño de Airflow con el ejecutor de Kubernetes. En mi configuración, las tareas se ejecutan en módulos de kubernetes creados dinámicamente, y tengo varias tareas que se ejecutan una o dos veces al día. Taks en sí mismo es un operador de Python que ejecuta alguna rutina ETL, los archivos dag se sincronizan a través de un pod separado con el repositorio git dentro. Durante algún tiempo, todo funcionó bien, pero no hace mucho tiempo en el módulo del programador, empiezo a ver un error.
kubernetes.client.exceptions.ApiException: (410) Reason: Gone: too old resource version: 51445975 (51489631)Después de que aparezca ese error, los pods antiguos de las tareas no se eliminarán y, después de un tiempo, no se podrán crear pods nuevos y las tareas no se ejecutarán (o, para ser más precisos, se congelará en estado "programado"). En esta situación, solo se elimina el pod del programador con
kubectl delete -n SERVICE_NAME pod schedulery esperar a que Kubernetes lo vuelva a crear ayuda, pero después de un tiempo aparece nuevamente el error y la situación se repite. Otra cosa extraña es que este error parece aparecer solo después de que se ejecutan las tareas programadas. Si activé cualquier tarea cualquier cantidad de veces a través de la interfaz de usuario, no aparece ningún error y los pods se crean y eliminan normalmente. La versión de Airflow es 1.10.12 Cualquier ayuda será apreciada, ¡gracias!
Esto se debe a la versión 12.0 del cliente Python de Kubernetes
Restringir la versión a <12
pip install -U 'kubernetes<12'