Połączenie za pomocą protokołu RDP do klastra usługi Azure Kubernetes Service (AKS) węzłów systemu Windows Server na potrzeby konserwacji lub rozwiązywania problemów

W całym cyklu życia klastra usługi Azure Kubernetes Service (AKS) może być konieczne uzyskanie dostępu do węzła systemu Windows Server usługi AKS. Ten dostęp może dotyczyć konserwacji, zbierania dzienników lub innych operacji rozwiązywania problemów. Dostęp do węzłów systemu Windows Server usługi AKS można uzyskać przy użyciu protokołu RDP. W celach bezpieczeństwa węzły usługi AKS nie są uwidocznione w Internecie.

Alternatywnie, jeśli chcesz połączyć się za pomocą protokołu SSH z węzłami systemu Windows Server usługi AKS, musisz uzyskać dostęp do tej samej pary kluczy, która została użyta podczas tworzenia klastra. Wykonaj kroki opisane w artykule SSH w węzłach klastra usługi Azure Kubernetes Service (AKS).

W tym artykule pokazano, jak utworzyć połączenie RDP z węzłem usługi AKS przy użyciu ich prywatnych adresów IP.

Zanim rozpoczniesz

W tym artykule założono, że masz istniejący klaster usługi AKS z węzłem systemu Windows Server. Jeśli potrzebujesz klastra usługi AKS, zapoznaj się z artykułem dotyczącym tworzenia klastra usługi AKS z kontenerem systemu Windows przy użyciu interfejsu wiersza polecenia platformy Azure. Potrzebujesz nazwy użytkownika i hasła administratora systemu Windows dla węzła systemu Windows Server, który chcesz rozwiązać. Potrzebny jest również klient RDP, taki jak Pulpit zdalny Microsoft.

Jeśli musisz zresetować hasło, użyj polecenia az aks update , aby zmienić hasło.

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

Jeśli musisz zresetować nazwę użytkownika i hasło, zobacz Resetowanie usług pulpitu zdalnego lub jego hasła administratora na maszynie wirtualnej z systemem Windows.

Musisz również zainstalować i skonfigurować interfejs wiersza polecenia platformy Azure w wersji 2.0.61 lub nowszej. Uruchom polecenie az --version, aby dowiedzieć się, jaka wersja jest używana. Jeśli konieczna będzie instalacja lub uaktualnienie, zobacz Instalowanie interfejsu wiersza polecenia platformy Azure.

Wdrażanie maszyny wirtualnej w tej samej podsieci co klaster

Węzły systemu Windows Server klastra usługi AKS nie mają zewnętrznych adresów IP. Aby nawiązać połączenie RDP, możesz wdrożyć maszynę wirtualną z publicznie dostępnym adresem IP w tej samej podsieci co węzły systemu Windows Server.

Poniższy przykład tworzy maszynę wirtualną o nazwie myVM w grupie zasobów myResourceGroup .

Musisz uzyskać identyfikator podsieci używany przez pulę węzłów systemu Windows Server i wykonać zapytanie dotyczące:

  • Grupa zasobów węzła klastra
  • Sieć wirtualna
  • Nazwa podsieci
  • Identyfikator podsieci
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)

Teraz, gdy masz SUBNET_ID, uruchom następujące polecenie w tym samym oknie usługi Azure Cloud Shell, aby utworzyć maszynę wirtualną:

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

Poniższe przykładowe dane wyjściowe pokazują, że maszyna wirtualna została pomyślnie utworzona i wyświetla publiczny adres IP maszyny wirtualnej.

13.62.204.18

Zarejestruj publiczny adres IP maszyny wirtualnej. Użyjesz tego adresu w późniejszym kroku.

Zezwalaj na dostęp do maszyny wirtualnej

Podsieci puli węzłów usługi AKS są domyślnie chronione za pomocą sieciowych grup zabezpieczeń (sieciowych grup zabezpieczeń). Aby uzyskać dostęp do maszyny wirtualnej, musisz włączyć dostęp w sieciowej grupie zabezpieczeń.

Uwaga

Sieciowe grupy zabezpieczeń są kontrolowane przez usługę AKS. Wszelkie zmiany w sieciowej grupie zabezpieczeń zostaną zastąpione w dowolnym momencie przez płaszczyznę sterowania.

Najpierw pobierz grupę zasobów i nazwę sieciowej grupy zabezpieczeń, aby dodać regułę do:

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)

Następnie utwórz regułę sieciowej grupy zabezpieczeń:

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"

Uzyskiwanie adresu węzła

Aby zarządzać klastrem Kubernetes, należy użyć klienta wiersza polecenia usługi Kubernetes — narzędzia kubectl. Jeśli korzystasz z usługi Azure Cloud Shell, narzędzie kubectl jest już zainstalowane. Aby zainstalować narzędzie kubectl lokalnie, użyj polecenia az aks install-cli:

az aks install-cli

Aby skonfigurować narzędzie kubectl w celu nawiązania połączenia z klastrem Kubernetes, użyj polecenia az aks get-credentials. To polecenie powoduje pobranie poświadczeń i zastosowanie ich w konfiguracji interfejsu wiersza polecenia Kubernetes.

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

Wyświetl wewnętrzny adres IP węzłów systemu Windows Server przy użyciu polecenia kubectl get :

kubectl get nodes -o wide

Poniższe przykładowe dane wyjściowe przedstawiają wewnętrzne adresy IP wszystkich węzłów w klastrze, w tym węzły systemu 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

Zarejestruj wewnętrzny adres IP węzła systemu Windows Server, który chcesz rozwiązać. Użyjesz tego adresu w późniejszym kroku.

Połączenie do maszyny wirtualnej i węzła

Połączenie do publicznego adresu IP utworzonej wcześniej maszyny wirtualnej przy użyciu klienta RDP, takiego jak Pulpit zdalny Microsoft.

Image of connecting to the virtual machine using an RDP client

Po nawiązaniu połączenia z maszyną wirtualną połącz się z wewnętrznym adresem IP węzła systemu Windows Server, który chcesz rozwiązać problem przy użyciu klienta RDP z poziomu maszyny wirtualnej.

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

Masz teraz połączenie z węzłem systemu Windows Server.

Image of cmd window in the Windows Server node

Teraz możesz uruchomić dowolne polecenia rozwiązywania problemów w oknie narzędzia cmd . Ponieważ węzły systemu Windows Server używają systemu Windows Server Core, nie ma pełnego graficznego interfejsu użytkownika ani innych narzędzi gui podczas nawiązywania połączenia z węzłem systemu Windows Server za pośrednictwem protokołu RDP.

Usuwanie dostępu RDP

Po zakończeniu zamknij połączenie RDP z węzłem systemu Windows Server, a następnie zamknij sesję protokołu RDP z maszyną wirtualną. Po zakończeniu obu sesji protokołu RDP usuń maszynę wirtualną za pomocą polecenia az vm delete :

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

Usuń publiczny adres IP skojarzony z maszyną wirtualną:

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

Usuń regułę sieciowej grupy zabezpieczeń:

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

Połączenie z usługą Azure Bastion

Alternatywnie możesz użyć usługi Azure Bastion do nawiązania połączenia z węzłem systemu Windows Server.

Wdrażanie usługi Azure Bastion

Aby wdrożyć usługę Azure Bastion, musisz znaleźć sieć wirtualną, z którą jest połączony klaster usługi AKS.

  1. W witrynie Azure Portal przejdź do pozycji Sieci wirtualne. Wybierz sieć wirtualną, z z która jest połączony klaster usługi AKS.
  2. W obszarze Ustawienia wybierz pozycję Bastion, a następnie wybierz pozycję Wdróż usługę Bastion. Poczekaj na zakończenie procesu przed przejściem do następnego kroku.

Połączenie do węzłów systemu Windows Server przy użyciu usługi Azure Bastion

Przejdź do grupy zasobów węzła klastra usługi AKS. Uruchom poniższe polecenie w usłudze Azure Cloud Shell, aby uzyskać nazwę grupy zasobów węzła:

az aks show -n myAKSCluster -g myResourceGroup --query 'nodeResourceGroup' -o tsv
  1. Wybierz pozycję Przegląd i wybierz zestaw skalowania maszyn wirtualnych puli węzłów systemu Windows.
  2. W obszarze Ustawienia wybierz pozycję Wystąpienia. Wybierz węzeł serwera z systemem Windows, z którym chcesz nawiązać połączenie.
  3. W obszarze Pomoc techniczna i rozwiązywanie problemów wybierz pozycję Bastion.
  4. Wprowadź poświadczenia skonfigurowane podczas tworzenia klastra usługi AKS. Wybierz pozycję Połącz.

Teraz możesz uruchomić dowolne polecenia rozwiązywania problemów w oknie narzędzia cmd . Ponieważ węzły systemu Windows Server używają systemu Windows Server Core, nie ma pełnego graficznego interfejsu użytkownika ani innych narzędzi gui podczas nawiązywania połączenia z węzłem systemu Windows Server za pośrednictwem protokołu RDP.

Uwaga

Jeśli zamkniesz okno terminalu, naciśnij klawisze CTRL + ALT + End, wybierz pozycję Menedżer zadań, wybierz pozycję Więcej szczegółów, wybierz pozycję Plik, wybierz pozycję Uruchom nowe zadanie, a następnie wprowadź polecenie cmd.exe, aby otworzyć inny terminal. Możesz również wylogować się i ponownie nawiązać połączenie z usługą Bastion.

Usuwanie dostępu do usługi Bastion

Po zakończeniu zamknij sesję usługi Bastion i usuń zasób usługi Bastion.

  1. W witrynie Azure Portal przejdź do usługi Bastion i wybierz utworzony zasób usługi Bastion.
  2. W górnej części strony wybierz pozycję Usuń. Przed przejściem do następnego kroku poczekaj na zakończenie procesu.
  3. W witrynie Azure Portal przejdź do pozycji Sieci wirtualne. Wybierz sieć wirtualną, z którą jest połączony klaster usługi AKS.
  4. W obszarze Ustawienia wybierz pozycję Podsieć i usuń podsieć AzureBastionSubnet utworzoną dla zasobu usługi Bastion.

Następne kroki

Jeśli potrzebujesz więcej danych rozwiązywania problemów, możesz wyświetlić podstawowe dzienniki węzłów platformy Kubernetes lub usługę Azure Monitor.