Problemen met knooppunten oplossen die niet gereed zijn vanwege CSE-fouten
Dit artikel helpt u bij het oplossen van problemen met scenario's waarin een Microsoft Azure Kubernetes Service (AKS)-cluster zich niet in de Succeeded
status bevindt en een AKS-knooppunt niet gereed is binnen een knooppuntgroep vanwege cse-fouten (Custom Script Extension).
Vereisten
Symptomen
Vanwege CSE-fouten is een AKS-clusterknooppunt niet gereed binnen een knooppuntgroep en heeft het AKS-cluster niet de Succeeded
status.
Oorzaak
De implementatie van de knooppuntextensie mislukt en retourneert meer dan één foutcode wanneer u de kubelet en andere onderdelen inricht. Dit is de meest voorkomende oorzaak van fouten. Voer de volgende stappen uit om te controleren of de implementatie van de knooppuntextensie mislukt wanneer u de kubelet inricht:
Als u meer inzicht wilt krijgen in de huidige fout in het cluster, voert u de opdrachten az aks show en az resource update uit om foutopsporing in te stellen:
clusterResourceId=$(az aks show \ --resource-group <resource-group-name> --name <cluster-name> --output tsv --query id) az resource update --debug --verbose --ids $clusterResourceId
Controleer de uitvoer van foutopsporing en de foutberichten die u van de
az resource update
opdracht hebt ontvangen op basis van de foutenlijst in het uitvoerbare bestand van de CSE-helper op GitHub.
Als een van de fouten betrekking heeft op de CSE-implementatie van de kubelet, hebt u gecontroleerd of het scenario dat hier wordt beschreven, de oorzaak is van de fout Knooppunt niet gereed.
Over het algemeen identificeren afsluitcodes het specifieke probleem dat de fout veroorzaakt. U ziet bijvoorbeeld berichten als 'Kan niet communiceren met API-server' of 'Kan geen verbinding maken met internet'. Of de afsluitcodes kunnen u waarschuwen voor time-outs van API-netwerk of een knooppuntfout die moet worden vervangen.
Oplossing 1: Controleer of uw aangepaste DNS-server correct is geconfigureerd
Stel uw aangepaste DNS-server (Domain Name System) in zodat deze naamomzetting correct kan uitvoeren. Configureer de server om te voldoen aan de volgende vereisten:
Als u aangepaste DNS-servers gebruikt, controleert u of de servers in orde zijn en bereikbaar zijn via het netwerk.
Zorg ervoor dat aangepaste DNS-servers de vereiste voorwaardelijke doorstuurservers hebben naar het IP-adres van Azure DNS (of de doorstuurserver naar dat adres).
Zorg ervoor dat uw privé-AKS DNS-zone is gekoppeld aan uw aangepaste virtuele DNS-netwerken als deze worden gehost in Azure.
Gebruik het IP-adres van Azure DNS niet met de IP-adressen van uw aangepaste DNS-server. Dit wordt afgeraden.
Vermijd het gebruik van IP-adressen in plaats van de DNS-server in DNS-instellingen. U kunt Azure CLI-opdrachten gebruiken om te controleren op deze situatie op een virtuele machine (VM) schaalset of beschikbaarheidsset.
Gebruik voor VM-schaalsetknooppunten de opdracht az vmss run-command invoke :
az vmss run-command invoke \ --resource-group <resource-group-name> \ --name <vm-scale-set-name> \ --command-id RunShellScript \ --instance-id 0 \ --output tsv \ --query "value[0].message" \ --scripts "telnet <dns-ip-address> 53" az vmss run-command invoke \ --resource-group <resource-group-name> \ --name <vm-scale-set-name> \ --instance-id 0 \ --command-id RunShellScript \ --output tsv \ --query "value[0].message" \ --scripts "nslookup <api-fqdn> <dns-ip-address>"
Gebruik voor VM-beschikbaarheidssetknooppunten de opdracht az vm run-command invoke :
az vm run-command invoke \ --resource-group <resource-group-name> \ --name <vm-availability-set-name> \ --command-id RunShellScript \ --output tsv \ --query "value[0].message" \ --scripts "telnet <dns-ip-address> 53" az vm run-command invoke \ --resource-group <resource-group-name> \ --name <vm-availability-set-name> \ --command-id RunShellScript \ --output tsv \ --query "value[0].message" \ --scripts "nslookup <api-fqdn> <dns-ip-address>"
Zie Naamomzetting voor resources in virtuele Azure-netwerken en Hub en spoke met aangepaste DNS voor meer informatie.
Oplossing 2: Time-outs van API-netwerk oplossen
Zorg ervoor dat de API-server kan worden bereikt en niet onderhevig is aan vertragingen. Ga hiervoor als volgt te werk:
Controleer het AKS-subnet om te zien of de toegewezen netwerkbeveiligingsgroep (NSG) de uitgaande verkeerspoort 443 naar de API-server blokkeert.
Controleer het knooppunt zelf om te zien of het knooppunt een andere NSG heeft die het verkeer blokkeert.
Controleer het AKS-subnet op een toegewezen routetabel. Als een routetabel een virtueel netwerkapparaat (NVA) of een firewall heeft, controleert u of poort 443 beschikbaar is voor uitgaand verkeer. Zie Uitgaand verkeer voor clusterknooppunten in AKS beheren voor meer informatie.
Als de DNS namen met succes omzet en de API bereikbaar is, maar het knooppunt CSE is mislukt vanwege een API-time-out, voert u de juiste actie uit, zoals wordt weergegeven in de volgende tabel.
Type instellen Actie VM-beschikbaarheidsset Verwijder het knooppunt uit de Azure Portal en de AKS-API met behulp van de opdracht kubectl delete node en schaal het cluster vervolgens opnieuw omhoog. VM-schaalset Maak een nieuwe installatiekopie van het knooppunt of verwijder het knooppunt en schaal het cluster vervolgens opnieuw omhoog. Als de aanvragen worden beperkt door de AKS API-server, voert u een upgrade uit naar een hogere servicelaag. Zie AKS Uptime SLA voor meer informatie.
Meer informatie
Feedback
https://aka.ms/ContentUserFeedback.
Binnenkort beschikbaar: In de loop van 2024 zullen we GitHub-problemen geleidelijk uitfaseren als het feedbackmechanisme voor inhoud en deze vervangen door een nieuw feedbacksysteem. Zie voor meer informatie:Feedback verzenden en weergeven voor