Le planificateur de flux d'air ne démarre pas avec l'exécuteur Kubernetes

12

J'utilise en utilisant https://github.com/helm/charts/tree/master/stable/airflow helm chart et en construisant une puckle/docker-airflowimage v1.10.8 avec kubernetes installé dessus et en utilisant cette image dans le graphique helm, mais je continue à obtenir

  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)

Dans mon ordonnanceur, comme le conseillent diverses sources, j'ai essayé de définir:

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

dans mes valeurs de barre. ça ne marchait pas non plus on a des idées ce qui me manque?

Voici mes valeurs.yaml


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

ÉDITER :

Diverses tentatives pour définir la variable d'environnement dans les valeurs de barre.yaml n'a pas fonctionné, après cela, j'ai ajouté (faites attention aux guillemets doubles et simples)

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

à Dockerfile ici: https://github.com/puckel/docker-airflow/blob/1.10.9/Dockerfile#L19 après que mon airflow-schedulerpod démarre mais je reçois toujours l'erreur suivante sur mon pod de planificateur.

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
la source
même problème ici. J'ai vérifié docker-airflow:1.10.8et supprimé le L931 modifié config/airflow.cfgpour kube_client_request_args =utiliser cette image. Semble fonctionner
Raf
même problème ici :-(
LiorH

Réponses:

3

Pour la valeur de barre, le modèle utilise une boucle qui place la airflow.configcarte entre guillemets doubles" . Cela signifie que tout élément "d'une valeur doit être échappé pour que le modèle de sortie YAML soit valide.

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

Cela se déploie et s'exécute (mais je n'ai pas terminé un test de bout en bout)

Selon ce problème github , le délai d'expiration SSL du planificateur python peut ne pas être un problème car l'observateur redémarre après le délai d'expiration de la connexion de 60 secondes.

Mat
la source
ouais travaillé, merci :-)
LiorH
Pas de problème! Êtes-vous en mesure de vérifier que le planificateur fonctionne, qu'il se reconnecte toutes les X secondes?
Matt
Oui, le planificateur fonctionne.
Rencontrant