Abrufen von Knotenprotokollen für einen verwalteten Knoten mithilfe von kubectl und S3 - Amazon EKS

Unterstützung für die Verbesserung dieser Seite beitragen

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Um zu diesem Benutzerhandbuch beizutragen, wählen Sie den GitHub Link Diese Seite bearbeiten auf, der sich im rechten Bereich jeder Seite befindet.

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Abrufen von Knotenprotokollen für einen verwalteten Knoten mithilfe von kubectl und S3

Erfahren Sie, wie Sie Knotenprotokolle für einen von Amazon EKS verwalteten Knoten abrufen können, auf dem der Knoten-Überwachungsagent installiert ist.

Voraussetzungen

Stellen Sie sicher, dass Sie über Folgendes verfügen:

  • Ein vorhandener Amazon-EKS-Cluster mit dem Knoten-Überwachungsagent. Weitere Informationen finden Sie unter Aktivieren der automatischen Knotenreparatur und Untersuchen von Problemen mit dem Zustand des Knotens.

  • Das Befehlszeilentool kubectl, das für die Kommunikation mit Ihrem Cluster installiert und konfiguriert wurde.

  • Die AWS CLI wurde installiert und hat sich mit ausreichenden Berechtigungen angemeldet, um S3-Buckets und -Objekte zu erstellen.

  • Eine aktuelle Installation von Python 3

  • Das AWS SDK für Python 3, Boto 3, ist installiert.

Schritt 1: S3-Bucket-Ziel erstellen (optional)

Falls Sie noch nicht über einen S3-Bucket zum Speichern der Protokolle verfügen, erstellen Sie einen. Verwenden Sie den folgenden AWS CLI-Befehl. Der Bucket verwendet standardmäßig die private-Zugriffskontroll-Liste. bucket-nameErsetzen Sie es durch den von Ihnen ausgewählten eindeutigen Bucket-Namen.

aws s3api create-bucket --bucket <bucket-name>

Schritt 2: Vorab signierte S3-URL für HTTP Put erstellen

Amazon EKS gibt die Knotenprotokolle zurück, indem es eine HTTP-PUT-Operation an eine von Ihnen angegebene URL durchführt. In diesem Tutorial erstellen wir eine vorab signierte S3-HTTP-PUT-URL.

Die Protokolle werden als gzip tarball mit der .tar.gz-Erweiterung zurückgegeben.

Anmerkung

Sie müssen die AWS API oder ein SDK verwenden, um die vorsignierte S3-Upload-URL für EKS zum Hochladen der Protokolldatei zu erstellen. Sie können mit der AWS CLI keine vorsignierte S3-Upload-URL erstellen.

  1. Bestimmen Sie, wo im Bucket Sie die Protokolle speichern möchten. Sie können beispielsweise 2024-11-12/logs1.tar.gz als Schlüssel verwenden.

  2. Speichern Sie den folgenden Python-Code in der Datei presign-upload.py. Ersetzen Sie <bucket-name> und <key>. Der Schlüssel sollte mit .tar.gz enden.

    import boto3; print(boto3.client('s3').generate_presigned_url( ClientMethod='put_object', Params={'Bucket': '[.replaceable]`<bucket-name>`', 'Key': '[.replaceable]`<key>`'}, ExpiresIn=[.replaceable]`1000` ))
  3. Skript ausführen mit

    python presign-upload.py
  4. Beachten Sie die URL-Ausgabe. Verwenden Sie diesen Wert im nächsten Schritt als http-put-destination.

Weitere Informationen finden Sie unter Generieren einer vorsignierten URL zum Hochladen einer Datei in der Dokumentation zum AWS Boto3-SDK für Python.

Schritt 3: Ressource erstellen NodeDiagnostic

Identifizieren Sie den Namen des Knotens, von dem Sie Protokolle erfassen möchten.

Erstellen Sie ein NodeDiagnostic-Manifest, das den Namen des Knotens als Namen der Ressource verwendet und eine HTTP-PUT-URL-Zieladresse angibt.

apiVersion: eks.amazonaws.com/v1alpha1 kind: NodeDiagnostic metadata: name: <node-name> spec: logCapture: destination: http-put-destination

Wenden Sie die Manifestdatei auf Ihren Cluster an.

kubectl apply -f nodediagnostic.yaml

Sie können den Status der Sammlung überprüfen, indem Sie die NodeDiagnostic-Ressource beschreiben:

  • Ein Status von Success oder SuccessWithErrors zeigt an, dass die Aufgabe abgeschlossen und die Protokolle an das angegebene Ziel hochgeladen wurden (SuccessWithErrors zeigt an, dass möglicherweise einige Protokolle fehlen).

  • Wenn der Status „Fehler“ lautet, stellen Sie sicher, dass die Upload-URL korrekt formatiert und nicht abgelaufen ist.

kubectl describe nodediagnostics.eks.amazonaws.com/<node-name>

Schritt 4: Protokolle aus S3 herunterladen

Warten Sie etwa eine Minute, bevor Sie versuchen, die Protokolle herunterzuladen. Verwenden Sie anschließend die S3-CLI, um die Protokolle herunterzuladen.

# Once NodeDiagnostic shows Success status, download the logs aws s3 cp s3://<bucket-name>/key ./<path-to-node-logs>.tar.gz

Schritt 5: NodeDiagnostic Ressource bereinigen

  • NodeDiagnostic-Ressourcen werden nicht automatisch gelöscht. Sie sollten diese selbst bereinigen, nachdem Sie Ihre Protokoll-Artefakte erhalten haben

# Delete the NodeDiagnostic resource kubectl delete nodediagnostics.eks.amazonaws.com/<node-name>