Connettersi con RDP ai nodi Windows Server del servizio Azure Kubernetes per la manutenzione o la risoluzione dei problemi
Durante tutto il ciclo di vita del cluster del servizio Azure Kubernetes, potrebbe essere necessario accedere a un nodo Windows Server del servizio Azure Kubernetes. Questo accesso potrebbe servire per la manutenzione, la raccolta dei registri o altre operazioni di risoluzione dei problemi. È possibile accedere ai nodi di Windows Server del servizio Azure Kubernetes tramite RDP. Ai fini della sicurezza, i nodi del servizio Azure Kubernetes non sono esposti a Internet.
In alternativa, se ci si vuole connettere tramite SSH ai nodi di Windows Server del servizio Azure Kubernetes, è necessario accedere alla stessa coppia di chiavi usata durante la creazione del cluster. Seguire la procedura descritta in SSH nei nodi del cluster del servizio Azure Kubernetes.
Questo articolo illustra come creare una connessione RDP con un nodo del servizio Azure Kubernetes usando gli indirizzi IP privati.
Operazioni preliminari
Questo articolo presuppone che si disponga di un cluster del servizio Azure Kubernetes esistente con un nodo Windows Server. Se è necessario un cluster del servizio Azure Kubernetes, vedere l'articolo relativo alla creazione di un cluster del servizio Azure Kubernetes con un contenitore Windows usando l'interfaccia della riga di comando di Azure. È necessario il nome utente e la password dell'amministratore di Windows per il nodo Windows Server da risolvere. È anche necessario un client RDP, ad esempio Desktop remoto Microsoft.
Se è necessario reimpostare la password, usare az aks update
per modificare la password.
az aks update --resource-group myResourceGroup --name myAKSCluster --windows-admin-password $WINDOWS_ADMIN_PASSWORD
Se è necessario reimpostare il nome utente e la password, vedere Reimpostare Servizi Desktop remoto o la relativa password di amministratore in una macchina virtuale Windows .
È anche necessario che sia installata e configurata l'interfaccia della riga di comando di Azure 2.0.61 o versione successiva. Eseguire az --version
per trovare la versione. Se è necessario eseguire l'installazione o l'aggiornamento, vedere Installare l'interfaccia della riga di comando di Azure.
Distribuire una macchina virtuale nella stessa subnet del cluster
I nodi Windows Server del cluster del servizio Azure Kubernetes non hanno indirizzi IP accessibili dall'esterno. Per stabilire una connessione RDP, è possibile distribuire una macchina virtuale con un indirizzo IP accessibile pubblicamente nella stessa subnet dei nodi di Windows Server.
L'esempio seguente crea una macchina virtuale denominata myVM nel gruppo di risorse myResourceGroup.
È necessario ottenere l'ID subnet usato dal pool di nodi di Windows Server ed eseguire una query per:
- Gruppo di risorse del nodo del cluster
- Rete virtuale
- Nome della subnet
- ID della subnet
CLUSTER_RG=$(az aks show --resource-group myResourceGroup --name myAKSCluster --query nodeResourceGroup -o tsv)
VNET_NAME=$(az network vnet list --resource-group $CLUSTER_RG --query [0].name -o tsv)
SUBNET_NAME=$(az network vnet subnet list --resource-group $CLUSTER_RG --vnet-name $VNET_NAME --query [0].name -o tsv)
SUBNET_ID=$(az network vnet subnet show --resource-group $CLUSTER_RG --vnet-name $VNET_NAME --name $SUBNET_NAME --query id -o tsv)
Dopo aver creato il SUBNET_ID, eseguire il comando seguente nella stessa finestra di Azure Cloud Shell per creare la macchina virtuale:
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
L'output di esempio seguente mostra che la macchina virtuale è stata creata correttamente e visualizza l'indirizzo IP pubblico della macchina virtuale.
13.62.204.18
Registrare l'indirizzo IP pubblico della macchina virtuale. Questo indirizzo verrà usato in un passaggio successivo.
Consentire l'accesso alla macchina virtuale
Le subnet del pool di nodi del servizio Azure Kubernetes sono protette con gruppi di sicurezza di rete (NSG) per impostazione predefinita. Per ottenere l'accesso alla macchina virtuale, è necessario abilitare l'accesso nel gruppo di sicurezza di rete.
Nota
I gruppi di sicurezza di rete sono controllati dal servizio Servizio Azure Kubernetes. Qualsiasi modifica apportata al gruppo di sicurezza di rete verrà sovrascritta in qualsiasi momento dal piano di controllo.
Prima di tutto, ottenere il gruppo di risorse e il nome del gruppo di sicurezza di rete per aggiungere la regola a:
CLUSTER_RG=$(az aks show --resource-group myResourceGroup --name myAKSCluster --query nodeResourceGroup -o tsv)
NSG_NAME=$(az network nsg list --resource-group $CLUSTER_RG --query [].name -o tsv)
Creare quindi la regola del gruppo di sicurezza di rete:
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"
Ottenere l'indirizzo del nodo
Per gestire un cluster Kubernetes, usare kubectl, il client della riga di comando Kubernetes. Se si usa Azure Cloud Shell, kubectl
è già installato. Per installare kubectl
in locale, usare il comando az aks install-cli:
az aks install-cli
Per configurare kubectl
per la connessione al cluster Kubernetes, usare il comando az servizio Azure Kubernetes get-credentials. Questo comando scarica le credenziali e configura l'interfaccia della riga di comando di Kubernetes per usarli.
az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
Elencare l'indirizzo IP interno dei nodi di Windows Server usando il comando get kubectl:
kubectl get nodes -o wide
L'output di esempio seguente mostra gli indirizzi IP interni di tutti i nodi del cluster, inclusi i nodi di 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
Registrare l'indirizzo IP interno del nodo Windows Server che si vuole risolvere. Questo indirizzo verrà usato in un passaggio successivo.
Connettersi alla macchina virtuale e al nodo
Connettersi all'indirizzo IP pubblico della macchina virtuale creata in precedenza usando un client RDP, ad esempio Desktop remoto Microsoft.
Dopo aver eseguito la connessione alla macchina virtuale, connettersi all’indirizzo IP interno del nodo Windows Server che si vuole risolvere i problemi usando un client RDP dall'interno della macchina virtuale.
A questo punto si è connessi al nodo Windows Server.
È ora possibile eseguire qualsiasi comando per la risoluzione dei problemi nella finestra cmd. Poiché i nodi di Windows Server usano Windows Server Core, non è disponibile un'interfaccia utente grafica completa o altri strumenti GUI quando ci si connette a un nodo Windows Server tramite RDP.
Rimuovere l'accesso RDP
Al termine, chiudere la connessione RDP al nodo Windows Server e quindi chiudere la sessione RDP alla macchina virtuale. Dopo aver chiuso entrambe le sessioni RDP, eliminare la macchina virtuale con il comando az vm delete:
# Delete the virtual machine
az vm delete \
--resource-group myResourceGroup \
--name myVM
Eliminare l'indirizzo IP pubblico associato alla macchina virtuale:
az network public-ip delete \
--resource-group myResourceGroup \
--name $PUBLIC_IP_ADDRESS
Eliminare la regola del gruppo di sicurezza di rete:
CLUSTER_RG=$(az aks show --resource-group myResourceGroup --name myAKSCluster --query nodeResourceGroup -o tsv)
NSG_NAME=$(az network nsg list --resource-group $CLUSTER_RG --query [].name -o tsv)
az network nsg rule delete \
--resource-group $CLUSTER_RG \
--nsg-name $NSG_NAME \
--name tempRDPAccess
Connettersi con Azure Bastion
In alternativa, è possibile usare Azure Bastion per connettersi al nodo Windows Server.
Distribuire Azure Bastion
Per distribuire Azure Bastion, è necessario trovare la rete virtuale a cui è connesso il cluster del servizio Azure Kubernetes.
- Nel portale di Azure passare a Reti virtuali. Selezionare la rete virtuale a cui è connesso il cluster del servizio Azure Kubernetes.
- In Impostazioni, selezionare Bastione quindi selezionare Distribuire Bastion. Attendere il completamento del processo prima di passare al passaggio successivo.
Connettersi ai nodi di Windows Server usando Azure Bastion
Passare al gruppo di risorse del nodo del cluster del servizio Azure Kubernetes. Eseguire il comando seguente in Azure Cloud Shell per ottenere il nome del gruppo di risorse del nodo:
az aks show --name myAKSCluster --resource-group myResourceGroup --query 'nodeResourceGroup' -o tsv
- Selezionare Panoramica, poi selezionare il set di scalabilità di macchine virtuali del pool di nodi Windows.
- In Impostazioni selezionare Istanze. Selezionare un nodo server Windows a cui connettersi.
- In Supporto e risoluzione dei problemiselezionare Bastion.
- Immettere le credenziali configurate al momento della creazione del cluster del servizio Azure Kubernetes. Selezionare Connetti.
È ora possibile eseguire qualsiasi comando per la risoluzione dei problemi nella finestra cmd. Poiché i nodi di Windows Server usano Windows Server Core, non è disponibile un'interfaccia utente grafica completa o altri strumenti GUI quando ci si connette a un nodo Windows Server tramite RDP.
Nota
Se si chiude la finestra del terminale, premere CTRL + ALT + Fine, selezionare Gestione attività, selezionare Altri dettagli, selezionare File, selezionare Esegui nuova attivitàe immettere cmd.exe per aprire un altro terminale. È anche possibile disconnettersi e riconnettersi con Bastion.
Rimuovere l'accesso Bastion
Al termine, chiudere la sessione Bastion e rimuovere la risorsa Bastion.
- Nel portale di Azure passare a Bastion e selezionare la risorsa Bastion creata.
- Nella parte superiore della pagina selezionare Elimina. Attendere il completamento del processo prima di procedere al passaggio successivo.
- Nel portale di Azure passare a Reti virtuali. Selezionare la rete virtuale a cui è connesso il cluster del servizio Azure Kubernetes.
- In Impostazioni, selezionare Subneted eliminare la subnet AzureBastionSubnet creata per la risorsa Bastion.
Passaggi successivi
Se sono necessari altri dati per la risoluzione dei problemi, è possibile visualizzare i log dei nodi primari Kubernetes o Monitoraggio di Azure.
Azure Kubernetes Service