El programador de flujo de aire no puede comenzar con el ejecutor de kubernetes

12

Estoy usando https://github.com/helm/charts/tree/master/stable/airflow helm chart y construyendo la puckle/docker-airflowimagen v1.10.8 con kubernetes instalados y usando esa imagen en el helm chart, pero sigo obteniendo

  File "/usr/local/bin/airflow", line 37, in <module>
    args.func(args)
  File "/usr/local/lib/python3.7/site-packages/airflow/bin/cli.py", line 1140, in initdb
    db.initdb(settings.RBAC)
  File "/usr/local/lib/python3.7/site-packages/airflow/utils/db.py", line 332, in initdb
    dagbag = models.DagBag()
  File "/usr/local/lib/python3.7/site-packages/airflow/models/dagbag.py", line 95, in __init__
    executor = get_default_executor()
  File "/usr/local/lib/python3.7/site-packages/airflow/executors/__init__.py", line 48, in get_default_executor
    DEFAULT_EXECUTOR = _get_executor(executor_name)
  File "/usr/local/lib/python3.7/site-packages/airflow/executors/__init__.py", line 87, in _get_executor
    return KubernetesExecutor()
  File "/usr/local/lib/python3.7/site-packages/airflow/contrib/executors/kubernetes_executor.py", line 702, in __init__
    self.kube_config = KubeConfig()
  File "/usr/local/lib/python3.7/site-packages/airflow/contrib/executors/kubernetes_executor.py", line 283, in __init__
    self.kube_client_request_args = json.loads(kube_client_request_args)
  File "/usr/local/lib/python3.7/json/__init__.py", line 348, in loads
    return _default_decoder.decode(s)
  File "/usr/local/lib/python3.7/json/decoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/usr/local/lib/python3.7/json/decoder.py", line 353, in raw_decode
    obj, end = self.scan_once(s, idx)
json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes: line 1 column 2 (char 1)

En mi programador, también como varias fuentes me aconsejan, intenté configurar:

AIRFLOW__KUBERNETES__KUBE_CLIENT_REQUEST_ARGS: {"_request_timeout" : [60,60] }

en mis valores de timón. eso tampoco funcionó nadie tiene alguna idea de lo que me estoy perdiendo?

Aquí están mis valores.


airflow:
  image:
     repository: airflow-docker-local
     tag: 1.10.8
  executor: Kubernetes
  service:
    type: LoadBalancer
  config:
    AIRFLOW__KUBERNETES__WORKER_CONTAINER_REPOSITORY: airflow-docker-local
    AIRFLOW__KUBERNETES__WORKER_CONTAINER_TAG: 1.10.8
    AIRFLOW__KUBERNETES__WORKER_CONTAINER_IMAGE_PULL_POLICY: Never

    AIRFLOW__KUBERNETES__WORKER_SERVICE_ACCOUNT_NAME: airflow
    AIRFLOW__KUBERNETES__DAGS_VOLUME_CLAIM: airflow
    AIRFLOW__KUBERNETES__NAMESPACE: airflow
    AIRFLOW__KUBERNETES__KUBE_CLIENT_REQUEST_ARGS: {"_request_timeout" : [60,60] }

    AIRFLOW__CORE__SQL_ALCHEMY_CONN: postgresql+psycopg2://postgres:airflow@airflow-postgresql:5432/airflow

persistence:
  enabled: true
  existingClaim: ''

workers:
  enabled: false

postgresql:
  enabled: true

redis:
  enabled: false

EDITAR:

Varios intentos de establecer la variable de entorno en helm values.yaml no funcionaron, después de eso agregué (preste atención a las comillas dobles y simples)

ENV AIRFLOW__KUBERNETES__KUBE_CLIENT_REQUEST_ARGS='{"_request_timeout" : [60,60] }'

a Dockerfile aquí: https://github.com/puckel/docker-airflow/blob/1.10.9/Dockerfile#L19 después de que mi airflow-schedulerpod se inicia, pero sigo recibiendo el siguiente error en mi pod de planificación.

Process KubernetesJobWatcher-9: Traceback (most recent call last): 
    File "/usr/local/lib/python3.7/site-packages/urllib3/contrib/pyopenssl.py", line 313, 
    in recv_into return self.connection.recv_into(*args, **kwargs) File "/usr/local/lib/python3.7/site-packages/OpenSSL/SSL.py", 
    line 1840, in recv_into self._raise_ssl_error(self._ssl, result) File "/usr/local/lib/python3.7/site-packages/OpenSSL/SSL.py", 
    line 1646, in _raise_ssl_error raise WantReadError() OpenSSL.SSL.WantReadError
Asav Patel
fuente
El mismo problema aquí. Revisé docker-airflow:1.10.8y se retira cambiado L931 de config/airflow.cfga kube_client_request_args =y utilizar esta imagen. Parece funcionar
Raf
mismo problema aquí :-(
LiorH

Respuestas:

3

Para el valor de timón, la plantilla usa un bucle que coloca el airflow.configmapa entre comillas dobles" . Esto significa "que es necesario escapar de cualquier valor para que el YAML con plantilla de salida sea válido.

airflow:
  config:
    AIRFLOW__KUBERNETES__KUBE_CLIENT_REQUEST_ARGS: '{\"_request_timeout\":60}'

Eso se implementa y ejecuta (pero no he completado una prueba de extremo a extremo)

De acuerdo con este problema de Github , el tiempo de espera SSL del planificador de Python puede no ser un problema ya que el observador se inicia nuevamente después del tiempo de espera de conexión de 60 segundos.

Mate
fuente
Sí funcionó, gracias :-)
LiorH
¡No hay problemas! ¿Puede verificar que el planificador funciona, solo se reconecta cada X segundos?
Matt
Sí, el planificador funciona. Sin embargo
muchos