Partilhar via


Aceder a um cluster privado do Azure Kubernetes Service (AKS) usando as funcionalidades "command invoke" ou "Run command"

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 invoke comando e o --command parâmetro para especificar o comando a executar. O exemplo seguinte coloca os pods no kube-system namespace.

    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 invoke comando e o --command parâ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 o nginx grá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.

  1. Crie um ficheiro de manifesto Kubernetes chamado deployment.yaml. O ficheiro de exemplo de implementação seguinte implanta um nginx pod.

    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
    
  2. Aplicar o ficheiro de implementação ao seu cluster usando o comando az aks command invoke com o parâmetro --file para anexar o ficheiro. O exemplo seguinte aplica o deployment.yaml ficheiro ao default namespace.

    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.

  1. Crie dois ficheiros de manifestos Kubernetes nomeados deployment.yaml e configmap.yaml. Os seguintes ficheiros de implementação de exemplo implementam um nginx pod 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"
    EOF
    
  2. Aplica os ficheiros de implementação ao seu cluster usando o comando az aks command invoke com o parâmetro --file para anexar o ficheiro. O exemplo seguinte aplica os deployment.yaml ficheiros e configmap.yaml ao default namespace.

    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 nodes
  • kubectl get deployments
  • kubectl get pods
  • kubectl describe nodes
  • kubectl describe pod <pod-name>
  • kubectl describe deployment <deployment-name>
  • kubectl apply -f <file-name>

Use Run command para executar um único comando

  1. No portal do Azure, navegue até seu cluster privado.
  2. No menu de serviço, em recursos do Kubernetes, selecione o comando Executar.
  3. Introduza o comando que pretende executar e selecione Executar.

Use Run command para executar comandos com arquivos anexados

  1. No portal do Azure, navegue até seu cluster privado.

  2. No menu de serviço, em recursos do Kubernetes, selecione o comando Executar.

  3. Selecione Anexar arquivos>Procurar arquivos.

    Captura de ecrã a mostrar a anexação de ficheiros ao comando Executar do portal do Azure.

  4. Seleciona o(s) ficheiro(s) que queres anexar e depois seleciona Anexar.

  5. 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.

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: