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

Unterstützung für die Verbesserung dieser Seite beitragen

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

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 Knoten-Reparatur 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, die installiert und mit ausreichenden Berechtigungen angemeldet ist, um S3-Buckets und -Objekte zu erstellen.

  • Eine aktuelle Installation von Python 3

  • Das AWS-SDK für Python 3, Boto 3, wurde erfolgreich 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. Ersetzen Sie bucket-name durch den von Ihnen gewä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 vorab signierte S3-Upload-URL für EKS zu erstellen, damit die Protokolldatei hochgeladen werden kann. Sie können keine vorab signierte S3-Upload-URL mit der AWS CLI 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': '<bucket-name>', 'Key': '<key>'}, ExpiresIn=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 vorab signierten URL zum Hochladen einer Datei in der AWS-Boto3-SDK-Dokumentation für Python.

Schritt 3: NodeDiagnostic-Ressource erstellen

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 ./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