Conectar-se com RDP para nós do Windows Server de cluster do Serviço Kubernetes do Azure (AKS) para manutenção ou solução de problemas

Durante todo o ciclo de vida do cluster do Serviço Kubernetes do Azure (AKS), talvez seja necessário acessar um nó do AKS Windows Server. Esse acesso pode ser para manutenção, coleta de logs ou outras operações de solução de problemas. Você pode acessar os nós do AKS Windows Server usando RDP. Por motivos de segurança, os nós AKS não estão expostos à internet.

Como alternativa, se você quiser SSH para seus nós do AKS Windows Server, precisará acessar o mesmo par de chaves que foi usado durante a criação do cluster. Siga as etapas em SSH nos nós de cluster do Serviço Kubernetes do Azure (AKS).

Este artigo mostra como criar uma conexão RDP com um nó AKS usando seus endereços IP privados.

Antes de começar

Este artigo pressupõe que você tenha um cluster AKS existente com um nó do Windows Server. Se você precisar de um cluster AKS, consulte o artigo sobre como criar um cluster AKS com um contêiner do Windows usando a CLI do Azure. Você precisa do nome de usuário e da senha do administrador do Windows para o nó do Windows Server que deseja solucionar. Você também precisa de um cliente RDP, como a Área de Trabalho Remota da Microsoft.

Se você precisar redefinir a senha, use az aks update para alterar a senha.

az aks update -g myResourceGroup -n myAKSCluster --windows-admin-password $WINDOWS_ADMIN_PASSWORD

Se você precisar redefinir o nome de usuário e a senha, consulte Redefinir os Serviços de Área de Trabalho Remota ou sua senha de administrador em uma VM do Windows .

Você também precisa da CLI do Azure versão 2.0.61 ou posterior instalada e configurada. Executar az --version para localizar a versão. Se precisar de instalar ou atualizar, veja Install Azure CLI (Instalar o Azure CLI).

Implantar uma máquina virtual na mesma sub-rede que o cluster

Os nós do Windows Server do cluster AKS não têm endereços IP acessíveis externamente. Para fazer uma conexão RDP, você pode implantar uma máquina virtual com um endereço IP acessível publicamente na mesma sub-rede que os nós do Windows Server.

O exemplo a seguir cria uma máquina virtual chamada myVM no grupo de recursos myResourceGroup .

Você precisa obter a ID de sub-rede usada pelo pool de nós do Windows Server e consultar para:

  • O grupo de recursos do nó do cluster
  • A rede virtual
  • O nome da sub-rede
  • O ID da sub-rede
CLUSTER_RG=$(az aks show -g myResourceGroup -n myAKSCluster --query nodeResourceGroup -o tsv)
VNET_NAME=$(az network vnet list -g $CLUSTER_RG --query [0].name -o tsv)
SUBNET_NAME=$(az network vnet subnet list -g $CLUSTER_RG --vnet-name $VNET_NAME --query [0].name -o tsv)
SUBNET_ID=$(az network vnet subnet show -g $CLUSTER_RG --vnet-name $VNET_NAME --name $SUBNET_NAME --query id -o tsv)

Agora que você já tem o SUBNET_ID, execute o seguinte comando na mesma janela do Azure Cloud Shell para criar a VM:

PUBLIC_IP_ADDRESS="myVMPublicIP"

az vm create \
    --resource-group myResourceGroup \
    --name myVM \
    --image win2019datacenter \
    --admin-username azureuser \
    --admin-password {admin-password} \
    --subnet $SUBNET_ID \
    --nic-delete-option delete \
    --os-disk-delete-option delete \
    --nsg "" \
    --public-ip-address $PUBLIC_IP_ADDRESS \
    --query publicIpAddress -o tsv

A saída de exemplo a seguir mostra que a VM foi criada com êxito e exibe o endereço IP público da máquina virtual.

13.62.204.18

Registre o endereço IP público da máquina virtual. Você usará esse endereço em uma etapa posterior.

Permitir acesso à máquina virtual

As sub-redes do pool de nós AKS são protegidas com NSGs (Grupos de Segurança de Rede) por padrão. Para obter acesso à máquina virtual, você terá que habilitar o acesso no NSG.

Nota

Os NSGs são controlados pelo serviço AKS. Qualquer alteração que você fizer no NSG será substituída a qualquer momento pelo plano de controle.

Primeiro, obtenha o grupo de recursos e o nome do NSG para adicionar a regra a:

CLUSTER_RG=$(az aks show -g myResourceGroup -n myAKSCluster --query nodeResourceGroup -o tsv)
NSG_NAME=$(az network nsg list -g $CLUSTER_RG --query [].name -o tsv)

Em seguida, crie a regra NSG:

az network nsg rule create \
 --name tempRDPAccess \
 --resource-group $CLUSTER_RG \
 --nsg-name $NSG_NAME \
 --priority 100 \
 --destination-port-range 3389 \
 --protocol Tcp \
 --description "Temporary RDP access to Windows nodes"

Obter o endereço do nó

Para gerenciar um cluster Kubernetes, use kubectl, o cliente de linha de comando do Kubernetes. Se você usa o Azure Cloud Shell, kubectl já está instalado. Para instalar kubectl localmente, use o comando az aks install-cli :

az aks install-cli

Para configurar kubectl para se ligar ao cluster do Kubernetes, utilize o comando az aks get-credentials. Este comando baixa credenciais e configura a CLI do Kubernetes para usá-las.

az aks get-credentials --resource-group myResourceGroup --name myAKSCluster

Liste o endereço IP interno dos nós do Windows Server usando o comando kubectl get :

kubectl get nodes -o wide

A saída de exemplo a seguir mostra os endereços IP internos de todos os nós no cluster, incluindo os nós do Windows Server.

$ kubectl get nodes -o wide
NAME                                STATUS   ROLES   AGE   VERSION   INTERNAL-IP   EXTERNAL-IP   OS-IMAGE                    KERNEL-VERSION      CONTAINER-RUNTIME
aks-nodepool1-42485177-vmss000000   Ready    agent   18h   v1.12.7   10.240.0.4    <none>        Ubuntu 16.04.6 LTS          4.15.0-1040-azure   docker://3.0.4
aksnpwin000000                      Ready    agent   13h   v1.12.7   10.240.0.67   <none>        Windows Server Datacenter   10.0.17763.437

Registre o endereço IP interno do nó do Windows Server que você deseja solucionar problemas. Você usará esse endereço em uma etapa posterior.

Conectar-se à máquina virtual e ao nó

Conecte-se ao endereço IP público da máquina virtual criada anteriormente usando um cliente RDP, como a Área de Trabalho Remota da Microsoft.

Image of connecting to the virtual machine using an RDP client

Depois de se conectar à sua máquina virtual, conecte-se ao endereço IP interno do nó do Windows Server que você deseja solucionar usando um cliente RDP de dentro de sua máquina virtual.

Image of connecting to the Windows Server node using an RDP client

Agora você está conectado ao nó do Windows Server.

Image of cmd window in the Windows Server node

Agora você pode executar qualquer comando de solução de problemas na janela cmd . Como os nós do Windows Server usam o Windows Server Core, não há uma GUI completa ou outras ferramentas de GUI quando você se conecta a um nó do Windows Server pelo RDP.

Remover acesso RDP

Quando terminar, saia da conexão RDP para o nó do Windows Server e saia da sessão RDP para a máquina virtual. Depois de sair de ambas as sessões RDP, exclua a máquina virtual com o comando az vm delete :

# Delete the virtual machine
az vm delete \
 --resource-group myResourceGroup \
 --name myVM

Exclua o IP público associado à máquina virtual:

az network public-ip delete \
 --resource-group myResourceGroup \
 --name $PUBLIC_IP_ADDRESS

Exclua a regra NSG:

CLUSTER_RG=$(az aks show -g myResourceGroup -n myAKSCluster --query nodeResourceGroup -o tsv)
NSG_NAME=$(az network nsg list -g $CLUSTER_RG --query [].name -o tsv)
az network nsg rule delete \
 --resource-group $CLUSTER_RG \
 --nsg-name $NSG_NAME \
 --name tempRDPAccess

Conecte-se com o Azure Bastion

Como alternativa, você pode usar o Azure Bastion para se conectar ao nó do Windows Server.

Implementar o Azure Bastion

Para implantar o Azure Bastion, você precisará encontrar a rede virtual à qual seu cluster AKS está conectado.

  1. No portal do Azure, vá para Redes virtuais. Selecione a rede virtual à qual seu cluster AKS está conectado.
  2. Em Configurações, selecione Bastião e, em seguida, selecione Implantar Bastion. Aguarde até que o processo esteja concluído antes de passar para a próxima etapa.

Conectar-se aos nós do Windows Server usando o Azure Bastion

Vá para o grupo de recursos de nó do cluster AKS. Execute o comando abaixo no Azure Cloud Shell para obter o nome do seu grupo de recursos de nó:

az aks show -n myAKSCluster -g myResourceGroup --query 'nodeResourceGroup' -o tsv
  1. Selecione Visão geral e selecione o conjunto de dimensionamento de máquina virtual do pool de nós do Windows.
  2. Em Definições, selecione Instâncias. Selecione um nó de servidor Windows ao qual você gostaria de se conectar.
  3. Em Suporte + resolução de problemas, selecione Bastion.
  4. Insira as credenciais que você configurou quando o cluster AKS foi criado. Selecione Ligar.

Agora você pode executar qualquer comando de solução de problemas na janela cmd . Como os nós do Windows Server usam o Windows Server Core, não há uma GUI completa ou outras ferramentas de GUI quando você se conecta a um nó do Windows Server pelo RDP.

Nota

Se fechar a janela do terminal, prima CTRL + ALT + End, selecione Gestor de Tarefas, selecione Mais detalhes, selecione Ficheiro, selecione Executar nova tarefa e introduza cmd.exe para abrir outro terminal. Você também pode sair e se reconectar com Bastion.

Remover o acesso Bastion

Quando terminar, saia da sessão Bastion e remova o recurso Bastion.

  1. No portal do Azure, vá para Bastion e selecione o recurso Bastion que você criou.
  2. Na parte superior da página, selecione Eliminar. Aguarde até que o processo esteja concluído antes de prosseguir para a próxima etapa.
  3. No portal do Azure, vá para Redes virtuais. Selecione a rede virtual à qual seu cluster AKS está conectado.
  4. Em Configurações, selecione Sub-rede e exclua a sub-rede AzureBastionSubnet que foi criada para o recurso Bastion.

Próximos passos

Se precisar de mais dados de solução de problemas, você pode exibir os logs do nó primário do Kubernetes ou o Azure Monitor.