Устранение сбоев az aks command invoke

В этой статье описывается, как устранить сбои az aks command invoke в Microsoft Azure CLI, чтобы можно было успешно подключиться к любому кластеру Служба Azure Kubernetes (AKS), особенно к частному кластеру AKS.

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

Методы подключения Дополнительный компонент конфигурации
Виртуальная сеть Виртуальная частная сеть (VPN)
Пиринговая сеть Azure ExpressRoute
Частная конечная точка Jumpbox

Команда az aks command invoke Azure CLI — это альтернативный способ подключения к кластеру, который не требует дополнительных компонентов конфигурации.

При выполнении az aks command invoke команды Azure CLI автоматически создает command-<ID> модуль pod в aks-command пространстве имен для доступа к кластеру AKS и получения необходимых сведений.

Предварительные требования

  • Azure CLI.

  • Средство Kubernetes kubectl . Чтобы установить kubectl с помощью Azure CLI, выполните команду az aks install-cli .

Симптомы

В следующей таблице перечислены распространенные az aks command invoke сообщения об ошибках. Каждое сообщение об ошибке содержит ссылку на раздел, в котором описывается причина возникновения ошибки и способы ее устранения.

Сообщение об ошибке Ссылка
Операция вернула недопустимое состояние "Не найдено" Причина 1. Не удается создать pod из-за ограничений узла или ресурсов
Не удалось выполнить команду в управляемом кластере из-за сбоя kubernetes. Сведения: веб-перехватчик допуска "validation.gatekeeper.sh" отклонил запрос: <policy-specific-message> Причина 2. Политика Azure не разрешает создание pod
Ошибка с сервера (запрещено): пространства имен запрещены: user "<ID>" не может перечислить ресурс "<resource>" в группе API "" в кластере область Причина 3. Необходимые роли не предоставляются
Не удалось подключиться к MSI. Убедитесь, что MSI настроен правильно.

Возвращается запрос на получение маркера: ответ [400];
Причина 4. Проблема Cloud Shell

Причина 1. Не удается создать pod из-за ограничений узла или ресурсов

Операция возвращает состояние, Not Found так как command-<ID> модуль pod не может достичь успешного состояния, например Running. (Во многих случаях модуль pod остается в Pending состоянии .) В этом случае узлы не могут запланировать pod. Этот сценарий может иметь различные причины, например следующие:

  • Ограничения ресурсов
  • Узлы с состоянием NotReady или SchedulingDisabled
  • Узлы с запятнами, которые не может терпеть pod
  • Другие причины

Решение 1. Измените конфигурацию, чтобы можно было запланировать и запустить pod

Убедитесь, что command-<ID> модуль pod можно запланировать и запустить.

Причина 2. Политика Azure не разрешает создание pod

Если у вас есть определенные политики Azure, az aks command invoke команда может завершиться ошибкой из-за запрета конфигурации в модуле command-<ID> pod. Например, у вас может быть политика Azure, которая требует наличия корневой файловой системы только для чтения или другой конкретной конфигурации.

Решение 2. Исключение пространства имен для политик, запрещающих создание pod

Рекомендуется исключить aks-command пространство имен для связанных политик Azure, которые не разрешают создание pod. Дополнительные сведения об исключении см. в статье Общие сведения о область в Политика Azure

Чтобы исключить Политика Azure, выполните приведенные далее действия.

  1. В портал Azure найдите и выберите Политика.

  2. В области навигации Политика найдите раздел Разработка и выберите Назначения.

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

  4. На странице назначения политики для этого назначения выберите Изменить назначение.

  5. Перейдите на вкладку Параметры .

  6. Снимите флажок Показывать только параметры, требующие ввода или проверки .

  7. В поле Исключения пространства имен добавьте пространство имен aks-command в список пространств имен, которые необходимо исключить.

Кроме того, если политика не является встроенной политикой, можно проверка конфигурацию command-<ID> модуля pod и настроить политику при необходимости. Чтобы изучить конфигурацию YAML pod, выполните следующую команду:

kubectl get pods command-<ID> --namespace aks-command --output yaml

Причина 3. Необходимые роли не предоставляются

Для использования az aks command invoke команды необходимо иметь доступ к следующим ролям в кластере:

  • Microsoft.ContainerService/managedClusters/runCommand/action
  • Microsoft.ContainerService/managedClusters/commandResults/read

Если у вас нет этих ролей, az aks command invoke команда не сможет получить необходимые сведения.

Решение 3. Добавление необходимых ролей

Microsoft.ContainerService/managedClusters/runCommand/action Добавьте роли иMicrosoft.ContainerService/managedClusters/commandResults/read.

Причина 4. Проблема Cloud Shell

Команда az aks command invoke не обрабатывается должным образом при выполнении непосредственно в среде azure Cloud Shell. Это известная проблема в Cloud Shell.

Решение 4a. Сначала выполните команду az login

В Cloud Shell выполните команду az login перед запуском az aks command invoke.

Решение 4b. Выполнение команды на локальном компьютере или виртуальной машине

az aks command invoke Выполните команду на локальном компьютере или любой виртуальной машине, на которой установлен Интерфейс командной строки Azure.

Заявление об отказе от ответственности за сведения о продуктах сторонних производителей

В этой статье упомянуты программные продукты независимых производителей. Корпорация Майкрософт не дает никаких гарантий, подразумеваемых и прочих, относительно производительности и надежности этих продуктов.

Свяжитесь с нами для получения помощи

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