Устранение неполадок Apache Airflow™
Начните диагностику с состояния AirflowCluster и условий состояния в status.conditions.
Общая диагностика
-
Посмотрите состояние кластера:
kubectl get airflowcluster <имя_кластера> \ -n <пространство_имен> \ -o wide -
Получите условия состояния и события кластера:
kubectl describe airflowcluster <имя_кластера> \ -n <пространство_имен> -
Получите UID кластера для поиска его ресурсов:
kubectl get airflowcluster <имя_кластера> \ -n <пространство_имен> \ -o jsonpath='{.metadata.uid}' -
Проверьте поды Apache Airflow™, подставив полученный UID:
kubectl get pods -n <пространство_имен> \ -l 'tier=airflow,airflow.stackland.yandex.cloud/owner-uid=<UID_кластера>'
Кластер остается в Provisioning
Проверьте условия состояния, у которых поле status имеет значение False:
|
Условие состояния |
Что проверить |
|
|
Версия из |
|
|
Готовность автоматически создаваемой базы метаданных. При длительном ожидании воспользуйтесь рекомендациями из раздела Ошибки базы данных. |
|
|
Secret с учетными данными Git или S3, ConfigMap |
|
|
Настройки |
|
|
Список дополнительных пакетов, их версии, репозитории и учетные данные. Рекомендации приведены в разделе Ошибки установки пакетов. |
|
|
Административный Secret, непустые ключи |
|
|
Подготовка защитных настроек кластера. При ошибке обратитесь к администратору установки. |
|
|
Обновление базы метаданных. При |
|
|
Настройка учетной записи администратора Apache Airflow™, в том числе после изменения Secret с паролем. При ошибке обратитесь к администратору установки. |
|
|
Состояние подов Apache Airflow™ в пространстве имен кластера и сообщения об ошибках их запуска. |
Точная причина указана в полях reason и message соответствующего условия. Проверяйте, что его observedGeneration совпадает с текущим metadata.generation.
Если устранить ошибку по инструкциям ниже не удалось, передайте администратору установки имя кластера, пространство имен и значения reason и message.
Ошибки Git
Для приватного HTTPS-репозитория Secret должен содержать непустые ключи username и password. Для SSH необходимы:
- ключ
ssh-privatekeyв Secret изauthSecretRef; - ключ
known_hostsв ConfigMap изknownHostsConfigMapRef.
Имена ключей фиксированы. Также проверьте URL репозитория, наличие ветки, тега или коммита из ref и путь subPath.
Ошибки загрузки DAG-файлов смотрите в журнале контейнера git-sync:
kubectl get pods -n <пространство_имен> \
-l 'tier=airflow,component=dag-processor,airflow.stackland.yandex.cloud/owner-uid=<UID_кластера>'
kubectl logs -n <пространство_имен> <имя_пода> -c git-sync
Ошибки S3-синхронизации DAG
Если DAG-файлы из S3 не появляются в веб-интерфейсе, проверьте:
- имя бакета, эндпоинт, регион и режим
forcePathStyle; - ключи, указанные в
credentialsSecretRef, и права доступа к бакету; - CA-сертификат для эндпоинта с частным центром сертификации;
- наличие DAG-файлов под префиксом из
subPath; - сетевой доступ из пространства имен к S3.
Посмотрите журнал синхронизации:
kubectl get pods -n <пространство_имен> \
-l 'tier=airflow,component=dag-processor,airflow.stackland.yandex.cloud/owner-uid=<UID_кластера>'
kubectl logs -n <пространство_имен> <имя_пода> -c dag-sync
Если поды остаются в Pending, посмотрите их события:
kubectl describe pod <имя_пода> -n <пространство_имен>
Учитывайте ограничения S3-источника. Если поды не запускаются из-за нехватки ресурсов или недоступности хранилища, передайте события администратору установки.
Пароль из Secret не подходит
Найдите административный Secret по UID кластера. Если изменялся ключ username, восстановите исходное имя пользователя: изменение имени администратора не поддерживается.
После изменения ключа password дождитесь обработки Secret и проверьте InitialUserReady в status.conditions. При ошибке передайте значения reason и message администратору установки.
Если кластер вернулся в состояние Ready, но вход с новым паролем не работает, пароль существующего пользователя мог остаться прежним. Чтобы восстановить доступ, вручную установите в Apache Airflow™ пароль из Secret. Для этого нужны права на выполнение команд в подах (pods/exec); при отсутствии прав обратитесь к администратору установки.
-
Если кластер приостановлен, возобновите его. Найдите работающий под API server, подставив UID из инструкции Найти Secret:
kubectl get pods -n <пространство_имен> \ -l 'tier=airflow,component=api-server,airflow.stackland.yandex.cloud/owner-uid=<UID_кластера>' -
Запустите команду смены пароля
в найденном поде:kubectl exec -it <имя_пода> \ -n <пространство_имен> \ -c api-server -- \ airflow users reset-password --username <имя_пользователя>Используйте имя пользователя из ключа
usernameадминистративного Secret. В интерактивном запросе введите пароль из ключаpasswordи подтвердите его. -
Выйдите из веб-интерфейса, затем войдите снова с паролем из Secret.
Ошибки базы данных
База метаданных создается и настраивается автоматически. Если DatabaseReady=False долго сохраняется или Apache Airflow™ сообщает об ошибке подключения к базе, обратитесь к администратору установки. Передайте имя кластера, пространство имен и сообщение об ошибке.
Ошибки установки пакетов
Если DependenciesReady=False, начните с reason и message:
SecretNotFound,InvalidSecretилиInvalidCABundle— проверьте Secret изspec.dependencies.repositories: учетные данные, CA и ключ подписи APT. Требования приведены в разделе Репозитории пакетов;ImageBuildPendingилиImageReplicationPending— зависимости еще подготавливаются к использованию. Дождитесь завершения обновления; если состояние долго не меняется, обратитесь к администратору установки;ImageBuildFailed— проверьте имена и версии пакетов, доступность репозиториев и совместимость зависимостей с версией Apache Airflow™ изspec.version.
Исправьте spec.dependencies или используемый Secret. Если причина неясна из message, передайте это сообщение администратору установки.
При ImagePullBackOff в событиях пода также обратитесь к администратору установки.
Не публикуется веб-интерфейс
Проверьте spec.publicAccess и состояние кластера. При spec.publicAccess: false используйте внутренний доступ или измените настройку.
При spec.publicAccess: true дождитесь состояния Ready и получите адрес из status.apiServerURL по инструкции Открыть веб-интерфейс. Если адрес не появляется или недоступен, передайте администратору установки имя кластера, пространство имен и сообщение об ошибке.
Удаление не завершается
Удаление кластера включает удаление его данных и автоматически созданных бакетов и может занять время. Если состояние Deleting долго не меняется, передайте администратору установки результат команды kubectl describe airflowcluster <имя_кластера> -n <пространство_имен>.
Не отключайте компонент Managed Service for Apache Airflow™ до завершения удаления всех кластеров.