Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

611
Vistas
¿Cómo ejecutar una función de python o un script somescript.py en KubernetesPodOperator en el flujo de aire?

Estoy ejecutando Celery Executor y estoy tratando de ejecutar un script de python en KubernetesPodOperator. A continuación se muestran ejemplos de lo que he intentado que no funcionó. ¿Qué estoy haciendo mal?

Correr guión

 org_node = KubernetesPodOperator( namespace='default', image="python", cmds=["python", "somescript.py" "-c"], arguments=["print('HELLO')"], labels={"foo": "bar"}, image_pull_policy="Always", name=task, task_id=task, is_delete_operator_pod=False, get_logs=True, dag=dag )

Ejecutando la función load_users_into_table()

 def load_users_into_table(postgres_hook, schema, path): gdf = read_csv(path) gdf.to_sql('users', con=postgres_hook.get_sqlalchemy_engine(), schema=schema) org_node = KubernetesPodOperator( namespace='default', image="python", cmds=["python", "somescript.py" "-c"], arguments=[load_users_into_table], labels={"foo": "bar"}, image_pull_policy="Always", name=task, task_id=task, is_delete_operator_pod=False, get_logs=True, dag=dag )
over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

El script somescript.py debe estar en Docker image .

Paso 1 : creemos una imagen https://docs.docker.com/develop/develop-images/dockerfile_best-practices/ .

 FROM python:3.8 # copy requirement.txt from local to container COPY requirements.txt requirements.txt # install dependencies into container (geopandas, sqlalchemy) RUN pip install -r requirements.txt # copy the python script from local to container COPY somescript.py somescript.py ENTRYPOINT [ "python", "somescript.py"]

Paso 2 : cree y envíe la imagen al public Docker repository https://hub.docker.com .

NB: kubernetes_pod_operator busca la imagen del repositorio de public docker repo

 # build image docker build -t my-python-img:latest . # test if your image works perfectly docker run my-python-img:latest # push image. docker tag my-python-img username/my-python-img docker push username/my-python-img docker pull username/my-python-img

paso 3: Para no crear k8s task .

 p = KubernetesPodOperator( namespace='default', image='username/my-python-img:latest', labels={'dag-id': dag.dag_id}, name='airflow-my-image-pod', task_id='load-users', in_cluster=False, #False: local, True: cluster cluster_context='microk8s', config_file='/usr/local/airflow/include/.kube/config', is_delete_operator_pod=True, get_logs=True, dag=dag )

Si no entiende de dónde proviene el archivo de configuración, consulte aquí: https://www.astronomer.io/docs/cloud/stable/develop/kubepodoperator-local .

Finalmente: quiero mencionar algo importante cuando se trabaja con bases de datos (credenciales). Kubernetes ofrece el secret de uso para asegurar información confidencial. https://airflow.apache.org/docs/apache-airflow-providers-cncf-kubernetes/stable/operators.html

over 4 years ago · Santiago Trujillo Denunciar

0

KubernetesPodOperator lanza un pod de Kubernetes que ejecuta un contenedor como se especifica en los argumentos del operador.

primer ejemplo

En el primer ejemplo sucede lo siguiente:

  • KubernetesPodOperator indica a K8s que prepare un pod y se prepare para ejecutar un contenedor en él utilizando la imagen de Python (el parámetro de image ) de hub.docker.com (el registro de imagen predeterminado)
  • El PUNTO DE ENTRADA de la imagen de python se reemplaza por ["python", "somescript.py" "-c"] (el parámetro cmd )
  • CMD de la imagen de python se reemplaza por ["print('HELLO')"] (el parámetro de arguments )
  • ...
  • El contenedor se ejecuta

Entonces, el comando completo que se ejecuta en el contenedor es

 python somescript.py -c print('HELLO')

Obviamente, la imagen oficial de Python de Docker Hub no tiene somescript.py en su directorio de trabajo. Incluso si lo hubiera hecho, probablemente no habría sido el que escribiste. Es por eso que el comando falla con algo como:

 python: can't open file 'somescrit.py': [Errno 2] No such file or directory

segundo ejemplo

En el segundo ejemplo, ocurre más o menos lo mismo que en el primer ejemplo, pero el comando que se ejecuta en el contenedor (nuevamente basado en los parámetros cmd y arguments ) es

 python somescript.py -c None

( None es la representación de cadena del valor de retorno de load_users_into_table() )

Este comando falla por las mismas razones que en el primer ejemplo.

Cómo podría hacerse (un boceto)

Podría crear una imagen de Docker con somescript.py y todas sus dependencias. Empuje la imagen a un registro de imágenes. Especifique la imagen, ENTRYPOINT y CMD en los parámetros correspondientes de KubernetesPodOperator.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda