Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Quando você acessa um cluster privado do AKS (Serviço de Kubernetes do Azure), precisa se conectar ao cluster por meio da VNet (rede virtual de cluster), uma rede emparelhada ou um ponto de extremidade privado configurado. Essas abordagens exigem uma configuração extra, como configurar uma VPN ou ExpressRoute.
Com a CLI do Azure, você pode usar command invoke para acessar clusters privados sem a necessidade de configurar uma VPN ou o ExpressRoute.
O command invoke permite que você invoque comandos remotamente, como kubectl e helm, no seu cluster privado por meio da API do Azure sem se conectar diretamente ao cluster. As ações Microsoft.ContainerService/managedClusters/runcommand/action RBAC e Microsoft.ContainerService/managedClusters/commandResults/read controlam as permissões para usar command invoke.
Com o portal do Azure, você pode usar o recurso Run command para executar comandos no cluster privado. O recurso Run command usa a mesma funcionalidade command invoke para executar comandos no cluster. O pod criado por Run command fornece kubectl e helm para operar seu cluster.
jq, xargs, grep e awk estão disponíveis para suporte ao Bash.
Dica
Você pode usar o Azure Copilot para executar kubectl comandos no portal do Azure. Para obter mais informações, consulte Trabalhar com clusters do AKS com eficiência usando o Azure Copilot.
Pré-requisitos
Requisitos de sistema e permissão
| Tipo de requisito | Specification | Como verificar |
|---|---|---|
| Versão da CLI do Azure | 2.24.0 ou posterior | Use o comando az --version para verificar sua versão. |
| Cluster do AKS privado | Já deve existir | Se você não tiver um cluster privado existente, siga as etapas em Criar um cluster privado do AKS. |
| Ações de RBAC |
Microsoft.ContainerService/managedClusters/runcommand/action e Microsoft.ContainerService/managedClusters/commandResults/read |
Verifique usando a página de controle de acesso (IAM) do portal do Azure ou o comando Azure CLI az role assignment list. |
Executar especificações de recursos do pod de comando
| Tipo de recurso | Value | Impacto |
|---|---|---|
| Solicitações de CPU | 200m | CPU mínima reservada para pod de comando |
| Solicitações de memória | 500Mi | Memória mínima reservada para pod de comando |
| Limites da CPU | 500 m | Máxima CPU disponível para o pod de comando |
| Limites de memória | 1 Gi | Memória máxima disponível para o pod de comando |
| Tempo limite da API do Azure Resource Manager (ARM) | 60 segundos | Tempo máximo para agendamento de pod |
| Limite de tamanho de saída | 512 kB | Tamanho máximo da saída do comando |
Limitações e considerações
Escopo de projeto
- Não para acesso programático: use Bastion, VPN ou ExpressRoute para chamadas de API automatizadas.
- Dependência de agendamento de pod: requer recursos de cluster suficientes (consulte as especificações de recursos).
- Limitações de saída: somente exitCode e texto , sem detalhes no nível da API.
- As restrições de rede se aplicam: sujeitas a restrições de rede e segurança de cluster.
Possíveis pontos de falha
- O agendamento de pods falhará se os nós tiverem recursos limitados.
- Tempo limite da API ARM (60 segundos) se o pod não puder ser agendado rapidamente.
- Truncamento de saída se a resposta exceder o limite de 512 kB.
Usar command invoke em um cluster do AKS privado com a CLI do Azure
Defina variáveis de ambiente para o grupo de recursos e o nome do cluster a serem usados nos comandos subsequentes.
export AKS_RESOURCE_GROUP="<resource-group-name>" export AKS_CLUSTER_NAME="<cluster-name>"Essas variáveis de ambiente permitem executar comandos do AKS sem precisar reescrever seus nomes.
Usar command invoke para executar um único comando
Execute um único comando em seu cluster usando o
az aks command invokecomando e o--commandparâmetro para especificar o comando a ser executado. O exemplo a seguir obtém os pods no namespacekube-system.az aks command invoke \ --resource-group $AKS_RESOURCE_GROUP \ --name $AKS_CLUSTER_NAME \ --command "kubectl get pods -n kube-system"
Usar command invoke para executar vários comandos
Execute vários comandos no cluster usando o
az aks command invokecomando e o--commandparâmetro para especificar os comandos a serem executados. O exemplo a seguir adiciona o repositório de gráficos Helm da Bitnami, atualiza o repositório e instala o gráficonginx.az aks command invoke \ --resource-group $AKS_RESOURCE_GROUP \ --name $AKS_CLUSTER_NAME \ --command "helm repo add bitnami https://charts.bitnami.com/bitnami && helm repo update && helm install my-release bitnami/nginx"
Usar command invoke para executar comandos com um arquivo anexado
Se você quiser executar um comando com um arquivo anexado, o arquivo deverá existir e estar acessível no diretório de trabalho atual. No exemplo a seguir, criamos um arquivo de implantação mínimo para demonstração.
Criar um arquivo de manifesto do Kubernetes chamado
deployment.yaml. O arquivo de implantação de exemplo a seguir implanta umnginxpod.cat <<EOF > deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: nginx-demo spec: replicas: 1 selector: matchLabels: app: nginx-demo template: metadata: labels: app: nginx-demo spec: containers: - name: nginx image: nginx:1.21.6 ports: - containerPort: 80 EOFAplique o arquivo de implantação ao cluster usando o
az aks command invokecomando com o--fileparâmetro para anexar o arquivo. O exemplo a seguir aplica odeployment.yamlarquivo aodefaultnamespace.az aks command invoke \ --resource-group $AKS_RESOURCE_GROUP \ --name $AKS_CLUSTER_NAME \ --command "kubectl apply -f deployment.yaml -n default" \ --file deployment.yaml
Usar command invoke para executar comandos com todos os arquivos no diretório atual
Observação
Use apenas arquivos pequenos e necessários para evitar exceder os limites de tamanho do sistema.
No exemplo a seguir, criamos dois arquivos de implantação mínimos para demonstração.
Criar dois arquivos de manifesto do Kubernetes nomeados
deployment.yamleconfigmap.yaml. Os arquivos de implantação de exemplo a seguir implantam umnginxpod e criam um ConfigMap com uma mensagem de boas-vindas.cat <<EOF > deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: nginx-demo spec: replicas: 1 selector: matchLabels: app: nginx-demo template: metadata: labels: app: nginx-demo spec: containers: - name: nginx image: nginx:1.21.6 ports: - containerPort: 80 EOF cat <<EOF > configmap.yaml apiVersion: v1 kind: ConfigMap metadata: name: nginx-config data: welcome-message: "Hello from configmap" EOFAplique os arquivos de implantação ao cluster usando o comando
az aks command invokecom o parâmetro--filepara anexar o arquivo. O exemplo a seguir aplica os arquivosdeployment.yamleconfigmap.yamlao namespacedefault.az aks command invoke \ --resource-group $AKS_RESOURCE_GROUP \ --name $AKS_CLUSTER_NAME \ --command "kubectl apply -f deployment.yaml -f configmap.yaml -n default" \ --file deployment.yaml \ --file configmap.yaml
Usar Run command em um cluster do AKS privado no portal do Azure
Você pode usar os seguintes kubectl comandos com o Run command recurso:
kubectl get nodeskubectl get deploymentskubectl get podskubectl describe nodeskubectl describe pod <pod-name>kubectl describe deployment <deployment-name>kubectl apply -f <file-name>
Usar Run command para executar um único comando
- No portal do Azure, navegue até seu cluster privado.
- No menu de serviço, em recursos do Kubernetes, selecione Executar comando.
- Insira o comando que deseja executar e selecione Executar.
Use Run command para executar comandos com arquivos anexados
No portal do Azure, navegue até seu cluster privado.
No menu de serviço, em recursos do Kubernetes, selecione Executar comando.
Selecione Anexar arquivos>Procurar arquivos.
Selecione o arquivo ou os arquivos que você deseja anexar e selecione Anexar.
Insira o comando que deseja executar e selecione Executar.
Desabilitar Run command
Você pode desabilitar o Run command recurso definindo .properties.apiServerAccessProfile.disableRunCommand como true.
Solucionar command invoke problemas
Para obter informações sobre os problemas mais comuns com az aks command invoke e como corrigi-los, confira Resolver az aks command invoke falhas.
Conteúdo relacionado
Neste artigo, você aprendeu a acessar um cluster privado e executar comandos nele. Para obter mais informações sobre clusters do AKS, consulte os seguintes artigos: