Recuperare i log dei nodi per un nodo gestito usando kubectl e S3 - Amazon EKS

Contribuisci a migliorare questa pagina

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Per contribuire a questa guida per l'utente, scegli il GitHub link Modifica questa pagina nel riquadro destro di ogni pagina.

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Recuperare i log dei nodi per un nodo gestito usando kubectl e S3

Scopri come recuperare i log dei nodi per un nodo gestito di Amazon EKS che dispone dell’agente di monitoraggio dei nodi.

Prerequisiti

Verifica di disporre di quanto segue:

  • Un cluster Amazon EKS esistente con agente di monitoraggio dei nodi. Per ulteriori informazioni, consulta Enable node auto repair and investigate node health issues.

  • Lo strumento di riga di comando kubectl installato e configurato per comunicare con il cluster.

  • La AWS CLI è stata installata e ha effettuato l'accesso con autorizzazioni sufficienti per creare bucket e oggetti S3.

  • Una versione recente di Python 3 installata

  • L' AWS SDK per Python 3, Boto 3, è installato.

Fase 1: Creare di una destinazione bucket S3 (facoltativo)

Se non disponi già di un bucket S3 in cui archiviare i log, creane uno. Usa il seguente comando AWS CLI. Per impostazione predefinita, il bucket è l’elenco di controllo degli accessi private. Sostituisci bucket-name con il nome univoco del bucket scelto.

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

Fase 2: Creare un URL S3 prefirmato per HTTP Put

Amazon EKS restituisce i log dei nodi eseguendo un’operazione HTTP PUT su un URL specificato. In questo tutorial, genereremo un URL PUT HTTP S3 prefirmato.

I log verranno restituiti come gzip tarball, con l’estensione .tar.gz.

Nota

È necessario utilizzare l' AWS API o un SDK per creare l'URL di caricamento S3 prefirmato per consentire a EKS di caricare il file di registro. Non puoi creare un URL di caricamento S3 prefirmato utilizzando la CLI AWS .

  1. Determina in che punto del bucket desideri archiviare i log. Ad esempio, puoi usare 2024-11-12/logs1.tar.gz come chiave.

  2. Salva il seguente codice Python sul file presign-upload.py. Sostituisci <bucket-name> e <key>. La chiave deve terminare con .tar.gz.

    import boto3; print(boto3.client('s3').generate_presigned_url( ClientMethod='put_object', Params={'Bucket': '[.replaceable]`<bucket-name>`', 'Key': '[.replaceable]`<key>`'}, ExpiresIn=[.replaceable]`1000` ))
  3. Esegui lo script con

    python presign-upload.py
  4. Annota l’output dell’URL. Usa questo valore nella fase successiva come http-put-destination.

Per ulteriori informazioni, consulta Generare un URL predefinito per caricare un file nella documentazione AWS Boto3 SDK per Python.

Fase 3: Creare una risorsa NodeDiagnostic

Identifica il nome del nodo da cui si desidera raccogliere i log.

Crea un manifesto NodeDiagnostic che utilizzi il nome del nodo come nome della risorsa e fornire una destinazione URL PUT HTTP.

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

Applica il file manifesto al cluster.

kubectl apply -f nodediagnostic.yaml

Puoi controllare lo stato della raccolta descrivendo la risorsa NodeDiagnostic:

  • Uno stato di Success o SuccessWithErrors indica che l’attività è stata completata e i log sono stati caricati nella destinazione fornita (SuccessWithErrors indica che alcuni log potrebbero mancare).

  • Se lo stato è Failure, conferma che l’URL di caricamento è ben formato e non è scaduto.

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

Fase 4: Scaricare log da S3

Attendi circa un minuto prima di tentare di scaricare i log. Quindi, usa la CLI di S3 per scaricare i log.

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

Fase 5: Pulizia della NodeDiagnostic risorsa

  • Le risorse NodeDiagnostic non vengono eliminate automaticamente. Devi eliminarle in autonomia dopo aver ottenuto gli artefatti del log.

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