Устранение неполадок с вычислительной средой Kubernetes

Из этой статьи вы узнаете, как устранять распространенные ошибки рабочей нагрузки в вычислительных ресурсах Kubernetes. Распространенные ошибки включают задания обучения и ошибки конечной точки.

Руководство по выводу

Распространенные ошибки конечных точек Kubernetes в вычислениях Kubernetes классифицируются на два область: вычислительные область и кластерные область. Ошибки вычислений область связаны с целевым объектом вычислений, например целевой объект вычислений, не найден или целевой объект вычислений недоступен. Ошибки кластера область связаны с базовым кластером Kubernetes, например сам кластер недоступен, или кластер не найден.

Ошибки вычислений Kubernetes

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

ERROR: GenericComputeError

Сообщение об ошибке имеет следующий тип:

Failed to get compute information.

Эта ошибка возникает, когда система не смогла получить данные вычислений из кластера Kubernetes. Чтобы устранить проблему, можно проверка следующие элементы:

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

Примечание.

Чтобы проблемы с ошибками при повторном кэшировании, убедитесь, что вы сможете повторно подключиться к той же конфигурации, что и ранее отключенные вычисления, такие как то же имя вычислений и пространство имен, в противном случае могут возникнуть другие ошибки.

ERROR: ComputeNotFound

Сообщение об ошибке выглядит следующим образом:

Cannot find Kubernetes compute.

Эта ошибка должна возникать, когда:

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

Чтобы устранить проблему, можно проверка следующие элементы:

  • Попробуйте повторно создать конечную точку и развертывание.
  • Попробуйте отсоединить и повторно подключить вычислительные ресурсы к рабочей области. Обратите внимание на дополнительные заметки о повторном присоединении.

ERROR: ComputeNotAccessible

Сообщение об ошибке выглядит следующим образом:

The Kubernetes compute is not accessible.

Эта ошибка должна возникать, если у рабочей области MSI (управляемое удостоверение) нет доступа к кластеру AKS. Вы можете проверка, если MSI рабочей области имеет доступ к AKS, и если нет, вы можете следовать этому документу для управления доступом и удостоверениями.

ОШИБКА: InvalidComputeInformation

Сообщение об ошибке выглядит следующим образом:

The compute information is invalid.

При развертывании моделей в кластере Kubernetes существует процесс проверки целевого объекта вычислений. Эта ошибка должна возникать, когда данные вычислений недопустимы. Например, целевой объект вычислений не найден или конфигурация расширения Машинное обучение Azure обновлена в кластере Kubernetes.

Чтобы устранить проблему, можно проверка следующие элементы:

  • Проверьте, является ли используемый целевой объект вычислений правильным и существующим в рабочей области.
  • Попробуйте отсоединить и повторно подключить вычислительные ресурсы к рабочей области. Обратите внимание на дополнительные заметки о повторном присоединении.

ОШИБКА: InvalidComputeNoKubernetesConfiguration

Сообщение об ошибке выглядит следующим образом:

The compute kubeconfig is invalid.

Эта ошибка возникает, когда системе не удалось найти любую конфигурацию для подключения к кластеру, например:

  • Для кластера Arc-Kubernetes нет конфигурации Azure Relay.
  • Для кластера AKS не найдено конфигурации AKS.

Чтобы перестроить конфигурацию вычислительного подключения в кластере, можно попытаться отсоединить и повторно подключить вычислительные ресурсы к рабочей области. Обратите внимание на дополнительные заметки о повторном присоединении.

Ошибка кластера Kubernetes

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

ERROR: GenericClusterError

Сообщение об ошибке выглядит следующим образом:

Failed to connect to Kubernetes cluster: <message>

Эта ошибка возникает, когда системе не удалось подключиться к кластеру Kubernetes по неизвестной причине. Чтобы устранить проблему, можно проверка следующие элементы:

Для кластеров AKS:

  • Проверьте, завершается ли кластер AKS.
    • Если кластер не запущен, сначала необходимо запустить кластер.
  • Проверьте, включен ли кластер AKS выбранную сеть с помощью авторизованных диапазонов IP-адресов.
    • Если кластер AKS включил авторизованные диапазоны IP-адресов, убедитесь, что для кластера AKS включены все диапазоны IP-адресов уровня управления Машинное обучение Azure. Дополнительные сведения см. в этом документе.

Для кластера AKS или кластера Kubernetes с поддержкой Azure Arc:

  • Проверьте, доступен ли сервер API Kubernetes, выполнив kubectl команду в кластере.

ERROR: ClusterNotReachable

Сообщение об ошибке выглядит следующим образом:

The Kubernetes cluster is not reachable. 

Эта ошибка возникает, когда система не может подключиться к кластеру. Чтобы устранить проблему, можно проверка следующие элементы:

Для кластеров AKS:

  • Проверьте, завершается ли кластер AKS.
    • Если кластер не запущен, сначала необходимо запустить кластер.

Для кластера AKS или кластера Kubernetes с поддержкой Azure Arc:

  • Проверьте, доступен ли сервер API Kubernetes, выполнив kubectl команду в кластере.

ОШИБКА: ClusterNotFound

Сообщение об ошибке выглядит следующим образом:

Cannot found Kubernetes cluster. 

Эта ошибка возникает, если система не может найти кластер AKS/Arc-Kubernetes.

Чтобы устранить проблему, можно проверка следующие элементы:

  • Сначала проверка идентификатор ресурса кластера в портал Azure, чтобы проверить, существует ли ресурс кластера Kubernetes и работает нормально.
  • Если кластер существует и запущен, можно попытаться отсоединить и повторно подключить вычислительные ресурсы к рабочей области. Обратите внимание на дополнительные заметки о повторном присоединении.

Совет

Дополнительные сведения об устранении распространенных ошибок при создании и обновлении сетевых конечных точек и развертываний Kubernetes см. в статье "Устранение неполадок с сетевыми конечными точками".

Ошибка удостоверения

ОШИБКА: RefreshExtensionIdentityNotSet

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

Обратите внимание, что эта ошибка доступна только для управляемых кластеров.

Как проверка sslCertPemFile и sslKeyPemFile правильно?

Чтобы разрешить отображение известных ошибок, можно использовать команды для выполнения базовых проверка сертификата и ключа. Ожидаете, что вторая команда возвращает "RSA key ok" без запроса на ввод пароля.

openssl x509 -in cert.pem -noout -text
openssl rsa -in key.pem -noout -check

Выполните команды, чтобы проверить соответствие sslCertPemFile и sslKeyPemFile:

openssl x509 -in cert.pem -noout -modulus | md5sum
openssl rsa -in key.pem -noout -modulus | md5sum

Для sslCertPemFile это общедоступный сертификат. Он должен включать цепочку сертификатов, которая включает следующие сертификаты и должна находиться в последовательности сертификата сервера, промежуточного сертификата ЦС и корневого сертификата ЦС:

  • Сертификат сервера: сервер представляет клиенту во время подтверждения TLS. Он содержит открытый ключ сервера, доменное имя и другие сведения. Сертификат сервера подписан промежуточным центром сертификации (ЦС), который отвечает за удостоверение сервера.
  • Промежуточный сертификат ЦС: промежуточный ЦС представляет клиенту, чтобы подтвердить его полномочия для подписи сертификата сервера. Он содержит открытый ключ промежуточного ЦС, имя и другие сведения. Промежуточный сертификат ЦС подписан корневым ЦС, который отвечает за удостоверение промежуточного ЦС.
  • Сертификат корневого ЦС: корневой ЦС представляет клиенту, чтобы доказать, что его центр сертификации подписывает промежуточный сертификат ЦС. Он содержит открытый ключ корневого ЦС, имя и другие сведения. Сертификат корневого ЦС является самозаверяемым и доверенным клиентом.

Руководство по обучению

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

Отладка повторных попыток задания

Если модуль обучения задания, запущенный в кластере, был завершен из-за того, что узел, работающий на узле OOM (вне памяти), задание автоматически извлекается на другой доступный узел.

Чтобы продолжить отладку первопричины задания, можно перейти на портал рабочей области, чтобы проверка журнал повторных попыток задания.

  • Каждый журнал повторных попыток записывается в новую папку журнала с форматом "число<> повторных попыток"(например: retry-001).

Затем вы можете получить сведения о сопоставлении заданий с повторными попытками, чтобы выяснить, на каком узле запущено задание повтора.

Screenshot of adding a new extension to the Azure Arc-enabled Kubernetes cluster from the Azure portal.

Сведения о сопоставлении узлов заданий можно получить из amlarc_cr_bootstrap.log в папке system_logs.

Имя узла узла, на котором выполняется модуль pod задания, указывается в этом журнале, например:

++ echo 'Run on node: ask-agentpool-17631869-vmss0000"

"ask-agentpool-17631869-vmss00000" представляет имя узла узла, выполняющего это задание в кластере AKS. Затем вы можете получить доступ к кластеру, чтобы проверка о состоянии узла для дальнейшего изучения.

Задание pod зависает в состоянии Init

Если задание выполняется дольше, чем ожидалось, и если вы обнаружите, что модули pod задания зависают в состоянии Init с этим предупреждениемUnable to attach or mount volumes: *** failed to get plugin from volumeSpec for volume ***-blobfuse-*** err=no volume plugin matched, проблема может возникнуть, так как расширение Машинное обучение Azure не поддерживает режим загрузки входных данных.

Чтобы устранить эту проблему, измените режим подключения для входных данных.

Распространенные ошибки сбоя задания

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

Задание не выполнено. 137

Если сообщение об ошибке:

Azure Machine Learning Kubernetes job failed. 137:PodPattern matched: {"containers":[{"name":"training-identity-sidecar","message":"Updating certificates in /etc/ssl/certs...\n1 added, 0 removed; done.\nRunning hooks in /etc/ca-certificates/update.d...\ndone.\n * Serving Flask app 'msi-endpoint-server' (lazy loading)\n * Environment: production\n   WARNING: This is a development server. Do not use it in a production deployment.\n   Use a production WSGI server instead.\n * Debug mode: off\n * Running on http://127.0.0.1:12342/ (Press CTRL+C to quit)\n","code":137}]}

Проверьте параметр прокси-сервера и проверка, был ли добавлен параметр 127.0.0.1 в диапазон пропуска прокси-сервера при настройке az connectedk8s connect этой сети.

Задание не выполнено. E45004

Если сообщение об ошибке:

Azure Machine Learning Kubernetes job failed. E45004:"Training feature is not enabled, please enable it when install the extension."

Проверьте, задано enableTraining=True ли при установке расширения Машинное обучение Azure. Дополнительные сведения см. в статье "Развертывание Машинное обучение Azure расширения в кластере AKS или Arc Kubernetes"

Задание не выполнено. 400

Если сообщение об ошибке:

Azure Machine Learning Kubernetes job failed. 400:{"Msg":"Encountered an error when attempting to connect to the Azure Machine Learning token service","Code":400}

Чтобы проверка сетевых параметров, можно следовать разделу Приватный канал устранению неполадок.

Укажите ключ учетной записи или маркер SAS

Если вам нужно получить доступ к Реестр контейнеров Azure (ACR) для образа Docker и получить доступ к учетной записи служба хранилища для обучающих данных, эта проблема должна возникать, если вычисление не указано с управляемым удостоверением.

Чтобы получить доступ к Реестр контейнеров Azure (ACR) из вычислительного кластера Kubernetes для образов Docker или получить доступ к учетной записи хранения для обучающих данных, необходимо подключить вычислительные ресурсы Kubernetes с включенным управляемым удостоверением, назначенным системой или пользователем.

В приведенном выше сценарии обучения это удостоверение вычислений необходимо для использования вычислительных ресурсов Kubernetes в качестве учетных данных для обмена данными между ресурсом ARM, привязанным к рабочей области и кластеру вычислений Kubernetes. Поэтому без этого удостоверения задание обучения завершается сбоем и сообщает о отсутствии ключа учетной записи или маркера sas. Обратитесь к учетной записи хранения, например если вы не указываете управляемое удостоверение для вычислений Kubernetes, задание завершается ошибкой со следующим сообщением об ошибке:

Unable to mount data store workspaceblobstore. Give either an account key or SAS token

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

Чтобы устранить эту проблему, можно назначить управляемому удостоверению вычислительные ресурсы на шаге подключения вычислений или назначить управляемое удостоверение вычислению после его подключения. Дополнительные сведения см. в статье "Назначение управляемого удостоверения" целевому объекту вычислений.

Сбой авторизации AzureBlob

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

Unable to upload project files to working directory in AzureBlob because the authorization failed. 

Причина заключается в сбое авторизации при попытке задания отправить файлы проекта в AzureBlob. Чтобы устранить проблему, можно проверка следующие элементы:

  • Убедитесь, что учетная запись хранения включила исключения "Разрешить службам Azure в списке доверенных служб доступ к этой учетной записи хранения", а рабочая область находится в списке экземпляров ресурсов.
  • Убедитесь, что рабочая область имеет управляемое удостоверение, назначаемое системой.

Мы могли бы использовать этот метод для проверка настройки приватного канала, войдите в один модуль pod в кластере Kubernetes, а затем проверка связанные параметры сети.

  • Найдите идентификатор рабочей области в портал Azure или получите этот идентификатор, выполнив команду az ml workspace show в командной строке.

  • Отображение всех модулей pod azureml-fe, выполняемых с помощью kubectl get po -n azureml -l azuremlappname=azureml-feкоманды .

  • Войдите в любой из них.kubectl exec -it -n azureml {scorin_fe_pod_name} bash

  • Если кластер не использует прокси-сервер.nslookup {workspace_id}.workspace.{region}.api.azureml.ms Если вы правильно настроили приватный канал из виртуальной сети в рабочую область, внутренний IP-адрес в виртуальной сети должен отвечать с помощью средства DNSLookup .

  • Если кластер использует прокси-сервер, можно попытаться выполнить рабочую curl область

curl https://{workspace_id}.workspace.westcentralus.api.azureml.ms/metric/v2.0/subscriptions/{subscription}/resourceGroups/{resource_group}/providers/Microsoft.MachineLearningServices/workspaces/{workspace_name}/api/2.0/prometheus/post -X POST -x {proxy_address} -d {} -v -k

Когда прокси-сервер и рабочая область настроены правильно с помощью приватного канала, следует наблюдать попытку подключения к внутреннему IP-адресу. В этом сценарии ожидается ответ с кодом состояния HTTP 401, если маркер не указан.

Другие известные проблемы

Обновление вычислений Kubernetes не вступают в силу

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

Имя рабочей области или группы ресурсов заканчивается "-"

Распространенная причина сбоя InternalServerError при создании рабочих нагрузок, таких как развертывания, конечные точки или задания в вычислительной среде Kubernetes, имеет специальные символы, такие как "-" в конце рабочей области или имени группы ресурсов.

Следующие шаги