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 --bucketbucket-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.
-
Bestimmen Sie, wo im Bucket Sie die Protokolle speichern möchten. Sie können beispielsweise
2024-11-12/logs1.tar.gzals Schlüssel verwenden. -
Speichern Sie den folgenden Python-Code in der Datei
presign-upload.py. Ersetzen Sie<bucket-name>und<key>. Der Schlüssel sollte mit.tar.gzenden.import boto3; print(boto3.client('s3').generate_presigned_url( ClientMethod='put_object', Params={'Bucket': '<bucket-name>', 'Key': '<key>'}, ExpiresIn=1000 )) -
Skript ausführen mit
python presign-upload.py -
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
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-namespec: 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
SuccessoderSuccessWithErrorszeigt an, dass die Aufgabe abgeschlossen und die Protokolle an das angegebene Ziel hochgeladen wurden (SuccessWithErrorszeigt 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