Устранение сбоев 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 и получения необходимых сведений.
Предварительные требования
Средство 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, выполните приведенные далее действия.
В портал Azure найдите и выберите Политика.
В области навигации Политика найдите раздел Разработка и выберите Назначения.
В таблице назначений найдите строку, содержащую имя назначения , которое требуется изменить, и выберите имя назначения.
На странице назначения политики для этого назначения выберите Изменить назначение.
Перейдите на вкладку Параметры .
Снимите флажок Показывать только параметры, требующие ввода или проверки .
В поле Исключения пространства имен добавьте пространство имен 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.