Freigeben über


Problembehandlung bei Verbindungen mit Endpunkten außerhalb des virtuellen Netzwerks

In diesem Artikel wird erläutert, wie Sie Probleme mit Verbindungen mit Endpunkten außerhalb des virtuellen Netzwerks (d. h. über das öffentliche Internet) aus einem AKS-Cluster (Microsoft Azure Kubernetes Service) beheben.

Voraussetzungen

  • Azure CLI.

  • Das Kubernetes kubectl-Tool oder ein ähnliches Tool zum Herstellen einer Verbindung mit dem Cluster. Um kubectl mithilfe der Azure CLI zu installieren, führen Sie den Befehl az aks install-cli aus.

Checkliste zur Problembehandlung

Schritt 1: Durchführen einer grundlegenden Problembehandlung

Stellen Sie sicher, dass Sie eine Verbindung mit öffentlichen Endpunkten im Internet herstellen können. Anweisungen finden Sie unter Grundlegende Problembehandlung bei ausgehenden AKS-Clusterverbindungen.

Schritt 2: Bestimmen des ausgehenden Typs für den AKS-Cluster

Führen Sie den Befehl az aks show aus, um den ausgehenden Typ des AKS-Clusters zu identifizieren:

az aks show --resource-group <resource_group> --name <cluster_name> --query "networkProfile.outboundType"

Wenn der Ausgehende Typ ist loadBalancer, stellen Sie sicher, dass die Routingtabelle, die den AKS-Knoten zugeordnet ist, über die Standardroute zum Internet verfügt. Details finden Sie in der folgenden Tabelle.

Quelle Adresspräfixe Typ des nächsten Hops
Standard 0.0.0.0/0 Internet

Wenn der ausgehende Typ ist userDefinedRouting, stellen Sie sicher, dass die folgenden Bedingungen erfüllt sind:

  • Das ausgehende Gerät (Firewall oder Proxy) ist erreichbar.

  • Das ausgehende Gerät lässt den erforderlichen ausgehenden Datenverkehr aus dem Cluster zu.

    Führen Sie den Befehl az aks egress-endpoints list aus, um die Liste der FQDNs abzurufen, die für Ihren AKS-Cluster zulässig sind:

    az aks egress-endpoints list --resource-group <resource_group> --name <cluster_name>
    

Wenn der Ausgehende Typ ist managedNATGateway, überprüfen Sie, ob das AKS-Subnetz dem NAT-Gateway zugeordnet ist, indem Sie den Befehl az network nat gateway show ausführen:

az network nat gateway show --resource-group <resource_group> --name <nat_gateway_name> --query "subnets[].id"

Weitere Informationen zur Verwendung eines NAT-Gateways zusammen mit AKS finden Sie unter Verwaltetes NAT-Gateway.

Schritt 3: Untersuchen der cURL Ausgabe beim Herstellen einer Verbindung mit dem Cluster

Die cURL Antwortcodes können Ihnen helfen, den Problemtyp zu identifizieren. Nachdem der Antwortcode verfügbar ist, versuchen Sie, das Verhalten des Problems besser zu verstehen. Weitere Informationen zu den HTTP-status-Codes und zum zugrunde liegenden Verhalten des Problems finden Sie in der folgenden Tabelle.

Informationsquelle Link
Internet Assigned Numbers Authority (IANA) HTTP-status-Coderegistrierung (Hypertext Transfer Protocol)
Mozilla HTTP-Antwortcode status
Wikipedia Liste der HTTP-status-Codes

Die folgenden HTTP-status Codes können auf die aufgeführten Probleme hinweisen.

HTTP-Statuscode Problem Beispiel
4xx
  1. Ein Problem betrifft die Clientanforderung.
  2. Zwischen dem Client und dem Server ist ein Netzwerkblocker vorhanden.
  1. Die angeforderte Seite ist nicht vorhanden, oder der Client verfügt nicht über die Berechtigung für den Zugriff auf die Seite.
  2. Datenverkehr wird von einer Netzwerksicherheitsgruppe oder einer Firewall blockiert.
5xx Ein Problem betrifft den Server. Die Anwendung ist ausgefallen, oder ein Gateway funktioniert nicht.

Schritt 4: Bestimmen Sie, was geschieht, wenn der ausgehende Datenverkehr normalerweise einen virtuellen Anwendung durchläuft, aber Sie ihn stattdessen umgehen.

Um schnell zu testen, ob das ausgehende Gerät (virtuelle Anwendung) das Problem verursacht, können Sie vorübergehend zulassen, dass der gesamte Datenverkehr über das Internet geleitet wird. Um dieses Setup zu konfigurieren, können Sie die Standard-IP-Adresse und die Portroute von 0.0.0.0/0 über die virtuelle Anwendung ändern, um stattdessen über das Internet zu navigieren.

Tritt das Problem zeitweilig auf?

Es kann aus verschiedenen Gründen zu zeitweiligen ausgehenden Problemen führen. Um zeitweilige Probleme mit ausgehenden Verbindungen zu beheben, probieren Sie die folgenden Überprüfungen aus:

Ist der Pod oder Knoten auf Ressourcen erschöpft?

Führen Sie den folgenden Code aus, um zu überprüfen, wie die Ressourcen verwendet werden:

kubectl top pods
kubectl top nodes

Wird der Betriebssystemdatenträger stark genutzt?

Führen Sie die folgenden Schritte aus, um zu überprüfen, ob der Betriebssystemdatenträger stark verwendet wird:

  1. Suchen Sie im Azure-Portal nach VM-Skalierungsgruppen, und wählen Sie diese Option aus.

  2. Wählen Sie in der Liste der Skalierungsgruppen die Skalierungsgruppe aus, die für Ihren AKS-Cluster verwendet wird.

  3. Navigieren Sie im Navigationsbereich der Skalierungsgruppe zum Abschnitt Überwachung , und wählen Sie dann Metriken aus.

  4. Zeigen Sie die Datenträgermetriken für die Skalierungsgruppe im Abschnitt Metriken an, indem Sie nach den folgenden Feldern suchen.

    Feld Wert
    Bereich VMSS-Name
    Metriknamespace VM-Host
    Metriken Betriebssystem- und Datenträgermetrik

Weitere Informationen zu Metriken finden Sie unter Betriebssystemdatenträger und Datenträgermetriken.

Führen Sie die folgenden Schritte aus, um AKS-Empfehlungen zur Datenträgerauslastung anzuzeigen:

  1. Suchen Sie im Azure-Portal nach Kubernetes-Diensten, und wählen Sie diese Option aus.

  2. Wählen Sie in der Liste der Kubernetes-Dienste den Namen Ihres AKS-Clusters aus.

  3. Navigieren Sie im Navigationsbereich des AKS-Clusters zum Abschnitt Überwachung , und wählen Sie dann Advisor-Empfehlungen aus.

  4. Sehen Sie sich die aufgeführten Empfehlungen zur Datenträgernutzung an.

Wenn der Betriebssystemdatenträger stark verwendet wird, sollten Sie die folgenden Abhilfemaßnahmen in Betracht ziehen:

Wenn das Problem durch diese Abhilfemaßnahmen nicht behoben wird, analysieren Sie den Prozess, der auf dem Datenträger viele Lese-/Schreibvorgänge ausführt. Überprüfen Sie dann, ob Sie die Aktionen auf einen Datenträger anstelle des Betriebssystemdatenträgers verschieben können.

Ist der Port der Quellnetzwerkadressenübersetzung erschöpft?

Wenn Anwendungen viele ausgehende Verbindungen herstellen, kann die Anzahl der verfügbaren Ports auf der IP-Adresse des ausgehenden Geräts ausgeschöpft werden. Befolgen Sie load balancer Standard Diagnose mit Metriken, Warnungen und Ressourcenintegrität, um die Nutzung und Zuordnung des SNAT-Ports (Source Network Address Translation) Ihres vorhandenen Lastenausgleichs zu überwachen. Überwachen Sie, um das Risiko einer SNAT-Portauslastung zu überprüfen oder zu ermitteln.

Erreichen oder überschreiten Sie die maximale Anzahl zugewiesener SNAT-Ports? In diesem Fall können Sie Ihre Anwendung überprüfen, um festzustellen, ob vorhandene Verbindungen wiederverwenden. Weitere Informationen finden Sie unter Entwerfen Ihrer Anwendungen zur effizienten Verwendung von Verbindungen.

Wenn Sie der Meinung sind, dass die Anwendung ordnungsgemäß konfiguriert ist und Sie mehr SNAT-Ports als die Standardanzahl der zugeordneten Ports benötigen, führen Sie die folgenden Schritte aus:

  1. Erhöhen Sie die Anzahl der öffentlichen IP-Adressen auf dem Gerät für ausgehenden Datenverkehr. Wenn es sich bei dem ausgehenden Gerät um den Lastenausgleich handelt, können Sie die Anzahl der öffentlichen IP-Adressen auf dem Lastenausgleich erhöhen.

  2. Erhöhen Sie die Ports pro Knoten für Ihre AKS-Workerknoten.

Haftungsausschluss für Kontaktinformationen von Drittanbietern

Die Kontaktinformationen zu den in diesem Artikel erwähnten Drittanbietern sollen Ihnen helfen, zusätzliche Informationen zu diesem Thema zu finden. Diese Kontaktinformationen können ohne vorherige Ankündigung geändert werden. Sie werden von Microsoft ohne jede Gewähr weitergegeben.

Kontaktieren Sie uns für Hilfe

Wenn Sie Fragen haben oder Hilfe mit Ihren Azure-Gutschriften benötigen, dann erstellen Sie beim Azure-Support eine Support-Anforderung oder fragen Sie den Azure Community-Support. Sie können auch Produktfeedback an die Azure Feedback Community senden.