Поток воздуха в верхней части тайм-аута соединения EKS при запуске aws лямбда - PullRequest
0 голосов
/ 30 апреля 2020

выпуск

Мы хотим использовать Airflow для запуска лямбды, которая работает более 10 минут (AWS лямбда может работать до 15 минут) Если я запускаю настройку Airflow в локальном мини-кубе (на основе virtualbox) Cluster, то Airflow может запустить лямбда, которая работает 12 минут и получает ответ.

    [2020-04-30 09:34:55,716] {taskinstance.py:900} INFO - Executing <Task(PythonOperator): long-running-lambda-12> on 2020-04-29T09:22:44.302263+00:00
    [2020-04-30 09:34:55,718] {standard_task_runner.py:53} INFO - Started process 211 to run task
    [2020-04-30 09:34:55,791] {logging_mixin.py:112} INFO - Running %s on host %s <TaskInstance: long_running_lambda.long-running-lambda-12 2020-04-29T09:22:44.302263+00:00 [running]> a1-airflow-worker-0.a1-airflow-headless.default.svc.cluster.local
    [2020-04-30 09:34:55,825] {logging_mixin.py:112} INFO - [2020-04-30 09:34:55,825] {awslambda_utils.py:19} INFO - Executing lambda long-running with payload 
     {"runtime_minutes": 12}
    [2020-04-30 09:46:56,773] {logging_mixin.py:112} INFO - [2020-04-30 09:46:56,773] {awslambda_utils.py:26} INFO - LAMBDA RESULTS: 200.
    [2020-04-30 09:46:56,773] {logging_mixin.py:112} INFO - [2020-04-30 09:46:56,773] {awslambda_utils.py:27} INFO - LAST LINES OF LAMBDA LOG: START RequestId: e9bb5b0c-5a15-457d-9ee0-4ef48bb15c71 Version: $LATEST
    I slept for 60 seconds
    I slept for 60 seconds
    I slept for 60 seconds
    I slept for 60 seconds
    I slept for 60 seconds
    I slept for 60 seconds
    I slept for 60 seconds
    I slept for 60 seconds
    I slept for 60 seconds
    I slept for 60 seconds
    I slept for 60 seconds
    I slept for 60 seconds
    completed successfully execution
    END RequestId: e9bb5b0c-5a15-457d-9ee0-4ef48bb15c71
    REPORT RequestId: e9bb5b0c-5a15-457d-9ee0-4ef48bb15c71  Duration: 720425.31 ms  Billed Duration: 720500 ms  Memory Size: 128 MB Max Memory Used: 48 MB

Если я, однако, запускаю ту же настройку на EG fargate, я получаю этот ответ через час или около того. Я могу запустить короткие лямбды без каких-либо проблем. Тайм-аут чтения установлен на 900.

...
socket.timeout: The read operation timed out
...
  File "/opt/bitnami/airflow/venv/lib/python3.6/site-packages/urllib3/connectionpool.py", line 423, in _make_request
    self._raise_timeout(err=e, url=url, timeout_value=read_timeout)
  File "/opt/bitnami/airflow/venv/lib/python3.6/site-packages/urllib3/connectionpool.py", line 331, in _raise_timeout
    self, url, "Read timed out. (read timeout=%s)" % timeout_value
urllib3.exceptions.ReadTimeoutError: AWSHTTPSConnectionPool(host='lambda.eu-west-1.amazonaws.com', port=443): Read timed out. (read timeout=900)
... 
  File "/opt/bitnami/airflow/venv/lib/python3.6/site-packages/botocore/httpsession.py", line 289, in send
    raise ReadTimeoutError(endpoint_url=request.url, error=e)
...

Та же проблема возникла и на платформе Astronomers, которая работает на Google Cloud Platform Kubernetes при работе с Celery executors

гипотезы .

Так как эта проблема не возникала на локальном MacBook, маловероятно, что проблема заключается в программных компонентах, работающих поверх Kubernetes: (airflow, celery) Та же проблема возникла и на платформе Astronomers, которая работает на GCP. Компонент, который должен быть похож в GCP и AWS, это Kubernetes.

Отладка Todo .

  1. Попробуйте настроить поток воздуха на частном экземпляре EC2 в том же су bnet. Сообщите мне, если проблема в NAT или Kubernetes VP C
  2. журналы потоков
  3. KUBERNETES поиск незанятых соединений
  4. Попробуйте поток данных с исполнителями Kubernetes
  5. Попробуйте запустить лямбду с помощью команды bash.
  6. Мне нужно установить дополнительные пакеты. DockerOperator?
...