Diese Seite wurde von der Cloud Translation API übersetzt.
Switch to English

Kubernetes-Anwendung debuggen

Mit Cloud Code können Sie mithilfe von skaffold debug ganz einfach Fehler in Ihrer Anwendung beheben, die in einem Kubernetes-Cluster bereitgestellt wurde. Sie können in Ihrer Anwendung Fehler auf einem lokalen Cluster (z. B. Minikube oder Docker Desktop), Google Kubernetes Engine oder einem anderen Cloud-Anbieter beheben.

Darüber hinaus müssen Sie sich aufgrund der Unterstützung von Cloud Code zur Fehlerbehebung nicht um die manuelle Einrichtung z. B. der Portweiterleitung oder das Einfügen sprachspezifischer Fehlerbehebungsargumente kümmern. Sie benötigen lediglich eine Cloud Code-fähige Kubernetes-Anwendung, die eine skaffold.yaml-Konfigurationsdatei und eine cloudcode.kubernetes-Startkonfiguration enthält.

Fehler in Anwendung beheben

  1. Wählen Sie in der Cloud Code-Statusleiste den Befehl Debug on Kubernetes aus.
  2. Wenn Ihre Anwendung keine erforderliche Skaffold-Konfiguration oder cloudcode.kubernetes-Startkonfiguration hat, unterstützt Cloud Code Sie bei der Einrichtung.
  3. Geben Sie an, ob Sie den aktuellen Kubernetes-Kontext zum Ausführen der Anwendung verwenden oder ob Sie zu einem bevorzugten Kontext wechseln möchten.
  4. Wenn es sich um den ausgewählten Kontext eines Remote-Clusters handelt, werden Sie aufgefordert, eine Image-Registry anzugeben, an die die Images übertragen werden.

    Im Folgenden finden Sie Beispiele, wie Sie für einige gängige Registrys angeben, wo Container-Images gespeichert werden:

    Docker Hub docker.io/{account}
    Stellen Sie sicher, dass Sie ordnungsgemäß authentifiziert sind, wenn Sie ein privates Docker Hub-Repository verwenden.
    Google Container Repository (GCR) gcr.io/{project_id}

    Cloud Code verkettet diese Image-Registry mit dem Image-Namen, der in den Kubernetes-Manifesten angegeben ist, um den Namen des endgültigen Image-Repositorys zu generieren.

    Weitere Informationen finden Sie im Leitfaden zur Image-Registry.

    Diese Auswahl wird in Ihrer Startkonfiguration cloudcode.kubernetesgespeichert (in .vscode/launch.json).

  5. Anschließend erstellt Cloud Code Ihre Container, überträgt sie in die Registry, wendet Kubernetes-Konfigurationen auf den Cluster an und wartet auf den Rollout.

  6. Nach Abschluss der Einführung leitet Cloud Code alle deklarierten Containerports automatisch an Ihren Computer weiter und zeigt die URLs im Ausgabefenster an. So können Sie Ihre Live-Anwendung durchsuchen.

    Portweiterleitung und Anzeige von URLs im Ausgabefenster

  7. Für jeden debugfähigen Container in Ihrer Anwendung werden Sie aufgefordert, das Verzeichnis im Remote-Container, in dem sich das zu debuggende Programm befindet, zu bestätigen oder einzugeben.

    Alternativ können Sie "ESC" drücken, um die Fehlerbehebung für den Container zu überspringen.

    Remote-Root-Aufforderung

    Cloud Code fügt für jeden debugfähigen Container in der Anwendung eine Debug-Sitzung hinzu.

    Sie können jetzt alle Aufgaben ausführen, die normalerweise beim Debuggen von lokalem Code anfallen, z. B. das Festlegen von Haltepunkten und das Durchlaufen von Code, mit dem zusätzlichen Vorteil des Debugging für einen Live-Kubernetes-Cluster:

  8. In der Debugging-Seitenleiste können Sie Variablen und Stack-Informationen prüfen. Verwenden Sie die Debug Console im Debugger im unteren Bereich, um mit der Debugging-Sitzung zu interagieren.

    Eine Anwendung, die am Haltepunkt angehalten wurde und deren Variablen und Aufrufstapel mit Werten im entsprechenden Bereich gefüllt wurden

  9. Nach Abschluss der Sitzung stehen über die Cloud Code-Statusleiste weitere Optionen für das Kontextmenü zur Überwachung Ihrer Anwendung und ihrer Ressourcen zur Verfügung, darunter:

    • Deployment-Logs öffnen:theffnen Sie die Anwendungslogs einer bestimmten Bereitstellung mit der Cloud Code-Loganzeige.
    • Open Service URL (Dienst-URL öffnen): URL des Anwendungsdienstes in einem Webbrowser öffnen
    • Wiedergabemodus aktivieren/deaktivieren:Wiedergabemodus für die aktuelle Sitzung aktivieren und deaktivieren (nicht für Fehlerbehebungssitzungen verfügbar)

      Neben den regulären Cloud-Code-Aktionen sind Optionen über die Cloud Code-Statusleiste verfügbar: Bereitstellungs-Logs öffnen, Dienst-URL öffnen und Wiedergabemodus aktivieren

  10. Klicken Sie zum Beenden der Fehlerbehebungssitzung in der Debug-Symbolleiste auf das Stoppsymbol.

    Nach Beendigung der Anwendung werden alle bereitgestellten Kubernetes-Ressourcen aus dem Cluster gelöscht.

Konfigurationsdetails

Cloud Code, bereitgestellt von Skaffold, übernimmt die folgenden Konfigurationsdetails:

  • Portweiterleitung des Debug-Ports, damit der Debugger hinzugefügt werden kann.
  • Anhängen eines Debuggers an einen oder mehrere Debug-fähige Container in Ihrer Anwendung. Wenn für Ihre Anwendung mehrere debugfähige Container (Container, deren Sprache von Cloud Code Debug unterstützt wird) in skaffold.yaml konfiguriert sind, wird an jeden dieser Container ein Debugger angehängt.
  • Quellzuordnungsdefinitionen über Sitzungen hinweg: Sie können diese Definitionen anpassen, indem Sie Ihren .vscode/launch.json direkt bearbeiten.

Darüber hinaus richtet Cloud Code, abhängig von der Sprache, Folgendes ein:

Node.js

Neuschreiben des Einstiegspunkts, der aufgerufen werden soll:

node --inspect=localhost:9229

Python

Installieren Sie das ptvsd-Modul mithilfe eines Init-Containers und schreiben Sie den Einstiegspunkt für den Aufruf neu:

python -m ptvsd --host localhost --port 5678

Go

Installieren des dlv-Debuggers mit einem Init-Container und Umschreiben des Einstiegspunkts, sodass die gestartete Fehlerbehebungssitzung nur mit einem Fehlerbehebungsserver (im monitorlosen Modus) den Debug-Prozess beim Start fortsetzt, mehrere Client-Verbindungen akzeptiert und unter localhost:56268 empfängt:

dlv exec --headless --continue --accept-multiclient --listen=localhost:56268 --api-version=2, <app> --

Java

Fügen Sie eine Umgebung JAVA_TOOLS_OPTIONS mit der entsprechenden JDWP-Konfiguration hinzu, sodass der JDWP-Debugging-Agent eine Socket-Verbindung auf Port 5005 überwacht und der VM die Ausführung ermöglicht, bevor der Debugger angehängt wird:

jdwp=transport=dt_socket,server=y,suspend=n,address=5005,quiet=y

Weitere Informationen zum Debugging auf Skaffold finden Sie in der skaffold debug-Dokumentation.

Debugger an einen Kubernetes-Pod anhängen

Cloud Code unterstützt außerdem das Anfügen eines Debuggers an einen Kubernetes-Pod. Informationen zu den Unterschieden finden Sie in dieser Tabelle.