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 de 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 los clústeres de Ray en un clúster de GKE existente, GKE solo recopila registros de los Pods de Ray recién creados, no de los Pods de Ray existentes.
- En el caso de los clústeres de GKE Standard, 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 en el clúster de Ray. De lo contrario, GKE no recopilará registros. - El registro JSON está disponible en la versión v1.35.1-gke.1616000 de GKE y versiones posteriores. Para habilitar el registro JSON estructurado, configura variables de entorno específicas en 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 producidos por el encabezado del clúster de Ray y los nodos de trabajador.
Puedes habilitar la recopilación de registros para los clústeres de Ray con la Google Cloud consola o gcloud CLI.
Console
Ve a la página de Google Kubernetes Engine en la Google Cloud consola.
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 la opción --addons=RayOperator y la opción --enable-ray-cluster-logging:
gcloud container clusters create CLUSTER_NAME \
--location=LOCATION \
--addons=RayOperator \
--enable-ray-cluster-logging
Reemplaza lo siguiente:
CLUSTER_NAME: es 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 los clústeres de Ray en un clúster existente con
el
gcloud container clusters update
comando con la opción --addons=RayOperator y la
--enable-ray-cluster-logging opción.
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 Google Cloud consola.
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 de encabezado 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 trabajador 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 de GKE y versiones posteriores.
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 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 de gravedad correcto, 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 en las especificaciones de tu contenedor de Ray en el manifiesto YAML de
RayCluster:RAY_LOGGING_CONFIG_ENCODING="JSON": Configura los registros de aplicaciones de Ray (Ray Core, actores y tareas) para usar la codificación JSON estructurada.RAY_BACKEND_LOG_JSON="1": Configura los registros del sistema de Ray (como los del servidor 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 para 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 de los clústeres de Ray nuevos. GKE recopila todas las métricas del sistema que Ray exporta en formato Prometheus.
Puedes habilitar la recopilación de métricas para clústeres de Ray con la Google Cloud consola o gcloud CLI.
Console
Ve a la página de Google Kubernetes Engine en la Google Cloud consola.
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 la opción --addons=RayOperator y la opción --enable-ray-cluster-monitoring:
gcloud container clusters create CLUSTER_NAME \
--location=LOCATION \
--addons=RayOperator \
--enable-ray-cluster-monitoring
Reemplaza lo siguiente:
CLUSTER_NAME: es 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 los clústeres de Ray en un clúster existente con
el
gcloud container clusters update
comando con la opción --addons=RayOperator y la
opción --enable-ray-cluster-monitoring.
Visualiza las métricas de Ray
Google Cloud Managed Service para Prometheus proporciona un panel Descripción general de Ray en GKE 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 Descripción general de Ray en GKE
El panel se propaga automáticamente cuando habilitas la recopilación de métricas para tu clúster de Ray.
Como alternativa, si deseas explorar métricas individuales recopiladas de clústeres de Ray que se ejecutan en GKE, sigue estos pasos:
Ve a la página Explorador de métricas en la Google Cloud consola.
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_. Entre los ejemplos, se incluyenprometheus/ray_worker_cpu_seconds_totaloprometheus/ray_memory_bytes_max.Puedes refinar aún más tu búsqueda si seleccionas el tipo de recurso adecuado (por ejemplo,
k8s_pod,k8s_container) y filtras 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.