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
kubectlinstallato 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 .
-
Determina in che punto del bucket desideri archiviare i log. Ad esempio, puoi usare
2024-11-12/logs1.tar.gzcome chiave. -
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` )) -
Esegui lo script con
python presign-upload.py -
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
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
SuccessoSuccessWithErrorsindica che l’attività è stata completata e i log sono stati caricati nella destinazione fornita (SuccessWithErrorsindica 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
NodeDiagnosticnon 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>