Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Quando acede a um cluster privado Azure Kubernetes Service (AKS), precisa de se ligar ao cluster a partir da rede virtual do cluster (VNet), de uma rede peered ou de um endpoint privado configurado. Estas abordagens exigem uma configuração adicional, como configurar uma VPN ou Express Route.
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 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 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 por Run command fornece kubectl e helm para operar o seu cluster.
jq, xargs, grep, e awk estão disponíveis para suporte Bash.
Sugestão
Pode usar o Azure Copilot para executar kubectl comandos no portal Azure. Para mais informações, consulte Trabalhar com clusters AKS de forma eficiente usando o Azure Copilot.
Pré-requisitos
Requisitos de sistema e permissões
| Tipo de requisito | Specification | Como verificar |
|---|---|---|
| Azure CLI version | 2.24.0 ou posterior | Use o az --version comando para verificar sua versão. |
| Cluster privado AKS | Deve já existir | Se não tiver um cluster privado existente, siga os passos em Criar um cluster AKS privado. |
| Ações RBAC |
Microsoft.ContainerService/managedClusters/runcommand/action e Microsoft.ContainerService/managedClusters/commandResults/read |
Verifique usando a página de controlo de acesso do portal Azure (IAM) ou o az role assignment list comando Azure CLI. |
Executar especificações de recursos do command pod
| Tipo de recurso | Valor | Impacto |
|---|---|---|
| Pedidos de CPU | 200m | CPU mínima reservada para o módulo de comando |
| Pedidos de memória | 500Mi | Memória mínima reservada para o pod de comandos |
| Limites da CPU | 500m | CPU máxima disponível para o pod de comando |
| Limites de memória | 1 GiB (Gibibyte) | Memória máxima disponível para o pod de comandos |
| Azure Resource Manager (ARM) API timeout | 60 segundos | Tempo máximo para o agendamento de pods |
| Limite de tamanho de saída | 512kB | Tamanho máximo de saída de comando |
Limitações e considerações
Âmbito do projeto
- Não para acesso programático: Use Bastion, VPN ou ExpressRoute para chamadas automáticas de API.
- Dependência de agendamento do Pod: Requer recursos suficientes do cluster (consultar as especificações de recursos).
- Limitações de saída: apenas exitCode e texto , sem detalhes ao nível da API.
- Restrições de rede aplicam-se: Sujeito a restrições de rede e segurança do cluster.
Pontos potenciais de falha
- Falha no agendamento de um pod se os nós forem limitados por recursos.
- 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 512kB.
Use command invoke num cluster privado AKS com a CLI da Azure
Defina variáveis de ambiente para o seu grupo de recursos e nome do cluster para usar nos comandos seguintes.
export AKS_RESOURCE_GROUP="<resource-group-name>" export AKS_CLUSTER_NAME="<cluster-name>"Estas variáveis de ambiente permitem-te executar comandos AKS sem teres de reescrever os seus nomes.
Use command invoke para executar um único comando
Executa um único comando no teu cluster usando o
az aks command invokecomando e o--commandparâmetro para especificar o comando a executar. O exemplo seguinte coloca os pods nokube-systemnamespace.az aks command invoke \ --resource-group $AKS_RESOURCE_GROUP \ --name $AKS_CLUSTER_NAME \ --command "kubectl get pods -n kube-system"
Use command invoke para executar vários comandos
Executa vários comandos no teu cluster usando o
az aks command invokecomando e o--commandparâmetro para especificar os comandos a executar. O exemplo seguinte adiciona o repositório de gráficos Bitnami Helm, atualiza o repositório e instala onginxgráfico.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 quiser executar um comando com um ficheiro anexado, o ficheiro deve existir e estar acessível no seu diretório de trabalho atual. No exemplo seguinte, criamos um ficheiro de implementação mínima para demonstração.
Crie um ficheiro de manifesto Kubernetes chamado
deployment.yaml. O ficheiro de exemplo de implementação seguinte 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 EOFAplicar o ficheiro de implementação ao seu cluster usando o comando
az aks command invokecom o parâmetro--filepara anexar o ficheiro. O exemplo seguinte aplica odeployment.yamlficheiro 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
Use command invoke para executar comandos com todos os ficheiros do diretório atual
Observação
Use apenas arquivos pequenos e necessários para evitar exceder os limites de tamanho do sistema.
No exemplo seguinte, criamos dois ficheiros de implementação mínima para demonstração.
Crie dois ficheiros de manifestos Kubernetes nomeados
deployment.yamleconfigmap.yaml. Os seguintes ficheiros de implementação de exemplo implementam 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" EOFAplica os ficheiros de implementação ao seu cluster usando o comando
az aks command invokecom o parâmetro--filepara anexar o ficheiro. O exemplo seguinte aplica osdeployment.yamlficheiros econfigmap.yamlaodefaultnamespace.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
Utilização Run command num cluster AKS privado no portal do Azure
Pode usar os seguintes kubectl comandos com esta Run command funcionalidade:
kubectl get nodeskubectl get deploymentskubectl get podskubectl describe nodeskubectl describe pod <pod-name>kubectl describe deployment <deployment-name>kubectl apply -f <file-name>
Use 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 o comando Executar.
- Introduza o comando que pretende 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 o comando Executar.
Selecione Anexar arquivos>Procurar arquivos.
Seleciona o(s) ficheiro(s) que queres anexar e depois seleciona Anexar.
Introduza o comando que pretende executar e selecione Executar.
Desativar Run command
Você pode desativar o Run command recurso definindo .properties.apiServerAccessProfile.disableRunCommand como true.
Solução de problemas command invoke
Para obter informações sobre os problemas mais comuns com az aks command invoke e como corrigi-los, consulte Resolver falhas az aks command invoke.
Conteúdo relacionado
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: