Ayude a mejorar esta página
Para contribuir a esta guía del usuario, elija el enlace Edit this page on GitHub que se encuentra en el panel derecho de cada página.
Aprenda a recuperar los registros de nodos de un nodo administrado por Amazon EKS que tenga el agente de supervisión de nodos.
Requisitos previos
Asegúrese de contar con lo siguiente:
-
Un clúster de Amazon EKS con el agente de supervisión de nodos existente. Para obtener más información, consulte Cómo habilitar la reparación automática de los nodos e investigar los problemas de estado de los nodos.
-
La herramienta de línea de comandos
kubectl
instalada y configurada para comunicarse con el clúster. -
AWS CLI instalada y sesión iniciada con los permisos suficientes para crear buckets y objetos de S3.
-
Una versión reciente de Python 3 instalada
-
El SDK de AWS para Python 3 y Boto 3 instalado.
Paso 1: Creación de un destino de bucket de S3 (opcional)
Si aún no tiene un bucket de S3 para almacenar los registros, cree uno. Utilice el siguiente comando de AWS CLI. El bucket utiliza de manera predeterminada la lista de control de acceso private
. Sustituya bucket-name
por el nombre único que haya elegido.
aws s3api create-bucket --bucket
bucket-name
Paso 2: Creación de una URL de S3 previamente firmada para HTTP Put
Amazon EKS devuelve los registros de nodo mediante una operación HTTP PUT a una URL especificada. En este tutorial, generaremos una URL de HTTP PUT de S3 previamente firmada.
Los registros se devolverán como un gzip tarball, con la extensión .tar.gz
.
nota
Debe usar la API de AWS o un SDK para crear la URL de carga previamente firmada de S3 para que EKS cargue el archivo de registro. No puede crear una URL de carga previamente firmada de S3 mediante AWS CLI.
-
Determine en qué parte del bucket desea almacenar los registros. Por ejemplo, puede utilizar
2024-11-12/logs1.tar.gz
como clave. -
Copie el siguiente código de Python en el archivo
presign-upload.py
. Sustituya<bucket-name>
y<key>
. La clave debe terminar con.tar.gz
.import boto3; print(boto3.client('s3').generate_presigned_url( ClientMethod='put_object', Params={'Bucket': '<bucket-name>', 'Key': '<key>'}, ExpiresIn=1000 ))
-
Ejecute el script con
python presign-upload.py
-
Anote la URL de resultado. Utilice este valor en el siguiente paso como el
http-put-destination
.
Para obtener más información, consulte Generate a presigned URL to upload a file
Paso 3: Creación del recurso de NodeDiagnostic
Identifique el nombre del nodo del que desea recopilar los registros.
Cree un manifiesto NodeDiagnostic
que utilice el nombre del nodo como nombre del recurso y que proporcione un destino de URL de HTTP PUT.
apiVersion: eks.amazonaws.com/v1alpha1 kind: NodeDiagnostic metadata: name:
node-name
spec: logCapture: destination:http-put-destination
Aplique el manifiesto al clúster.
kubectl apply -f nodediagnostic.yaml
Para comprobar el estado de la recopilación, puede describir el recurso NodeDiagnostic
:
-
Un estado de
Success
oSuccessWithErrors
indica que la tarea se completó y los registros se cargaron en el destino indicado (SuccessWithErrors
indica que es posible que falten algunos registros) -
Si el estado es Error, confirme que la URL de carga esté formada correctamente y no haya caducado.
kubectl describe nodediagnostics.eks.amazonaws.com/
node-name
Paso 4: Descarga de los registros de S3
Espere aproximadamente un minuto antes de intentar descargar los registros. A continuación, use la CLI de S3 para descargar los registros.
# Once NodeDiagnostic shows Success status, download the logs
aws s3 cp s3://bucket-name
/key
./node-logs.tar.gz
Paso 5: Cómo limpiar el recurso de NodeDiagnostic
-
Los recursos de
NodeDiagnostic
no se eliminan automáticamente. Deberá limpiarlos por cuenta propia después de haber obtenido los artefactos de registro
# Delete the NodeDiagnostic resource
kubectl delete nodediagnostics.eks.amazonaws.com/node-name