Verbinding maken met AKS-clusterknooppunten (Azure Kubernetes Service) voor onderhoud of probleemoplossing
Gedurende de levenscyclus van uw AKS-cluster (Azure Kubernetes Service) moet u uiteindelijk rechtstreeks toegang krijgen tot een AKS-knooppunt. Deze toegang kan betrekking hebben op onderhouds-, logboekverzamelings- of probleemoplossingsbewerkingen.
U opent een knooppunt via verificatie. Welke methoden variëren, afhankelijk van uw knooppuntbesturingssystemen en de verbindingsmethode. U verifieert veilig met AKS Linux- en Windows-knooppunten via twee opties die in dit artikel worden besproken. De ene vereist dat u Kubernetes-API-toegang hebt en de andere via de ARM-API van AKS, die directe privé-IP-gegevens biedt. Om veiligheidsredenen worden AKS-knooppunten niet blootgesteld aan internet. Als u in plaats daarvan rechtstreeks verbinding wilt maken met AKS-knooppunten, moet u het privé-IP-adres van de host gebruiken kubectl debug
.
Toegang tot knooppunten met behulp van de Kubernetes-API
Voor deze methode is het gebruik van kubectl debug
de opdracht vereist.
Voordat u begint
Deze handleiding laat zien hoe u een verbinding maakt met een AKS-knooppunt en hoe u de SSH-sleutel van uw AKS-cluster bijwerkt. Als u de stappen wilt volgen, moet u Azure CLI gebruiken die ondersteuning biedt voor versie 2.0.64 of hoger. Voer deze opdracht uit az --version
om de versie te controleren. Als u Azure CLI 2.0 wilt installeren of upgraden, raadpleegt u Azure CLI 2.0 installeren.
Voer deze stappen uit als u geen SSH-sleutel hebt. Maak een SSH-sleutel, afhankelijk van de installatiekopieën van het knooppuntbesturingssystemen, voor macOS en Linux of Windows. Zorg ervoor dat u het sleutelpaar opslaat in de OpenSSH-indeling, zodat u niet-ondersteunde indelingen zoals .ppk
. Raadpleeg vervolgens SSH-configuratie beheren om de sleutel aan uw cluster toe te voegen.
Linux en macOS
Linux- en macOS-gebruikers hebben toegang tot hun knooppunt met behulp van kubectl debug
of hun privé-IP-adres. Windows-gebruikers moeten doorgaan naar de sectie Windows Server-proxy voor een tijdelijke oplossing voor SSH via proxy.
Verbinding maken met kubectl-foutopsporing
Als u een interactieve shellverbinding wilt maken, gebruikt u de kubectl debug
opdracht om een bevoegde container op uw knooppunt uit te voeren.
Gebruik de
kubectl get nodes
opdracht om uw knooppunten weer te geven:kubectl get nodes -o wide
Voorbeelduitvoer:
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE aks-nodepool1-37663765-vmss000000 Ready agent 166m v1.25.6 10.224.0.33 <none> Ubuntu 22.04.2 LTS aks-nodepool1-37663765-vmss000001 Ready agent 166m v1.25.6 10.224.0.4 <none> Ubuntu 22.04.2 LTS aksnpwin000000 Ready agent 160m v1.25.6 10.224.0.62 <none> Windows Server 2022 Datacenter
Gebruik de
kubectl debug
opdracht om een bevoegde container op uw knooppunt te starten en er verbinding mee te maken.kubectl debug node/aks-nodepool1-37663765-vmss000000 -it --image=mcr.microsoft.com/cbl-mariner/busybox:2.0
Voorbeelduitvoer:
Creating debugging pod node-debugger-aks-nodepool1-37663765-vmss000000-bkmmx with container debugger on node aks-nodepool1-37663765-vmss000000. If you don't see a command prompt, try pressing enter. root@aks-nodepool1-37663765-vmss000000:/#
U hebt nu toegang tot het knooppunt via een bevoegde container als een foutopsporingspod.
Notitie
U kunt communiceren met de knooppuntsessie door deze uit te voeren
chroot /host
vanuit de bevoegde container.
Kubectl-foutopsporingsmodus afsluiten
Wanneer u klaar bent met uw knooppunt, voert u de opdracht in om de exit
interactieve shell-sessie te beëindigen. Nadat de interactieve containersessie is gesloten, verwijdert u de foutopsporingspod waarmee kubectl delete pod
wordt gebruikt.
kubectl delete pod node-debugger-aks-nodepool1-37663765-vmss000000-bkmmx
Windows Server-proxyverbinding voor SSH
Volg deze stappen als tijdelijke oplossing om verbinding te maken met SSH op een Windows Server-knooppunt.
Een proxyserver maken
Op dit moment kunt u geen rechtstreeks verbinding maken met een Windows Server-knooppunt met behulp van kubectl debug
. In plaats daarvan moet u eerst verbinding maken met een ander knooppunt in het cluster en kubectl
vervolgens verbinding maken met het Windows Server-knooppunt vanaf dat knooppunt met behulp van SSH.
Gebruik de kubectl debug
opdracht om verbinding te maken met een ander knooppunt in het cluster. Volg de bovenstaande stappen in de sectie kubectl voor meer informatie. Maak een SSH-verbinding met het Windows Server-knooppunt vanaf een ander knooppunt met behulp van de SSH-sleutels die zijn opgegeven bij het maken van het AKS-cluster en het interne IP-adres van het Windows Server-knooppunt.
Belangrijk
De volgende stappen voor het maken van de SSH-verbinding met het Windows Server-knooppunt vanaf een ander knooppunt kunnen alleen worden gebruikt als u uw AKS-cluster hebt gemaakt met behulp van de Azure CLI met de --generate-ssh-keys
parameter. Als u in plaats daarvan uw eigen SSH-sleutels wilt gebruiken, kunt u de az aks update
SSH-sleutels beheren op een bestaand AKS-cluster. Zie SSH-knooppunttoegang beheren voor meer informatie.
Notitie
Als uw Linux-proxyknooppunt niet reageert, gebruikt u de Azure Bastion-methode om verbinding te maken.
Gebruik de
kubectl debug
opdracht om een bevoegde container op uw proxyknooppunt (Linux) te starten en er verbinding mee te maken.kubectl debug node/aks-nodepool1-37663765-vmss000000 -it --image=mcr.microsoft.com/cbl-mariner/busybox:2.0
Voorbeelduitvoer:
Creating debugging pod node-debugger-aks-nodepool1-37663765-vmss000000-bkmmx with container debugger on node aks-nodepool1-37663765-vmss000000. If you don't see a command prompt, try pressing enter. root@aks-nodepool1-37663765-vmss000000:/#
Open een nieuw terminalvenster en gebruik de
kubectl get pods
opdracht om de naam van de pod opkubectl debug
te halen.kubectl get pods
Voorbeelduitvoer:
NAME READY STATUS RESTARTS AGE node-debugger-aks-nodepool1-37663765-vmss000000-bkmmx 1/1 Running 0 21s
In de voorbeelduitvoer is node-debugger-aks-nodepool1-37663765-vmss000000-bkmmx de naam van de pod die is gestart.
kubectl debug
Gebruik de
kubectl port-forward
opdracht om een verbinding met de geïmplementeerde pod te openen:kubectl port-forward node-debugger-aks-nodepool1-37663765-vmss000000-bkmmx 2022:22
Voorbeelduitvoer:
Forwarding from 127.0.0.1:2022 -> 22 Forwarding from [::1]:2022 -> 22
In het vorige voorbeeld begint het doorsturen van netwerkverkeer vanaf de poort
2022
op uw ontwikkelcomputer naar de poort22
op de geïmplementeerde pod. Wanneer ukubectl port-forward
een verbinding opent en netwerkverkeer doorstuurt, blijft de verbinding geopend totdat u dekubectl port-forward
opdracht stopt.Open een nieuwe terminal en voer de opdracht
kubectl get nodes
uit om het interne IP-adres van het Windows Server-knooppunt weer te geven:kubectl get no -o custom-columns=NAME:metadata.name,'INTERNAL_IP:status.addresses[?(@.type == \"InternalIP\")].address'
Voorbeelduitvoer:
NAME INTERNAL_IP aks-nodepool1-19409214-vmss000003 10.224.0.8
In het vorige voorbeeld is 10.224.0.62 het interne IP-adres van het Windows Server-knooppunt.
Maak een SSH-verbinding met het Windows Server-knooppunt met behulp van het interne IP-adres en maak verbinding met de poort
22
via de poort2022
op uw ontwikkelcomputer. De standaardgebruikersnaam voor AKS-knooppunten is azureuser. Accepteer de prompt om door te gaan met de verbinding. Vervolgens krijgt u de bash-prompt van uw Windows Server-knooppunt:ssh -o 'ProxyCommand ssh -p 2022 -W %h:%p azureuser@127.0.0.1' azureuser@10.224.0.62
Voorbeelduitvoer:
The authenticity of host '10.224.0.62 (10.224.0.62)' can't be established. ECDSA key fingerprint is SHA256:1234567890abcdefghijklmnopqrstuvwxyzABCDEFG. Are you sure you want to continue connecting (yes/no)? yes
Notitie
Als u liever wachtwoordverificatie gebruikt, neemt u de parameter
-o PreferredAuthentications=password
op. Voorbeeld:ssh -o 'ProxyCommand ssh -p 2022 -W %h:%p azureuser@127.0.0.1' -o PreferredAuthentications=password azureuser@10.224.0.62
Hostprocescontainer gebruiken voor toegang tot Windows-knooppunt
Maak
hostprocess.yaml
met de volgende inhoud en vervang dezeAKSWINDOWSNODENAME
door de naam van het AKS Windows-knooppunt.apiVersion: v1 kind: Pod metadata: labels: pod: hpc name: hpc spec: securityContext: windowsOptions: hostProcess: true runAsUserName: "NT AUTHORITY\\SYSTEM" hostNetwork: true containers: - name: hpc image: mcr.microsoft.com/windows/servercore:ltsc2022 # Use servercore:1809 for WS2019 command: - powershell.exe - -Command - "Start-Sleep 2147483" imagePullPolicy: IfNotPresent nodeSelector: kubernetes.io/os: windows kubernetes.io/hostname: AKSWINDOWSNODENAME tolerations: - effect: NoSchedule key: node.kubernetes.io/unschedulable operator: Exists - effect: NoSchedule key: node.kubernetes.io/network-unavailable operator: Exists - effect: NoExecute key: node.kubernetes.io/unreachable operator: Exists
Voer deze opdracht uit
kubectl apply -f hostprocess.yaml
om de Windows-hostprocescontainer (HPC) in het opgegeven Windows-knooppunt te implementeren.Gebruik
kubectl exec -it [HPC-POD-NAME] -- powershell
.U kunt PowerShell-opdrachten uitvoeren in de HPC-container om toegang te krijgen tot het Windows-knooppunt.
Notitie
U moet overschakelen naar C:\
de hoofdmap in de HPC-container om toegang te krijgen tot de bestanden in het Windows-knooppunt.
SSH met Behulp van Azure Bastion voor Windows
Als uw Linux-proxyknooppunt niet bereikbaar is, is het gebruik van Azure Bastion als proxy een alternatief. Voor deze methode moet u een Azure Bastion-host instellen voor het virtuele netwerk waarin het cluster zich bevindt. Zie Verbinding maken met Azure Bastion voor meer informatie.
SSH met behulp van privé-IP's van de AKS-API (preview)
Als u geen toegang hebt tot de Kubernetes-API, kunt u toegang krijgen tot eigenschappen zoals Node IP
en Node Name
via de API van de AKS-agentgroep (preview), (beschikbaar in preview-versies 07-02-2023
of hoger) om verbinding te maken met AKS-knooppunten.
Belangrijk
AKS preview-functies zijn beschikbaar op selfservice, opt-in basis. Previews worden geleverd 'zoals is' en 'als beschikbaar' en ze worden uitgesloten van de serviceovereenkomsten en beperkte garantie. AKS-previews worden gedeeltelijk gedekt door klantondersteuning op basis van best effort. Daarom zijn deze functies niet bedoeld voor productiegebruik. Zie de volgende ondersteuningsartikelen voor meer informatie:
Een interactieve shellverbinding met een knooppunt maken met behulp van het IP-adres
Voor het gemak worden AKS-knooppunten weergegeven in het virtuele netwerk van het cluster via privé-IP-adressen. U moet zich echter in het virtuele netwerk van het cluster bevinden naar SSH in het knooppunt. Als u nog geen omgeving hebt geconfigureerd, kunt u Azure Bastion gebruiken om een proxy tot stand te brengen van waaruit u SSH naar clusterknooppunten kunt uitvoeren. Zorg ervoor dat Azure Bastion is geïmplementeerd in hetzelfde virtuele netwerk als het cluster.
Verkrijg privé-IP-adressen met behulp van de
az aks machine list
opdracht, gericht op alle VM's in een specifieke knooppuntgroep met de--nodepool-name
vlag.az aks machine list --resource-group myResourceGroup --cluster-name myAKSCluster --nodepool-name nodepool1 -o table
In de volgende voorbeelduitvoer ziet u de interne IP-adressen van alle knooppunten in de knooppuntgroep:
Name Ip Family --------------------------------- ----------- ----------- aks-nodepool1-33555069-vmss000000 10.224.0.5 IPv4 aks-nodepool1-33555069-vmss000001 10.224.0.6 IPv4 aks-nodepool1-33555069-vmss000002 10.224.0.4 IPv4
Als u een specifiek knooppunt in de knooppuntgroep wilt instellen, gebruikt u de
--machine-name
vlag:az aks machine show --cluster-name myAKScluster --nodepool-name nodepool1 -g myResourceGroup --machine-name aks-nodepool1-33555069-vmss000000 -o table
In de volgende voorbeelduitvoer ziet u het interne IP-adres van alle opgegeven knooppunten:
Name Ip Family --------------------------------- ----------- ----------- aks-nodepool1-33555069-vmss000000 10.224.0.5 IPv4
SSH naar het knooppunt met behulp van het privé-IP-adres dat u in de vorige stap hebt verkregen. Deze stap is alleen van toepassing op Linux-machines. Zie Verbinding maken met Azure Bastion voor Windows-computers.
ssh -i /path/to/private_key.pem azureuser@10.224.0.33
Volgende stappen
Als u meer gegevens voor probleemoplossing nodig hebt, kunt u de kubelet-logboeken bekijken of de Logboeken van het Kubernetes-besturingsvlak bekijken.
Zie SSH-configuratie beheren voor meer informatie over het beheren van uw SSH-sleutels.
Azure Kubernetes Service