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
A ferramenta kubernetes kubectl . Para instalar o kubectl usando a CLI do Azure, execute o comando az aks install-cli .
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 ouSchedulingDisabled
- 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:
No portal do Azure, pesquise e selecione Política.
No painel De navegação política , localize a seção Criação e selecione Atribuições.
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.
Na página atribuição de política para essa atribuição, selecione Editar atribuição.
Selecione a guia Parâmetros .
Desmarque a opção Somente mostrar parâmetros que precisam de entrada ou revisão .
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.