Problemen met verbindingen met eindpunten buiten het virtuele netwerk oplossen
In dit artikel wordt beschreven hoe u problemen met verbindingen met eindpunten buiten het virtuele netwerk (dat wil gezegd via het openbare internet) kunt oplossen vanuit een AKS-cluster (Microsoft Azure Kubernetes Service).
Voorwaarden
Het hulpprogramma client-URL (curl).
Het Kubernetes kubectl-hulpprogramma of een vergelijkbaar hulpprogramma om verbinding te maken met het cluster. Als u kubectl wilt installeren met behulp van Azure CLI, voert u de opdracht az aks install-cli uit.
Controlelijst voor probleemoplossing
Is het probleem permanent?
Stap 1: Basisproblemen oplossen
Zorg ervoor dat u verbinding kunt maken met openbare eindpunten op internet. Zie Basisproblemen met uitgaande AKS-clusterverbindingen oplossen voor instructies.
Stap 2: het uitgaande type voor het AKS-cluster bepalen
Voer de opdracht az aks show uit om het uitgaande type van het AKS-cluster te identificeren:
az aks show --resource-group <resource_group> --name <cluster_name> --query "networkProfile.outboundType"
Als het uitgaande type is, is loadBalancer
er geen routetabel, tenzij u kubenet-netwerk gebruikt. Als u kubenet gebruikt, moet u ervoor zorgen dat de standaardroutetabel geen aanvullende configuratie heeft die uitgaande internetverbinding blokkeert. Als u een ander netwerk gebruikt, zoals Azure CNI, Dynamische toewijzing of Azure CNI-overlay, wordt er standaard geen routetabel gemaakt. Zorg er in dit geval voor dat de NSG (netwerkbeveiligingsgroep) geen aangepaste configuratie heeft die uitgaande internetverbinding blokkeert.
Als het uitgaande type is userDefinedRouting
, moet u ervoor zorgen dat aan de volgende voorwaarden wordt voldaan:
Het uitgaande apparaat (firewall of proxy) is bereikbaar.
Het uitgaande apparaat staat het vereiste uitgaande verkeer van het cluster toe.
Als u de lijst met FQDN's wilt ophalen die zijn toegestaan voor uw AKS-cluster, voert u de opdracht az aks egress-endpoints list uit:
az aks egress-endpoints list --resource-group <resource_group> --name <cluster_name>
Als het uitgaande type is managedNATGateway
, controleert u of het AKS-subnet is gekoppeld aan de NAT-gateway door de opdracht az network nat gateway show uit te voeren:
az network nat gateway show --resource-group <resource_group> --name <nat_gateway_name> --query "subnets[].id"
Zie Beheerde NAT-gateway voor meer informatie over het gebruik van een NAT-gateway in combinatie met AKS.
Stap 3: Bekijk de curl-uitvoer wanneer u verbinding maakt met de toepassingspod
De curl-antwoordcodes kunnen u helpen bij het identificeren van het probleemtype. Nadat de antwoordcode beschikbaar is, probeert u beter te begrijpen hoe het probleem zich gedraagt. Raadpleeg de volgende tabel voor meer informatie over de HTTP-statuscodes en het onderliggende gedrag van het probleem.
Informatiebron | Koppeling |
---|---|
Internet Assigned Numbers Authority (IANA) | Http-statuscoderegister (Hypertext Transfer Protocol) |
Mozilla | HTTP-antwoordstatuscodes |
Wikipedia | Lijst van HTTP-statuscodes |
De volgende HTTP-statuscodes kunnen duiden op de vermelde problemen.
HTTP-statuscode | Probleem | Voorbeeld |
---|---|---|
4xx |
|
|
5xx |
Een probleem is van invloed op de server. | De toepassing is offline of een gateway werkt niet. |
U kunt proberen verbinding te maken met het toepassingseindpunt met behulp van curl. Hier volgt een voorbeeld van een opdracht en uitvoer:
# 404 error code example
$ curl -vv <host IP address>/test.index
* Trying <host IP address>:80...
* TCP_NODELAY set
* Connected to <host IP address> (<host IP address>) port 80 (#0)
> GET /test.index HTTP/1.1
> Host: <host IP address>
> User-Agent: curl/7.68.0
> Accept: */*
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 404 Not Found
...
* Connection #0 to host <host IP address> left intact
Stap 4: Controleer wat er gebeurt als uitgaand verkeer het virtuele apparaat tijdelijk omzeilt
Voor snelle tests om te bepalen of het uitgaande apparaat (virtueel apparaat) het probleem veroorzaakt, kunt u tijdelijk toestaan dat al het verkeer via internet gaat. Als u deze installatie wilt configureren, kunt u in plaats daarvan het standaard-IP-adres en de poortroute van 0.0.0.0
/0
het virtuele apparaat wijzigen om via internet te gaan.
Als het uitgaande apparaat goed werkt bij het omzeilen van het virtuele apparaat, controleert u de logboeken van het virtuele apparaat om te zien welke pakketten worden geweigerd en voegt u regels voor toestaan toe in het virtuele apparaat dienovereenkomstig.
Is het probleem onregelmatig?
U kunt om verschillende redenen onregelmatige uitgaande problemen ondervinden. Voer de volgende stappen uit om onregelmatige uitgaande verbindingsproblemen op te lossen:
Stap 1: Controleren of de pod- of knooppuntbronnen zijn uitgeput
Voer de volgende opdrachten uit om te controleren hoeveel de resources worden gebruikt:
kubectl top pods
kubectl top nodes
Stap 2: Controleren of de schijf van het besturingssysteem intensief wordt gebruikt
Volg deze stappen om te controleren of de besturingssysteemschijf intensief wordt gebruikt:
Zoek en selecteer virtuele-machineschaalsets in Azure Portal.
Selecteer in de lijst met schaalsets de schaalset die wordt gebruikt voor uw AKS-cluster.
Ga in het navigatiedeelvenster van de schaalset naar de sectie Bewaking en selecteer vervolgens Metrische gegevens.
Bekijk de metrische schijfgegevens voor de schaalset in de sectie Metrische gegevens door naar de volgende velden te zoeken.
Veld Waarde Bereik VMSS-naam Naamruimte voor metrische gegevens Host van virtuele machine Metrische gegevens Metrische gegevens van besturingssysteem en gegevensschijf
Volg deze stappen om AKS-aanbevelingen over schijfgebruik weer te geven:
Zoek en selecteer Kubernetes-services in Azure Portal.
Selecteer in de lijst met Kubernetes-services de naam van uw AKS-cluster.
Ga in het navigatiedeelvenster van het AKS-cluster naar de sectie Bewaking en selecteer vervolgens Advisor-aanbevelingen.
Bekijk de vermelde aanbevelingen over schijfgebruik.
Als de besturingssysteemschijf intensief wordt gebruikt, kunt u overwegen de volgende oplossingen te gebruiken:
Verhoog de grootte van de besturingssysteemschijf.
Schakel over naar tijdelijke besturingssysteemschijven.
Als dit probleem niet wordt opgelost, analyseert u het proces dat zware lees-/schrijfbewerkingen op de schijf doet. Controleer vervolgens of u de acties naar een gegevensschijf kunt verplaatsen in plaats van de besturingssysteemschijf.
Stap 3: Controleren of de poort voor de vertaling van het bronnetwerkadres is uitgeput
Als toepassingen veel uitgaande verbindingen maken, kunnen ze het aantal beschikbare poorten op het IP-adres van het uitgaande apparaat uitputten. Volg de diagnostische gegevens van standard load balancer met metrische gegevens, waarschuwingen en resourcestatus om het gebruik en de toewijzing van de SNAT-poort (Source Network Address Translation) van uw bestaande load balancer te controleren. Controleer of bepaal het risico van uitputting van SNAT-poorten.
Bereikt of overschrijdt u het maximum aantal toegewezen SNAT-poorten? In dat geval kunt u uw toepassing controleren om te bepalen of bestaande verbindingen opnieuw worden gebruikt. Zie Uw toepassingen ontwerpen om efficiƫnt verbindingen te gebruiken voor meer informatie.
Als u denkt dat de toepassing correct is geconfigureerd en u meer SNAT-poorten nodig hebt dan het standaardaantal toegewezen poorten, voert u de volgende stappen uit:
Verhoog het aantal openbare IP-adressen op het uitgaande apparaat. Als het uitgaande apparaat de load balancer is, kunt u het aantal openbare IP-adressen op de load balancer verhogen.
Verhoog de poorten per knooppunt voor uw AKS-werkknooppunten.
Disclaimerinformatie van derden
Microsoft biedt contactgegevens van derden om u te helpen aanvullende informatie over dit onderwerp te vinden. Deze contactinformatie kan zonder voorafgaande kennisgeving worden gewijzigd. Microsoft garandeert niet de nauwkeurigheid van contactgegevens van derden.
Contacteer ons voor hulp
Als u vragen hebt of hulp nodig hebt, maak een ondersteuningsaanvraag of vraag de Azure-communityondersteuning. U kunt ook productfeedback verzenden naar de Azure-feedbackcommunity.