En esta página, se muestra cómo configurar Google Kubernetes Engine (GKE) para recopilar registros y métricas de los clústeres de Ray que se ejecutan en Google Kubernetes Engine (GKE), además de cómo ver los registros y las métricas de Ray en Cloud Logging y Cloud Monitoring.
Para obtener más información sobre Ray y KubeRay, consulta Descripción general de Ray en Google Kubernetes Engine (GKE).
Antes de comenzar
Antes de comenzar, asegúrate de haber realizado las siguientes tareas:
- Habilita la API de Google Kubernetes Engine. Habilitar la API de Google Kubernetes Engine
- Si deseas usar Google Cloud CLI para esta tarea, instala y, luego, inicializa gcloud CLI. Si ya instalaste gcloud CLI, ejecuta el comando
gcloud components updatepara obtener la versión más reciente. Es posible que las versiones anteriores de gcloud CLI no admitan la ejecución de los comandos que se describen en este documento.
Requisitos y limitaciones
- Debes habilitar el registro del sistema y de las cargas de trabajo en un clúster de GKE existente antes de habilitar la recopilación de registros para los clústeres de Ray.
- Si habilitas la recopilación de registros para clústeres de Ray en un clúster de GKE existente, GKE solo recopila registros de los Pods de Ray creados recientemente, no de los Pods de Ray existentes.
- En el caso de los clústeres de GKE estándar, debes habilitar Google Cloud Managed Service para Prometheus para habilitar la recopilación de métricas para los clústeres de Ray. En el caso de los clústeres de Autopilot, Google Cloud Managed Service para Prometheus está habilitado de forma predeterminada.
- No debes especificar un volumen llamado
ray-logsen ningún contenedor de Ray del clúster de Ray. De lo contrario, GKE no recopilará registros. - El registro en formato JSON está disponible en la versión v1.35.1-gke.1616000 y posteriores de GKE. Para habilitar el registro JSON estructurado, configura variables de entorno específicas dentro de la especificación de tu contenedor de Ray.
Habilita la recopilación de registros para un clúster de Ray
Puedes habilitar la recopilación de registros para clústeres de Ray con clústeres nuevos o existentes de Autopilot o GKE Standard. Los registros de Ray que GKE recopila de los clústeres de Ray se clasifican como registros de contenedores. Esto incluye todos los registros que producen los nodos principales y de trabajo del clúster de Ray.
Puedes habilitar la recopilación de registros para los clústeres de Ray con la consola de Google Cloud o gcloud CLI.
Console
Ve a la página de Google Kubernetes Engine en la consola de Google Cloud .
Haz clic en Crear y, luego, en la sección Standard o Autopilot, haz clic en Configurar.
En el panel de navegación, en Clúster, haz clic en Funciones.
En la sección Operaciones, asegúrate de que esté seleccionada la casilla de verificación Sistema y cargas de trabajo.
En la sección IA y aprendizaje automático, selecciona Habilitar operador de Ray y, luego, selecciona Habilitar la recopilación de registros para clústeres de Ray.
Haz clic en Crear.
En el caso de los clústeres estándar, también debes habilitar Google Cloud Managed Service para Prometheus.
gcloud
Crea un clúster con las opciones --addons=RayOperator y --enable-ray-cluster-logging:
gcloud container clusters create CLUSTER_NAME \
--location=LOCATION \
--addons=RayOperator \
--enable-ray-cluster-logging
Reemplaza lo siguiente:
CLUSTER_NAMEes el nombre del clúster nuevo.LOCATION: Es la ubicación del clúster nuevo, por ejemplo, us-central1.
Puedes habilitar la recopilación de registros para clústeres de Ray en un clúster existente con el comando gcloud container clusters update con las opciones --addons=RayOperator y --enable-ray-cluster-logging.
Visualiza los registros de Ray
Puedes ver los registros recopilados de los clústeres de Ray que se ejecutan en GKE con Logging.
Ve a la página Cloud Logging en la consola de Google Cloud .
Abre el editor de consultas y pega tu expresión en él.
Haz clic en Ejecutar consulta.
Puedes usar las siguientes consultas de ejemplo en el Explorador de registros:
| Nombre de la consulta o del filtro | Expresión |
|---|---|
| Todos los registros de Ray | resource.type="k8s_container" labels."k8s-pod/ray_io/is-ray-node"="yes" |
| Todos los registros del nodo principal de Ray | resource.type="k8s_container" labels."k8s-pod/ray_io/node-type"="head" |
| Todos los registros de un clúster de Ray | resource.type="k8s_container" labels."k8s-pod/ray_io/cluster"="RAY_CLUSTER_NAME" |
| Todos los registros del controlador de un trabajo de Ray | resource.type="k8s_container" jsonPayload.ray_submission_id="RAY_JOB_SUBMISSION_ID" |
| Todos los registros de trabajadores de un trabajo de Ray | resource.type="k8s_container" labels."k8s-pod/ray_io/cluster"="RAY_CLUSTER_NAME" labels."k8s-pod/ray_io/node-type"="worker" jsonPayload.filename=~"/tmp/ray/session_latest/logs/worker-(.*).out" |
Habilita el registro estructurado mejorado (recomendado)
El registro estructurado mejorado está disponible para la versión v1.35.1-gke.1616000 y posteriores de GKE.
De forma predeterminada, los registros de Ray se capturan como cadenas de texto no estructuradas dentro del campo jsonPayload.log en Cloud Logging. Para mejorar las consultas, el análisis y la observabilidad, puedes configurar los clústeres de Ray para que generen registros en un formato JSON estructurado. Este formato mejorado analiza los registros en pares clave-valor detallados, lo que permite realizar consultas más rápidas basadas en campos sobre atributos como task_id y job_id. El registro estructurado mejorado proporciona un etiquetado correcto de la gravedad, evita la división de registros de varias líneas y se integra sin problemas con las funciones de Cloud Logging para mejorar el análisis y la depuración.
Para habilitar la salida JSON estructurada, completa los siguientes pasos:
- Habilita la recopilación de registros para tu clúster de Ray
Establece las siguientes variables de entorno dentro de las especificaciones de tu contenedor de Ray en el manifiesto YAML
RayCluster:RAY_LOGGING_CONFIG_ENCODING="JSON": Configura los registros de la aplicación de Ray (Ray Core, actores y tareas) para que usen la codificación JSON estructurada.RAY_BACKEND_LOG_JSON="1": Configura los registros del sistema de Ray (como los del servidor de GCS y Raylet) para que se generen en formato JSON estructurado.
Por ejemplo, los siguientes manifiestos de RayCluster incluyen la sección env para todos los contenedores de Ray, tanto en las especificaciones de headGroupSpec como en las de workerGroupSpecs:
# Example snippet for a RayCluster manifest apiVersion: ray.io/v1 kind: RayCluster metadata: name: raycluster-structured spec: headGroupSpec: template: spec: containers: - name: ray-head image: rayproject/ray:2.54.0 # Replace with your desired Ray image # ... other container settings env: - name: RAY_LOGGING_CONFIG_ENCODING value: "JSON" - name: RAY_BACKEND_LOG_JSON value: "1" workerGroupSpecs: - groupName: small-group replicas: 1 minReplicas: 1 maxReplicas: 5 template: spec: containers: - name: ray-worker image: rayproject/ray:2.54.0 # Replace with your desired Ray image # ... other container settings env: - name: RAY_LOGGING_CONFIG_ENCODING value: "JSON" - name: RAY_BACKEND_LOG_JSON value: "1"Aplica el manifiesto de RayCluster actualizado:
kubectl apply -f your-raycluster.yaml
Consultas para registros estructurados
| Nombre de la consulta o del filtro | Expresión |
|---|---|
| Todos los registros de errores para un ID de trabajo de Ray específico | resource.type="k8s_container" labels."k8s-pod/ray_io/is-ray-node"="yes" severity=ERROR jsonPayload.job_id="YOUR_JOB_ID" |
| Registros de un ID de proceso de trabajador de Ray específico | resource.type="k8s_container" labels."k8s-pod/ray_io/is-ray-node"="yes" jsonPayload.worker_id="YOUR_WORKER_ID" |
| Registros de errores de un ID de tarea específico en un Pod de trabajador específico | resource.type="k8s_container" resource.labels.pod_name="YOUR_WORKER_POD_NAME" labels."k8s-pod/ray_io/is-ray-node"="yes" severity=ERROR jsonPayload.task_id="YOUR_TASK_ID" |
Habilita la recopilación de métricas para un clúster de Ray
Puedes habilitar la recopilación de métricas para clústeres de Ray con clústeres nuevos o existentes de Autopilot o GKE Standard.
Después de habilitar la recopilación de métricas para los clústeres de Ray, GKE recopila métricas de los clústeres de Ray existentes y los nuevos. GKE recopila todas las métricas del sistema que Ray exporta en formato de Prometheus.
Puedes habilitar la recopilación de métricas para clústeres de Ray con la consola deGoogle Cloud o gcloud CLI.
Console
Ve a la página de Google Kubernetes Engine en la consola de Google Cloud .
Haz clic en Crear y, luego, en la sección Standard o Autopilot, haz clic en Configurar.
En el panel de navegación, en Clúster, haz clic en Funciones.
En la sección Operaciones, asegúrate de que esté seleccionada la casilla de verificación Sistema y cargas de trabajo.
En la sección IA y aprendizaje automático, selecciona Habilitar operador de Ray y, luego, Habilitar la recopilación de métricas para los clústeres de Ray.
Haz clic en Crear.
En el caso de los clústeres estándar, también debes habilitar Google Cloud Managed Service para Prometheus.
gcloud
Crea un clúster con las opciones --addons=RayOperator y --enable-ray-cluster-monitoring:
gcloud container clusters create CLUSTER_NAME \
--location=LOCATION \
--addons=RayOperator \
--enable-ray-cluster-monitoring
Reemplaza lo siguiente:
CLUSTER_NAMEes el nombre del clúster nuevo.LOCATION: Es la ubicación del clúster nuevo, por ejemplo, us-central1.
Puedes habilitar la recopilación de registros para clústeres de Ray en un clúster existente con el comando gcloud container clusters update con las opciones --addons=RayOperator y --enable-ray-cluster-monitoring.
Visualiza las métricas de Ray
Google Cloud Managed Service para Prometheus proporciona un panel Ray on GKE Overview preconfigurado que ofrece una vista centralizada de las métricas clave de Ray. Esta es la forma recomendada de comenzar rápidamente a supervisar tus clústeres de Ray en GKE.
Ir al panel de descripción general de Ray en GKE
El panel se completa automáticamente cuando habilitas la recopilación de métricas para tu clúster de Ray.
Como alternativa, si deseas explorar las métricas individuales recopiladas de los clústeres de Ray que se ejecutan en GKE, sigue estos pasos:
Ve a la página Explorador de métricas en la consola de Google Cloud .
En el campo Seleccionar una métrica, puedes buscar métricas específicas de Ray. Por lo general, estas métricas tienen el prefijo
prometheus/ray_. Los ejemplos incluyenprometheus/ray_worker_cpu_seconds_totaloprometheus/ray_memory_bytes_max.También puedes definir mejor tu búsqueda seleccionando el tipo de recurso adecuado (por ejemplo,
k8s_pod,k8s_container) y filtrando por etiquetas relevantes para tu clúster de Ray (por ejemplo,ray.io/cluster).
¿Qué sigue?
- Obtén más información sobre Ray en Kubernetes.
- Explora la documentación de KubeRay.