공기 흐름 스케줄러가 kubernetes executor로 시작하지 못함


12

https://github.com/helm/charts/tree/master/stable/airflow helm 차트 를 사용 puckle/docker-airflow하고 kubernetes가 설치된 v1.10.8 이미지를 만들고 helm 차트에서 해당 이미지를 사용하고 있습니다.

  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)

내 스케줄러에서 다양한 소스가 조언하는 것처럼 설정을 시도했습니다.

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

조타 가치에서. 그 누구도 내가 뭘 놓친 아이디어가 있습니까?

여기 내 가치가 있습니다.


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

편집하다 :

helm 값에서 환경 변수를 설정하려는 다양한 시도 .yaml이 작동하지 않아 추가했습니다 (큰 따옴표와 작은 따옴표에주의하십시오)

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

Dockerfile 여기 : https://github.com/puckel/docker-airflow/blob/1.10.9/Dockerfile#L19 후 나의 airflow-scheduler포드 시작하지만 내 스케줄러 포드 오류를 다음과 점점 계속.

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

여기에 같은 문제가 있습니다. 나는 체크 아웃 docker-airflow:1.10.8과의 L931을 변경 제거 config/airflow.cfgkube_client_request_args =이 이미지를 사용합니다. 작동하는 것 같습니다
Raf

같은 문제가 여기에 :-(
LiorH

답변:


3

Helm 값의 경우 템플리트는 airflow.config을 큰 따옴표로 묶는" 루프를 사용 합니다 . 이는 "출력 템플릿 YAML이 유효하려면 값의 모든 값을 이스케이프해야 함을 의미 합니다.

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

배포 및 실행 (단종 테스트를 완료하지 않았습니다)

이 github issue 에 따르면 python scheduler SSL 시간 초과는 60 초 연결 시간 초과 후 감시자가 다시 시작될 때 문제가되지 않을 수 있습니다.


그래, 고마워 :-)
LiorH

아무 문제 없습니다! 스케줄러가 작동하는지 확인할 수 있습니까? X 초마다 다시 연결됩니까?
매트

예, 스케줄러가 작동합니다. 그래도 여러 가지 다른 문제가 발생합니다 :-(
LiorH
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.