Partilhar via


Acessar um cluster privado do Serviço Kubernetes do Azure (AKS) usando o recurso de comando invoke ou Run command

Quando você acessa um cluster AKS privado, precisa se conectar ao cluster a partir da rede virtual do cluster, de uma rede emparelhada ou de um ponto de extremidade privado configurado. Essas abordagens exigem a configuração de uma VPN, Rota Expressa, a implantação de uma jumpbox dentro da rede virtual do cluster ou a criação de um ponto de extremidade privado dentro de outra rede virtual.

Com a CLI do Azure, você pode usar command invoke para acessar clusters privados sem a necessidade de configurar uma VPN ou Rota Expressa. command invoke permite que você invoque comandos remotamente, como kubectl e helm, em seu cluster privado por meio da API do Azure sem se conectar diretamente ao cluster. As Microsoft.ContainerService/managedClusters/runcommand/action ações e Microsoft.ContainerService/managedclusters/commandResults/read controlam as permissões de uso command invokedo .

Com o portal do Azure, você pode usar o Run command recurso para executar comandos em seu cluster privado. O Run command recurso usa a mesma command invoke funcionalidade para executar comandos no cluster.

O pod criado pelo Run command fornece kubectl e helm para operar seu cluster. jq, xargs, grep, e awk estão disponíveis para suporte Bash.

Antes de começar

Antes de começar, certifique-se de que tem os seguintes recursos e permissões:

  • Um cluster privado existente. Se não tiver um, consulte Criar um cluster AKS privado.
  • A CLI do Azure versão 2.24.0 ou posterior. Executar az --version para localizar a versão. Se precisar de instalar ou atualizar, veja Install Azure CLI (Instalar o Azure CLI).
  • Acesso às Microsoft.ContainerService/managedClusters/runcommand/action funções e Microsoft.ContainerService/managedclusters/commandResults/read no cluster.

Limitações

Esse recurso foi projetado para simplificar o acesso ao cluster e não foi projetado para acesso programático. Se você tiver um programa invocando o Kubernetes usando Run commando , as seguintes desvantagens se aplicam:

  • Você obtém apenas exitCode e saída de texto, e perde detalhes de nível de API.
  • Um salto extra introduz pontos de falha extras.

O pod criado pelo é codificado Run command com um 200m CPU e 500Mi memory pedido, e um 500m CPU e 1Gi memory limite. Em casos raros em que todo o nó está compactado, o pod não pode ser programado dentro da limitação da API ARM de 60 segundos. Isso significa que o Run command falharia, mesmo que esteja configurado para dimensionamento automático.

command invoke executa os comandos do cluster, portanto, todos os comandos executados dessa maneira estão sujeitos às restrições de rede configuradas e a quaisquer outras restrições configuradas. Verifique se há nós e recursos suficientes em seu cluster para agendar esse pod de comando.

Nota

A saída para command invoke é limitada a 512kB de tamanho.

Executar comandos no cluster AKS

Use command invoke para executar um único comando

  • Execute um comando no cluster usando o az aks command invoke --command comando. O comando de exemplo a seguir executa o kubectl get pods -n kube-system comando no cluster myPrivateCluster em myResourceGroup.

    az aks command invoke \
      --resource-group myResourceGroup \
      --name myPrivateCluster \
      --command "kubectl get pods -n kube-system"
    

Use command invoke para executar vários comandos

  • Execute vários comandos no cluster usando o az aks command invoke --command comando. O comando de exemplo a seguir executa três helm comandos no cluster myPrivateCluster em myResourceGroup.

    az aks command invoke \
      --resource-group myResourceGroup \
      --name myPrivateCluster \
      --command "helm repo add bitnami https://charts.bitnami.com/bitnami && helm repo update && helm install my-release bitnami/nginx"
    

Use command invoke para executar comandos com um arquivo ou diretório anexado

  • Execute comandos com um arquivo ou diretório anexado usando o az aks command invoke --command comando com o --file parâmetro. O comando de exemplo a seguir é executado kubectl apply -f deployment.yaml -n default no cluster myPrivateCluster em myResourceGroup. O deployment.yaml arquivo é anexado a partir do diretório atual no computador de desenvolvimento onde az aks command invoke foi executado.

    az aks command invoke \
      --resource-group myResourceGroup \
      --name myPrivateCluster \
      --command "kubectl apply -f deployment.yaml -n default" \
      --file deployment.yaml
    

Use command invoke para executar comandos com todos os arquivos no diretório atual anexado

  • Execute comandos com todos os arquivos no diretório atual anexado usando o az aks command invoke --command comando com o --file parâmetro. O comando de exemplo a seguir é executado kubectl apply -f deployment.yaml configmap.yaml -n default no cluster myPrivateCluster em myResourceGroup. Os deployment.yaml arquivos e configmap.yaml fazem parte do diretório atual no computador de desenvolvimento onde az aks command invoke foi executado.

    az aks command invoke \
      --resource-group myResourceGroup \
      --name myPrivateCluster \
      --command "kubectl apply -f deployment.yaml configmap.yaml -n default" \
      --file .
    

Resolução de Problemas

Para obter informações sobre os problemas mais comuns e az aks command invoke como corrigi-los, consulte Resolver az aks command invoke falhas.

Próximos passos

Neste artigo, você aprendeu como acessar um cluster privado e executar comandos nesse cluster. Para obter mais informações sobre clusters AKS, consulte os seguintes artigos: