Compartilhar via


Conectar-se ao cluster do Kubernetes do Nexus do Operador do Azure

Durante todo o ciclo de vida do cluster de Kubernetes do Nexus do Operador do Azure, você eventualmente precisa acessar diretamente um nó de cluster. Esse acesso pode ser para operações de solução de problemas, coleta de logs ou manutenção. Você acessa um nó por meio da autenticação. Os métodos de autenticação variam dependendo do método de conexão. Você se autentica com segurança nos nós de cluster, por meio de duas opções discutidas neste artigo. Por motivos de segurança, os nós de cluster não são expostos à Internet. Em vez disso, para se conectar diretamente aos nós de cluster, use o kubectl debug ou o endereço IP do host de um jumpbox.

Pré-requisitos

  • Um cluster de Kubernetes do Nexus do Operador do Azure implantado em um grupo de recursos em sua assinatura do Azure.
  • Chave privada SSH para os nós de cluster.
  • Para o SSH usando o endereço IP do nó, implante uma VM jumpbox na mesma rede CNI (Interface de Rede de Contêiner) que os nós de cluster.

Acesso a nós de cluster por meio do Azure Arc para servidores

O comando az ssh arc permite que os usuários acessem remotamente uma VM de cluster conectada ao Azure Arc. Esse método é uma maneira segura de usar o SSH no nó do cluster diretamente da linha de comando, tornando-o um método rápido e eficiente para o gerenciamento remoto.

Observação

Os nós de cluster do Kubernetes do Nexus do Operador são servidores conectados ao Arc por padrão.

  1. Defina as variáveis necessárias. Substitua os espaços reservados pelos valores reais relevantes para o ambiente do Azure e o cluster do Kubernetes do Nexus.

    RESOURCE_GROUP="myResourceGroup" # Resource group where the Nexus Kubernetes cluster is deployed
    CLUSTER_NAME="myNexusK8sCluster" # Name of the Nexus Kubernetes cluster
    SUBSCRIPTION_ID="<Subscription ID>" # Azure subscription ID
    ADMIN_USERNAME="azureuser" # Username for the cluster administrator (--admin-username parameter value used during cluster creation)
    SSH_PRIVATE_KEY_FILE="<vm_ssh_id_rsa>" # Path to the SSH private key file
    MANAGED_RESOURCE_GROUP=$(az networkcloud kubernetescluster show -n $CLUSTER_NAME -g $RESOURCE_GROUP --subscription $SUBSCRIPTION_ID --output tsv --query managedResourceGroupConfiguration.name)
    
  2. Obtenha os nomes de nó de cluster disponíveis.

    az networkcloud kubernetescluster show --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP --subscription $SUBSCRIPTION_ID -o json | jq '.nodes[].name'
    
  3. Saída de exemplo:

    "mynexusk8scluster-0b32128d-agentpool1-md-7h9t4"
    "mynexusk8scluster-0b32128d-agentpool1-md-c6xbs"
    "mynexusk8scluster-0b32128d-control-plane-qq5jm"
    
  4. Defina o nome do nó do cluster como a variável VM_NAME.

    VM_NAME="mynexusk8scluster-0b32128d-agentpool1-md-7h9t4"
    
  5. Execute o comando a seguir para SSH no nó do cluster.

    az ssh arc --subscription $SUBSCRIPTION_ID \
        --resource-group $MANAGED_RESOURCE_GROUP \
        --name $VM_NAME \
        --local-user $ADMIN_USERNAME \
        --private-key-file $SSH_PRIVATE_KEY_FILE
    

Acessar nós usando a API do Kubernetes

Esse método requer o uso do comando kubectl debug. Esse método é limitado a contêineres e pode ignorar problemas mais amplos do sistema, ao contrário do SSH (usando 'az ssh arc' ou IP direto), que oferece acesso e controle de nó completos.

Acesso à API do Kubernetes por meio do Azure Arc para Kubernetes

Observação

Quando você cria um cluster do Kubernetes do Nexus, o Nexus cria automaticamente um grupo de recursos dedicado ao armazenamento dos recursos de cluster, dentro desse grupo, o recurso de cluster conectado do Arc é estabelecido.

Para acessar o cluster, você precisa configurar a conexão do cluster kubeconfig. Depois de fazer logon na CLI do Azure com a entidade Microsoft Entra relevante, você pode obter o kubeconfig necessário para se comunicar com o cluster de qualquer lugar, mesmo fora do firewall que o cerca.

  1. Configure as variáveis CLUSTER_NAME, RESOURCE_GROUP e SUBSCRIPTION_ID.

    CLUSTER_NAME="myNexusK8sCluster"
    RESOURCE_GROUP="myResourceGroup"
    SUBSCRIPTION_ID=<set the correct subscription_id>
    
  2. Consultar o grupo de recursos gerenciados com o az e armazenar no MANAGED_RESOURCE_GROUP

     az account set -s $SUBSCRIPTION_ID
     MANAGED_RESOURCE_GROUP=$(az networkcloud kubernetescluster show -n $CLUSTER_NAME -g $RESOURCE_GROUP --output tsv --query managedResourceGroupConfiguration.name)
    
  3. O comando a seguir inicia um proxy connectedk8s que permite que você se conecte ao servidor de API do Kubernetes para o cluster especificado do Kubernetes do Nexus.

    az connectedk8s proxy -n $CLUSTER_NAME  -g $MANAGED_RESOURCE_GROUP &
    
  4. Use kubectl para enviar solicitações ao cluster:

    kubectl get pods -A
    

    Agora você deve conseguir ver uma resposta do cluster contendo a lista de todos os nós.

Observação

Se estiver vendo a mensagem de erro "Falha ao postar o token de acesso no proxy do cliente ou Falha ao se conectar à MSI", talvez seja necessário executar um az login para se autenticar novamente no Azure.

Acesso a nós de cluster por meio do Azure Arc para Kubernetes

Após se conectar a um cluster por meio do Arc para Kubernetes, você poderá se conectar ao nó Kubernetes individual usando o comando kubectl debug, para executar um contêiner privilegiado no nó.

  1. Liste os nós no cluster Kubernetes do Nexus:

    $> kubectl get nodes
    NAME                                             STATUS   ROLES           AGE    VERSION
    mynexusk8scluster-0b32128d-agentpool1-md-7h9t4   Ready    <none>          125m   v1.24.9
    mynexusk8scluster-0b32128d-agentpool1-md-c6xbs   Ready    <none>          125m   v1.24.9
    mynexusk8scluster-0b32128d-control-plane-qq5jm   Ready    <none>          124m   v1.24.9
    
  2. Inicie um contêiner privilegiado no nó e conectar-se a ele:

    $> kubectl debug node/mynexusk8scluster-0b32128d-agentpool1-md-7h9t4 -it --image=mcr.microsoft.com/cbl-mariner/base/core:2.0
    Creating debugging pod node-debugger-mynexusk8scluster-0b32128d-agentpool1-md-7h9t4-694gg with container debugger on node mynexusk8scluster-0b32128d-agentpool1-md-7h9t4.
    If you don't see a command prompt, try pressing enter.
    root [ / ]#
    

    Esse contêiner com privilégios concede acesso ao nó. Execute comandos no nó do cluster executando chroot /host na linha de comando.

  3. Quando terminar de usar um pod de depuração, insira o comando exit para encerrar a sessão do shell interativo. Depois de sair do shell, exclua o pod:

    kubectl delete pod node-debugger-mynexusk8scluster-0b32128d-agentpool1-md-7h9t4-694gg 
    

Criar uma conexão de shell interativa com um nó usando o endereço IP

Conectar-se ao nó de cluster do jumpbox do Azure

Outra opção para se conectar com segurança a um nó de cluster do Kubernetes do Nexus do Operador do Azure é configurar um acesso direto à rede CNI a partir da VM jumpbox do Azure. Usando essa abordagem, é possível executar o SSH nos nós de cluster e também executar comandos kubectl no cluster usando o arquivo kubeconfig.

Entre em contato com o administrador de rede para configurar uma conexão direta da VM jumpbox do Azure com a rede CNI do cluster.

Conectar-se ao nó de cluster do jumpbox local

Estabeleça o acesso direto à CNI (Interface de Rede de Contêiner) do cluster de dentro do jumpbox local. Esse acesso direto permite que você SSH entre nos nós de cluster e permite executar comandos kubectl usando o arquivokubeconfig.

Entre em contato com o administrador de rede para configurar essa conexão direta com a rede CNI do cluster.

Endereço IP dos nós de cluster

Antes de se conectar aos nós de cluster, encontre o endereço IP dos nós. O endereço IP dos nós pode ser encontrado usando o portal do Azure ou a CLI do Azure.

Usar a CLI do Azure

  1. Defina as variáveis RESOURCE_GROUP, CLUSTER_NAME e SUBSCRIPTION_ID para corresponder ao ambiente.

    RESOURCE_GROUP="myResourceGroup"
    CLUSTER_NAME="myNexusK8sCluster"
    SUBSCRIPTION_ID="<Subscription ID>"
    
  2. Execute o comando a seguir para obter o endereço IP dos nós.

    az networkcloud kubernetescluster show --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP --subscription $SUBSCRIPTION_ID -o json | jq '.nodes[] | select(any(.networkAttachments[]; .networkAttachmentName == "defaultcni")) | {name: .name, ipv4Address: (.networkAttachments[] | select(.networkAttachmentName == "defaultcni").ipv4Address)}'
    
  3. Aqui está a saída de exemplo do comando.

    {
      "name": "mynexusk8scluster-0b32128d-agentpool1-md-7h9t4",
      "ipv4Address": "10.5.54.47"
    }
    {
      "name": "mynexusk8scluster-0b32128d-agentpool1-md-c6xbs",
      "ipv4Address": "10.5.54.48"
    }
    {
      "name": "mynexusk8scluster-0b32128d-control-plane-qq5jm",
      "ipv4Address": "10.5.54.46"
    }
    

Use o Portal do Azure

Para localizar o endereço IP da VM para SSH, siga estas etapas:

  1. Acesse o portal do Azure e entre com seu nome de usuário e senha.
  2. Digite “Cluster do Kubernetes (Operador Nexus)” na caixa de pesquisa e selecione o serviço “Cluster do Kubernetes” na lista de resultados.

Captura de tela da navegação do serviço do Kubernetes do Nexus.

  1. Procure o recurso específico do cluster “Nexus do Kubernetes” que você precisará para usar a pesquisa.

Captura de tela da navegação no cluster do Kubernetes do Nexus.

  1. Depois de encontrar o recurso certo, correspondendo seu nome com o nome do cluster, selecione o recurso para ir para a página inicial “Cluster do Kubernetes”.

Captura de tela da página inicia do cluster do Kubernetes do Nexus.

  1. Após encontrar o recurso certo, correspondendo seu nome com o nome do cluster, acesse a seção “Nós de Cluster do Kubernetes” no menu à esquerda.

Captura de tela da navegação de nós de cluster do Kubernetes do Nexus.

  1. Selecione o nome do nó do Kubernetes no qual você está interessado para visualizar suas informações.
  2. Verifique a guia “Redes Anexada” para localizar o endereço IP da “Rede de Camada 3” do nó usado como rede CNI.

Captura de tela da navegação de redes de nós de cluster do Kubernetes do Nexus.

Próximas etapas

Experimente os artigos a seguir para saber mais sobre o cluster de Kubernetes do Operador Nexus do Azure.