Cloud Code unterstützt das Hinzufügen eines Debuggers zu einem Kubernetes-Pod. Sie benötigen lediglich einen debugfähigen Container und eine Anhang-Konfiguration vom Typ cloudcode.kubernetes
.
Container einrichten
Sie müssen dafür sorgen, dass der Container, für den Sie die Fehlerbehebung durchführen möchten, bereit ist. Im Folgenden finden Sie sprachspezifische Anleitungen zum Einrichten von Containern.
Node.js
- Starten Sie die Node.js-Anwendung mit
--inspect=<debugPort>
, wobeidebugPort
aus der Anhang-Konfiguration stammt. Beispiel:CMD ["node", "--inspect=9229", "index.js"]
Python
- Das Modul
ptvsd
muss auf Ihrer Maschine und in Ihrem Container installiert sein. - Starten Sie die Python-Anwendung über
ptvsd
. Ordnen Sie den angegebenen Port dem FelddebugPort
in der Anhang-Konfiguration zu. Beispiel:CMD ["python", "-m", "ptvsd", "--port", "
", "app.py"]
Go
- Das Paket
dlv
muss auf Ihrer Maschine und im Go-Container installiert sein. Starten Sie Ihre Go-Anwendung über
dlv debug
.Der im Startbefehl angegebene Port sollte mit dem Attributwert
debugPort
in der Anhang-Konfiguration übereinstimmen. Beispiel:CMD ["dlv", "debug", "--headless", "--listen=:<debugPort>", "--log"]
Tipp zur Fehlerbehebung: Beim Debuggen einer Go-Anwendung wird die Anwendung angehalten und wartet, bis ein Debugger verbunden ist. Fügen Sie einen Debugger hinzu, damit der Dienst gestartet werden kann.
Java
- Prüfen Sie, ob JVM auf Ihrer Maschine installiert ist.
Starten Sie die Java-Anwendung mit
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=<debugPort>,quiet=y
, wobeidebugPort
aus der Anhang-Konfiguration stammt.So starten Sie beispielsweise die Java-Anwendung im Fehlerbehebungsmodus und beobachten Port
debugPort
auf eine Verbindung:ENTRYPOINT ["java","-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=<debugPort>,quiet=y", "-jar", "my-app-1.0.jar"]
.NET Core
Achten Sie darauf, dass der Debugger von
vsdbg
.NET Core-Befehlszeile von Microsoft in Ihrem Kubernetes-Container installiert ist.Beispiel:
RUN apt-get update
&& apt-get install -y --no-install-recommends unzip
&& apt-get install -y procps
&& rm -rf /var/lib/apt/lists/*
&& curl -sSL https://aka.ms/getvsdbgsh | bash /dev/stdin -v latest -l /vsdbg
Eine Anhang-Konfiguration einrichten
Wenn Sie einen Debugging-Container an einen Debug-Container anhängen möchten, benötigen Sie eine Anhängenkonfiguration vom Typ cloudcode.kubernetes
.
Projekte, die nicht die Datei ".vscode/launch.json" haben
Wenn Ihr Projekt keine Datei "launch.json" im Ordner .vscode
hat, können Sie über das Debug-Feld eine Datei hinzufügen.
Navigieren Sie zum Debug-Feld (über das Symbol Debug-Ansicht
in der linken Aktivitätsleiste) und wählen Sie im Drop-down-Menü
Add Configuration
aus.Wählen Sie
Cloud Code: Kubernetes
als Umgebung aus.Option
Attach to Kubernetes Pod
auswählen.Wählen Sie die entsprechende Programmiersprache aus.
Dadurch wird eine Datei
launch.json
für Ihr Projekt erstellt und geöffnet sowie eine Anhangskonfiguration erstellt. Sie können jetzt die Konfigurationsattribute in dieser Datei aktualisieren, um sie an die Ihres Projekts anzupassen. Weitere Informationen zu Konfigurationsattributen finden Sie in dieser Tabelle.
Projekte mit der Datei ".vscode/launch.json"
So fügen Sie einer vorhandenen .vscode/launch.json-Datei eine neue Anhang-Konfiguration hinzu:
- Öffnen Sie die Datei launch.json.
- Drücken Sie die Schaltfläche
Add Configuration
, die das Snippet Intellisense aufruft. - Wählen Sie eines der
Cloud Code: Attach to Kubernetes Pod
-Snippets für die gewünschte Sprache aus. Dadurch wird eine Konfiguration hinzugefügt. Sie können nun Attribute in dieser Konfiguration aktualisieren, um sie an die Ihres Projekts anzupassen. Weitere Informationen zu Konfigurationsattributen finden Sie in dieser Tabelle.
Konfigurationsattribute
Attribut | Beschreibung |
---|---|
debugPort | Im Container verwendeter Fehlerbehebungsport. |
podSelector | Satz von Schlüssel/Wert-Paaren, die zum Auswählen des Pods für die Fehlerbehebung verwendet werden (weitere Informationen zum Selektor). Beispiel für einen typischen podSelector:
|
localRoot | Pfad zum lokalen Verzeichnis, in dem das Programm enthalten ist, für das Sie die Fehlerbehebung durchführen. Die Standardeinstellung ist ${workspaceFolder}. |
remoteRoot | Absoluter Pfad zum Remote-Verzeichnis (im Kubernetes-Container) mit dem Programm, in dem Sie die Fehlerbehebung ausführen. |
Debugger an einen Kubernetes-Pod anhängen
Wenn Sie die Konfiguration und den Container eingerichtet haben, gehen Sie so vor:
- Openffnen Sie die Debugging-Ansicht
.
- Verwenden Sie
F5
, um die Konfiguration auszuwählen und zu starten.localhost:${debugPort}
wird während der Fehlerbehebung an den ContainerdebugPort
weitergeleitet.
- Die Fehlerbehebungssitzung wurde erfolgreich eingerichtet.
- Sie können jetzt alle Aufgaben ausführen, die Sie normalerweise beim Debuggen von lokalem Code ausführen, z. B. das Festlegen von Haltepunkten und das Durchlaufen von Code.
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.
Klicken Sie zum Beenden der Fehlerbehebungssitzung in der Debug-Symbolleiste auf das Stoppsymbol.
Anhängen an einen Kubernetes-Pod im Vergleich zum Debugging einer Kubernetes-Anwendung
An einen Kubernetes-Pod anhängen | Kubernetes-Anwendung debuggen |
---|---|
Behebt Fehler eines einzelnen Kubernetes-Pods | Behebt Fehler in allen Debug-fähigen Containern der Anwendung |
Sie müssen darauf achten, dass die Anwendung im Kubernetes-Pod ausgeführt wird, bevor Sie die Fehlerbehebung durchführen. | Führt die Anwendung im Kubernetes-Cluster aus und hängt den Debugger an. |
Verwendet die Konfiguration (.vscode/launch.json) vom Typ „cloudcode.kubernetes“ und fordert „anhängen“ an. | Verwendet die Konfiguration (.vscode/launch.json) vom Typ „cloudcode.kubernetes“ und fordert „starten“ an. Start versus Anhang-Konfigurationen. |
Beispielkonfiguration:
{ "name": "Attach to Kubernetes Pod (NodeJS)", "type": "cloudcode.kubernetes", "request": "attach", "language": "Node", "debugPort": 9229, "podSelector": { "app": "hello-world" }, "localRoot": "${workspaceFolder}", "remoteRoot": "/app" } |
Beispielkonfiguration:
{ "name": "Run/Debug on Kubernetes", "type": "cloudcode.kubernetes", "request": "launch", "skaffoldConfig": "${workspaceFolder}/skaffold.yaml", "watch": true, "cleanUp": true, "portForward": true } |
Diese Konfiguration kann nicht zum Ausführen der Anwendung verwendet werden | Diese Konfiguration kann sowohl zum Ausführen als auch zur Fehlerbehebung der Anwendung verwendet werden. |
Diese Konfiguration ist sprachspezifisch | Diese Konfiguration ist sprachunabhängig |
Kein dedizierter Befehl | Befehl „Debug on Kubernetes“ (Fehlerbehebung auf Kubernetes) |