Herstellen einer RDP-Verbindung mit Windows Server-Knoten in Azure Kubernetes Service-Clustern (AKS) zur Wartung oder Problembehandlung

Während des Lebenszyklus des Azure Kubernetes Service-Clusters (AKS) müssen Sie möglicherweise auf einen AKS-Windows Server-Knoten zugreifen. Dieser Zugriff kann zur Wartung, Protokollsammlung oder für andere Vorgänge der Problembehandlung erforderlich sein. Sie können auf den AKS-Windows Server-Knoten über RDP zugreifen. Aus Sicherheitsgründen werden die AKS-Knoten nicht im Internet verfügbar gemacht.

Wenn Sie alternativ per SSH auf Ihre AKS Windows Server-Knoten zugreifen möchten, benötigen Sie Zugriff auf das gleiche Schlüsselpaar, das bei der Erstellung des Clusters verwendet wurde. Befolgen Sie die Schritte unter Zugreifen per SSH auf Azure Kubernetes Service-Clusterknoten (AKS)

In diesem Artikel wird gezeigt, wie Sie eine RDP-Verbindung mit einem AKS-Knoten über die privaten IP-Adressen erstellen.

Voraussetzungen

Es wird vorausgesetzt, dass Sie über einen AKS-Cluster mit einem Windows Server-Knoten verfügen. Wenn Sie einen AKS-Cluster benötigen, lesen Sie den Artikel Erstellen eines Windows Server-Containers in einem AKS-Cluster (Azure Kubernetes Service) mit der Azure-Befehlszeilenschnittstelle. Sie benötigen Windows-Administratorbenutzernamen und -kennwort für den Windows Server-Knoten, bei dem Sie ein Problem behandeln möchten. Sie benötigen auch einen RDP-Client wie z. B. Microsoft Remotedesktop.

Wenn Sie das Kennwort zurücksetzen müssen, verwenden Sie az aks update, um das Kennwort zu ändern.

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

Wenn Sie den Benutzernamen und das Kennwort zurücksetzen müssen, finden Sie weitere Informationen unter Zurücksetzen von Remotedesktopdienste oder dem zugehörigen Administratorkennwort auf einer Windows-VM.

Außerdem muss mindestens die Version 2.0.61 der Azure CLI installiert und konfiguriert sein. Führen Sie az --version aus, um die Version zu ermitteln. Informationen zum Durchführen einer Installation oder eines Upgrades finden Sie bei Bedarf unter Installieren der Azure CLI.

Bereitstellen eines virtuellen Computers in dem gleichen Subnetz, in dem sich Ihr Cluster befindet

Die Windows Server-Knoten Ihres AKS-Clusters haben keine IP-Adressen für externen Zugriff. Um eine RDP-Verbindung herzustellen, können Sie einen virtuellen Computer mit einer öffentlich zugänglichen IP-Adresse in dem gleichen Subnetz bereitstellen, in dem sich Ihre Windows Server-Knoten befinden.

Im folgenden Beispiel wird eine VM mit dem Namen myVM in der Ressourcengruppe myResourceGroup erstellt.

Sie müssen die von Ihrem Windows Server-Knotenpool verwendete Subnetz-ID ermitteln und Folgendes abfragen:

  • Die Knotenressourcengruppe des Clusters
  • Das virtuelle Netzwerk
  • Den Namen des Subnetzes
  • Die Subnetz-ID
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)

Nachdem Sie nun über SUBNET_ID verfügen, führen Sie den folgenden Befehl im gleichen Azure Cloud Shell-Fenster aus, um den virtuellen Computer zu erstellen:

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

Die folgende Beispielausgabe zeigt, dass der virtuelle Computer erfolgreich erstellt wurde, und zeigt die öffentliche IP-Adresse des virtuellen Computers an.

13.62.204.18

Notieren Sie sich die öffentliche IP-Adresse des virtuellen Computers. Sie verwenden diese Adresse in einem späteren Schritt.

Zulassen des Zugriffs auf den virtuellen Computer

Subnetze mit AKS-Knotenpools werden standardmäßig mit NSGs (Netzwerksicherheitsgruppen) geschützt. Um Zugriff auf den virtuellen Computer zu erhalten, müssen Sie den Zugriff in der NSG aktivieren.

Hinweis

Die NSGs werden vom AKS-Dienst gesteuert. Alle an der NSG vorgenommenen Änderungen werden jederzeit von der Steuerungsebene überschrieben.

Rufen Sie zunächst die Ressourcengruppe und den Namen der NSG ab, der die Regel hinzugefügt werden soll:

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)

Erstellen Sie dann die NSG-Regel:

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"

Abrufen der Knotenadresse

Verwenden Sie zum Verwalten eines Kubernetes-Clusters den Kubernetes-Befehlszeilenclient kubectl. Bei Verwendung von Azure Cloud Shell ist kubectl bereits installiert. Verwenden Sie für die lokale Installation von kubectl den Befehl az aks install-cli:

az aks install-cli

Mit dem Befehl az aks get-credentials können Sie kubectl für die Verbindungsherstellung mit Ihrem Kubernetes-Cluster konfigurieren. Mit diesem Befehl werden die Anmeldeinformationen heruntergeladen, und die Kubernetes-Befehlszeilenschnittstelle wird für deren Verwendung konfiguriert.

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

Listen Sie mithilfe des Befehls kubectl get die interne IP-Adresse der Windows Server-Knoten auf:

kubectl get nodes -o wide

Die folgende Beispielausgabe zeigt die internen IP-Adressen aller Knoten im Cluster – einschließlich der Windows Server-Knoten.

$ 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

Notieren Sie sich zur Problembehandlung die interne IP-Adresse des Windows Server-Knotens. Sie verwenden diese Adresse in einem späteren Schritt.

Herstellen einer Verbindung mit dem virtuellen Computer und Knoten

Stellen Sie mit einem RDP-Client wie z.B. Microsoft-Remotedesktop eine Verbindung mit der öffentlichen IP-Adresse des virtuellen Computers her, den Sie zuvor erstellt haben.

Image of connecting to the virtual machine using an RDP client

Nachdem Sie eine Verbindung zu Ihrer VM hergestellt haben, stellen Sie mithilfe eines RDP-Clients von Ihrer VM aus eine Verbindung zur internen IP-Adresse des Windows Server-Knotens her, für den Sie eine Fehlersuche durchführen möchten.

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

Sie sind jetzt mit Ihrem Windows Server-Knoten verbunden.

Image of cmd window in the Windows Server node

Sie können nun alle Befehle zur Problembehandlung im CMD-Fenster ausführen. Da Windows Server-Knoten Windows Server Core verwenden, gibt es keine vollständige GUI oder andere GUI-Tools, wenn Sie per RDP eine Verbindung mit einem Windows Server-Knoten herstellen.

Entfernen des RDP-Zugriffs

Abschließend beenden Sie die RDP-Verbindung mit dem Windows Server-Knoten und dann die RDP-Sitzung mit dem virtuellen Computer. Nachdem Sie beide RDP-Sitzungen beendet haben, löschen Sie den virtuellen Computer mit dem Befehl az vm delete:

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

Löschen Sie die öffentliche IP-Adresse, die dem virtuellen Computer zugeordnet ist:

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

Löschen Sie die NSG-Regel:

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

Verbinden mit Azure Bastion

Alternativ können Sie auch Azure Bastion verwenden, um eine Verbindung mit Ihrem Windows Server-Knoten herzustellen.

Bereitstellen von Azure Bastion

Um Azure Bastion bereitzustellen, müssen Sie das virtuelle Netzwerk finden, mit dem Ihr AKS-Cluster verbunden ist.

  1. Wechseln Sie im Azure-Portal zu Virtuelle Netzwerke. Wählen Sie das virtuelle Netzwerk aus, mit dem Ihr AKS-Cluster verbunden ist.
  2. Wählen Sie unter Einstellungen entsprechend Bastion und dann Bastion bereitstellen aus. Warten Sie, bis der Vorgang abgeschlossen ist, bevor Sie mit dem nächsten Schritt fortfahren.

Herstellen einer Verbindung mit Ihren Windows Server-Knoten mithilfe von Azure Bastion

Wechseln Sie zu der Knotenressourcengruppe des AKS-Clusters. Führen Sie den folgenden Befehl in der Azure Cloud Shell aus, um den Namen Ihrer Knotenressourcengruppe abzurufen:

az aks show -n myAKSCluster -g myResourceGroup --query 'nodeResourceGroup' -o tsv
  1. Wählen Sie Übersicht und dann Ihre VM-Skalierungsgruppe des Windows-Knotenpools aus.
  2. Klicken Sie unter Einstellungen auf Instanzen. Wählen Sie einen Windows-Serverknoten aus, mit dem Sie eine Verbindung herstellen möchten.
  3. Wählen Sie im Abschnitt Support und Problembehandlung die Option Bastion aus.
  4. Geben Sie die Anmeldeinformationen ein, die Sie festgelegt haben, als der AKS-Cluster erstellt wurde. Wählen Sie Verbinden.

Sie können nun alle Befehle zur Problembehandlung im CMD-Fenster ausführen. Da Windows Server-Knoten Windows Server Core verwenden, gibt es keine vollständige GUI oder andere GUI-Tools, wenn Sie per RDP eine Verbindung mit einem Windows Server-Knoten herstellen.

Hinweis

Wenn Sie das Terminalfenster schließen, drücken Sie STRG+ALT+ENDE, wählen Task-Manager, Weitere Details, Datei und Neue Aufgabe ausführen aus und geben cmd.exe ein, um ein anderes Terminal zu öffnen. Sie können sich auch abmelden und die Verbindung mit Bastion neu herstellen.

Entfernen des Zugriffs auf Bastion

Wenn Sie fertig sind, beenden Sie die Bastion-Sitzung und entfernen die Bastion-Ressource.

  1. Wechseln Sie im Azure-Portal zu Bastion, und wählen Sie die von Ihnen erstellte Bastion-Ressource aus.
  2. Wählen Sie oben auf der Seite Löschen aus. Warten Sie, bis der Vorgang abgeschlossen ist, bevor Sie mit dem nächsten Schritt fortfahren.
  3. Wechseln Sie im Azure-Portal zu Virtuelle Netzwerke. Wählen Sie das virtuelle Netzwerk aus, mit dem Ihr AKS-Cluster verbunden ist.
  4. Wählen Sie unter Einstellungen die Option Subnetz aus, und löschen Sie das Subnetz AzureBastionSubnet, das für die Bastion-Ressource erstellt wurde.

Nächste Schritte

Wenn Sie weitere Problembehandlungsdaten benötigen, können Sie die primären Kubernetes-Knotenprotokolle anzeigen oder Azure Monitor verwenden.