Ошибка модуля со всеми обычными событиями — как копнуть глубже

Проблема

Я пытаюсь развернуть модуль, который завершается ошибкой, которую я не могу понять. Модуль запускается через Airflow для выполнения определенной задачи. Airflow показывает, что модуль неисправен, без каких-либо журналов. Когда я запускаю kubectl describe pod my-pod, я получаю следующий вывод.

Что мне делать, чтобы определить основную причину проблемы?

Неудачный раздел контейнера:

  base:
    Container ID:  <ID>
    Image:         <IMAGE>
    Image ID:      <ID>
    Port:          <none>
    Host Port:     <none>
    Command:
      airflow
      run
      /var/airflow/my_dag_name.py
      task_name
      2023-02-20T23:15:00+00:00
      --local
      --pool
      default_pool
      -sd
      /var/airflow/my_dag_name.py
    State:          Terminated
      Reason:       Error
      Exit Code:    1
      Started:      Mon, 20 Feb 2023 20:55:07 -0600
      Finished:     Mon, 20 Feb 2023 20:55:11 -0600
    Ready:          False
    Restart Count:  0
    Limits:
      cpu:                1
      ephemeral-storage:  100Gi
      memory:             8Gi
    Requests:
      cpu:                500m
      ephemeral-storage:  1Gi
      memory:             8Gi
    Environment:
      <ENV VARS>
    Mounts:
      <VARIOUS MOUNTS>

Раздел событий (на этом все):

Events:
  Type    Reason     Age   From               Message
  ----    ------     ----  ----               -------
  Normal  Scheduled  58s   default-scheduler  Successfully assigned <TASK> to <IP>
  Normal  Pulled     58s   kubelet            Container image <SIDECAR IMAGE 1> already present on machine
  Normal  Created    57s   kubelet            Created container <SIDECAR CONTAINER 1>
  Normal  Started    57s   kubelet            Started container <SIDECAR CONTAINER 1>
  Normal  Pulling    54s   kubelet            Pulling image <SIDECAR IMAGE 2>
  Normal  Pulled     53s   kubelet            Successfully pulled image <SIDECAR IMAGE 2> in 125.691281ms
  Normal  Created    53s   kubelet            Created container <SIDECAR CONTAINER 2>
  Normal  Started    53s   kubelet            Started container <SIDECAR CONTAINER 2>
  Normal  Pulled     52s   kubelet            Container image <FAILING POD IMAGE> already present on machine
  Normal  Created    52s   kubelet            Created container <FAILING POD CONTAINER>
  Normal  Started    52s   kubelet            Started container <FAILING POD CONTAINER>
  Normal  Pulled     52s   kubelet            Container image <SIDECAR IMAGE 3> already present on machine
  Normal  Created    52s   kubelet            Created container <SIDECAR CONTAINER 3>
  Normal  Started    52s   kubelet            Started container <SIDECAR CONTAINER 3>
  Normal  Pulled     52s   kubelet            Container image <SIDECAR IMAGE 4> already present on machine
  Normal  Created    52s   kubelet            Created container <SIDECAR CONTAINER 4>
  Normal  Started    51s   kubelet            Started container <SIDECAR CONTAINER 4>

Контекст

Поды используют эти временные сайдкары для подключения к системам/вставки информации/и т. д.

попробуйте kubectl logs <pod-name> -p я сомневаюсь, что он вышел из-за ошибки в коде.

Harsh Manvar 21.02.2023 05:26

Основной процесс контейнера завершился с кодом 1. Если это произошло, вы, вероятно, не найдете больше информации от диагностики Kubernetes.

David Maze 21.02.2023 12:45

мы закончили тем, что использовали kubectl logs --follow <pod-name> в перезапущенной версии модуля и определили основную причину (нечетный конфликт зависимостей)

whoopscheckmate 21.02.2023 16:21

Почему люди такие негативные?? Если вы можете объяснить отрицательный голос, я мог бы понять, но это законная проблема, заданная четко, с твердым ответом. Я никогда не пойму желание людей минусовать без объяснения причин...

whoopscheckmate 21.02.2023 16:23
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Kubernetes - это портативная, расширяемая платформа с открытым исходным кодом для управления контейнерными рабочими нагрузками и сервисами, которая...
1
4
58
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

В Kubernetes для диагностики проблем с модулями очень полезны коды выхода контейнера. Если модуль неисправен, проблему можно найти с помощью приведенной ниже команды.

kubectl describe pod [POD_NAME]

вы уже предоставили его вывод, который показывает следующую информацию:

State: Terminated 
Reason: Error 
Exit Code: 1

Поскольку контейнер завершается с кодом выхода 1, необходимо провести тщательное исследование контейнера и его приложений, поскольку это в основном связано с ошибкой приложения или недопустимой ссылкой.

В качестве первого шага, предложенного Харшем Манваром, проверьте журналы соответствующего модуля, используя приведенную ниже команду, чтобы получить журналы для первого контейнера в модуле.

kubectl logs <pod-name> -p

-p означает -previous, что означает, что если модуль был перезапущен, он вернет журналы для предыдущего экземпляра модуля.

Журналы покажут основную причину кода выхода 1, и эту информацию можно использовать для исправления поля команды в файле YAML модуля. После обновления повторно примените его к кластеру с помощью команды kubectl apply.

Приведенная выше информация взята из ссылки, написанной Джеймсом Уокером.

Другие вопросы по теме