Resolver falhas de "invocação de comando az aks"

Este artigo descreve como resolve o comando az aks invocar falhas na CLI do Microsoft Azure para que você possa se conectar com êxito a qualquer cluster do AKS (Serviço de Kubernetes do Azure), especialmente a um cluster AKS privado.

Outros métodos de conexão precisam usar componentes de configuração extras, conforme mostrado na tabela a seguir.

Métodos de conexão Componente de configuração extra
Rede virtual VPN (rede virtual privada)
Rede emparelhada ExpressRoute do Azure
Ponto de extremidade privado Jumpbox

O az aks command invoke comando da CLI do Azure é uma maneira alternativa de se conectar a um cluster que não requer componentes de configuração extras.

Quando você executa o comando, a CLI do az aks command invoke Azure cria automaticamente um command-<ID> pod no aks-command namespace para acessar o cluster do AKS e recuperar as informações necessárias.

Pré-requisitos

Sintomas

A tabela a seguir lista mensagens de erro comuns az aks command invoke . Cada mensagem de erro tem um link para a seção que descreve por que o erro está ocorrendo e como corrigi-lo.

Mensagem de erro Link
A operação retornou um status inválido 'Não Encontrado' Causa 1: o pod não pode ser criado devido a restrições de nó ou recurso
Falha ao executar o comando no cluster gerenciado devido à falha do kubernetes. detalhes: o webhook de admissão "validation.gatekeeper.sh" negou a solicitação: <policy-specific-message> Causa 2: Azure Policy não permite a criação do pod
Erro do servidor (Proibido): namespaces é proibido: "<ID>" do usuário não pode listar recurso "<resource>" no grupo de API "" no escopo do cluster Causa 3: Funções necessárias não são concedidas
Falha ao se conectar ao MSI. Verifique se o MSI está configurado corretamente.

Obter a solicitação de Token retornada: Resposta [400];
Causa 4: há um problema de Cloud Shell

Causa 1: o pod não pode ser criado devido a restrições de nó ou recurso

A operação retorna um Not Found status porque o command-<ID> pod não pode alcançar um estado bem-sucedido, como Running. (Em muitos casos, o pod permanece no Pending estado.) Nesse caso, os nós não podem agendar o pod. Esse cenário pode ter causas diferentes, como as seguintes causas:

  • Restrições de recurso
  • Nós que têm um NotReady estado ou SchedulingDisabled
  • Nós que têm contaminações que o pod não pode tolerar
  • Outras causas

Solução 1: alterar a configuração para que você possa agendar e executar o pod

Verifique se o command-<ID> pod pode ser agendado e executado.

Causa 2: Azure Policy não permite a criação do pod

Se você tiver políticas específicas do Azure, o az aks command invoke comando poderá falhar devido a uma configuração não permitida no command-<ID> pod. Por exemplo, você pode ter uma política do Azure que requer um sistema de arquivos raiz somente leitura ou outra configuração específica.

Solução 2: isentar o namespace para políticas que proíbem a criação do pod

Recomendamos isentar o aks-command namespace para as políticas associadas do Azure que não permitem a criação do pod. Para obter mais informações sobre isenção, confira Entender escopo em Azure Policy

Para isentar um Azure Policy:

  1. No portal do Azure, pesquise e selecione Política.

  2. No painel De navegação política , localize a seção Criação e selecione Atribuições.

  3. Na tabela de atribuições, localize a linha que contém o nome de atribuição que você deseja alterar e selecione o nome da atribuição.

  4. Na página atribuição de política para essa atribuição, selecione Editar atribuição.

  5. Selecione a guia Parâmetros .

  6. Desmarque a opção Somente mostrar parâmetros que precisam de entrada ou revisão .

  7. Na caixa exclusões namespace , adicione o namespace de comando aks à lista de namespaces a serem excluídos.

Como alternativa, se a política não for uma política interna, você poderá marcar a configuração do command-<ID> pod e ajustar a política conforme necessário. Para explorar a configuração YAML do pod, execute o seguinte comando:

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

Causa 3: Funções necessárias não são concedidas

Para usar o az aks command invoke comando, você deve ter acesso às seguintes funções no cluster:

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

Se você não tiver essas funções, o az aks command invoke comando não poderá recuperar as informações necessárias.

Solução 3: Adicionar as funções necessárias

Adicione as Microsoft.ContainerService/managedClusters/runCommand/action funções e Microsoft.ContainerService/managedClusters/commandResults/read .

Causa 4: há um problema de Cloud Shell

O az aks command invoke comando não é processado conforme o esperado quando é executado diretamente no ambiente de Cloud Shell do Azure. Esse é um problema conhecido no Cloud Shell.

Solução 4a: execute primeiro o comando de logon az

Em Cloud Shell, execute o comando de logon az antes de executar az aks command invoke.

Solução 4b: executar o comando em um computador local ou em uma máquina virtual

Execute o az aks command invoke comando em um computador local ou em qualquer VM (máquina virtual) que tenha a CLI do Azure instalada.

Aviso de isenção de responsabilidade para informações de terceiros

Os produtos de terceiros mencionados neste artigo são produzidos por empresas independentes da Microsoft. A Microsoft não oferece nenhuma garantia, implícita ou não, do desempenho ou da confiabilidade desses produtos.

Entre em contato conosco para obter ajuda

Se você tiver dúvidas ou precisar de ajuda, crie uma solicitação de suporte ou peça ajuda à comunidade de suporte do Azure. Você também pode enviar comentários sobre o produto para a comunidade de comentários do Azure.