Configura GKE para ML Diagnostics
Si usas Google Kubernetes Engine (GKE) para tu carga de trabajo de AA, puedes usar la plataforma de ML Diagnostics de dos maneras:
- Supervisión automática de cargas de trabajo y recopilación de métricas del sistema: Para
la supervisión automática de cargas de trabajo y la recopilación de métricas del sistema, no necesitas
instrumentar tu código ni realizar ninguna configuración adicional. La supervisión de cargas de trabajo y la recopilación de métricas del sistema están habilitadas de forma predeterminada, y no es necesario que realices los pasos de esta guía. La supervisión de cargas de trabajo
admite los tipos de trabajo
jobsetyjobde GKE, y es compatible con las versiones 1.36.0-gke.4681000 y posteriores de GKE. - SDK de ML Diagnostics y generación de perfiles a pedido: Si deseas usar el SDK de ML Diagnostics y generar perfiles a pedido, usa esta guía para configurar tu clúster de GKE y, luego, instalar los artefactos de GKE necesarios.
La configuración de tu carga de trabajo depende de si usas la generación de perfiles a pedido o la generación de perfiles programática.
- Generación de perfiles a pedido: Requiere que instales
connection-operator. - Generación de perfiles programática: Requiere que instales
injection-webhook, etiquetes la carga de trabajo y uses el SDK de ML Diagnostics.
Si usas una versión de GKE posterior a
1.35.0-gke.3065000, puedes configurar el clúster de GKE para ML Diagnostics con un
solo comando de gcloud CLI, a través de la Google Cloud consola o con
Terraform. Para obtener más información, consulta Configura con
gcloud CLI, Google Cloud la consola o Terraform.
Para las versiones de GKE anteriores a 1.35.0-gke.3065000, debes configurar manualmente el clúster de GKE para instalar los artefactos cert-manager, injection-webhook y connection-operator. Para obtener más información,
consulta Instalación manual.
Configura con gcloud CLI, Google Cloud la consola o Terraform
Para las versiones de GKE posteriores a 1.35.0-gke.3065000, usa uno de los siguientes métodos para implementar los componentes necesarios de ML Diagnostics (connection-operator y injection-webhook) en tu clúster de GKE.
gcloud
Para clústeres de GKE nuevos:
gcloud beta container clusters create CLUSTER_NAME --enable-managed-mldiagnostics
Para clústeres de GKE existentes:
gcloud beta container clusters update CLUSTER_NAME --enable-managed-mldiagnostics
Para inhabilitar ML Diagnostics, usa lo siguiente:
gcloud beta container clusters update CLUSTER_NAME --no-enable-managed-mldiagnostics
Para obtener más información sobre los comandos de gcloud CLI para configurar un clúster de GKE para ML Diagnostics, consulta la marca enable-managed-mldiagnostics en las siguientes páginas de referencia de la API:
Console
Para clústeres de GKE nuevos, ve a Administrador de funciones > Managed Machine Learning Diagnostics.
Para clústeres de GKE existentes, ve a Clústeres, selecciona el nombre de tu clúster, ve a Editar y edita Managed Machine Learning Diagnostics en Funciones.
Terraform
Si usas Terraform para aprovisionar tu infraestructura de GKE, puedes usar el proveedor terraform-provider-google-beta (versión v7.28.0 o posterior) o el módulo terraform-google-modules/kubernetes-engine/google (versión v45.0.0 o posterior).
Usa el Google Cloud proveedor de Terraform
Para habilitar Managed ML Diagnostics en un clúster nuevo con el recurso google_container_cluster, agrega el bloque managed_machine_learning_diagnostics_config con enabled = true usando el proveedor google-beta (versión v7.28.0 o posterior):
terraform {
required_providers {
google-beta = {
source = "hashicorp/google-beta"
version = ">= 7.28.0"
}
}
}
resource "google_container_cluster" "primary" {
provider = google-beta
name = "CLUSTER_NAME"
location = "LOCATION"
# ... other cluster configuration ...
managed_machine_learning_diagnostics_config {
enabled = true
}
}
Para inhabilitar Managed ML Diagnostics en un clúster con el recurso de Terraform, establece enabled = false en el bloque managed_machine_learning_diagnostics_config:
resource "google_container_cluster" "primary" {
provider = google-beta
name = "CLUSTER_NAME"
location = "LOCATION"
# ... other cluster configuration ...
managed_machine_learning_diagnostics_config {
enabled = false
}
}
Usa el módulo de Terraform de GKE
Para habilitar Managed ML Diagnostics en un clúster con el
terraform-google-modules/kubernetes-engine/google
módulo (como el submódulo beta-public-cluster), establece
enable_managed_machine_learning_diagnostics = true:
module "gke" {
source = "terraform-google-modules/kubernetes-engine/google//modules/beta-public-cluster"
version = ">= 45.0"
project_id = "PROJECT_ID"
name = "CLUSTER_NAME"
region = "LOCATION"
# ... other cluster configuration ...
enable_managed_machine_learning_diagnostics = true
}
Para inhabilitar Managed ML Diagnostics en un clúster con el módulo de Terraform, establece enable_managed_machine_learning_diagnostics = false:
module "gke" {
source = "terraform-google-modules/kubernetes-engine/google//modules/beta-public-cluster"
version = ">= 45.0"
# ... other cluster configuration ...
enable_managed_machine_learning_diagnostics = false
}
Después de actualizar la configuración, aplica los cambios:
terraform apply
Reemplaza lo siguiente:
PROJECT_ID: el nombre del proyecto.CLUSTER_NAME: el nombre del clústerLOCATION: la región o zona.
Si deseas obtener más información sobre el uso de Terraform con GKE, consulta Compatibilidad con Terraform para GKE.
Instalación manual
Para las versiones de GKE anteriores a 1.35.0-gke.3065000, debes configurar manualmente el clúster de GKE para instalar lo siguiente:
cert-manager: Es un requisito previo parainjection-webhook.injection-webhook: Proporciona al SDK los metadatos necesarios. Admite cargas de trabajo comunes de AA de Kubernetes, comoJobSet,RayJobyLeaderWorkerSet.connection-operator: Para la generación de perfiles a pedido en GKE. Implementarconnection-operatorjunto coninjection-webhooken el clúster de GKE inicializará las solicitudes de generación de perfiles para segmentar los pods con servidores de generación de perfiles en ejecución cuando activas la captura a pedido.
Para obtener más información sobre la configuración de Google Kubernetes Engine, consulta Configura el clúster de Google Kubernetes Engine.
Cert-manager
cert-manager actúa como el controlador de certificados de tu clúster, lo que garantiza que tus aplicaciones sean seguras y que tus certificados nunca venzan de forma involuntaria.
Usa Helm para instalar lo siguiente:
helm repo add jetstack https://charts.jetstack.io
helm repo update
helm install \
cert-manager jetstack/cert-manager \
--namespace cert-manager \
--create-namespace \
--version v1.13.0 \
--set installCRDs=true \
--set global.leaderElection.namespace=cert-manager \
--timeout 10m
Injection-webhook
injection-webhook pasa metadatos al SDK. Usa helm upgrade --install para instalar por primera vez o actualizar una instalación existente.
helm upgrade --install mldiagnostics-injection-webhook \
--namespace=gke-mldiagnostics \
--create-namespace \
--version 0.25.0 \
oci://us-docker.pkg.dev/ai-on-gke/mldiagnostics-webhook-and-operator-helm/mldiagnostics-injection-webhook
Connection-operator
connection-operator habilita la generación de perfiles a pedido en GKE. Usa la siguiente tabla para encontrar la versión correcta de mldiagnostics-connection-operator:
| Versión de JAX | Versión del gráfico de Helm |
|---|---|
| 0.8.x | 0.24.0 |
| 0.9.x+ | 0.24.0+ |
Usa Helm para instalar la versión requerida.
Para JAX 0.8.x:
helm upgrade --install mldiagnostics-connection-operator \
--namespace=gke-mldiagnostics \
--create-namespace \
--version 0.24.0 \
oci://us-docker.pkg.dev/ai-on-gke/mldiagnostics-webhook-and-operator-helm/mldiagnostics-connection-operator \
--set 'mldiagnosticsConnectionOperator.controller.args={--metrics-bind-address=:8443,--health-probe-bind-address=:8081,--sidecar-timeout=65m,--disable-hostname-override}'
Para JAX 0.9.x+:
helm upgrade --install mldiagnostics-connection-operator \
--namespace=gke-mldiagnostics \
--create-namespace \
--version 0.24.0 \
oci://us-docker.pkg.dev/ai-on-gke/mldiagnostics-webhook-and-operator-helm/mldiagnostics-connection-operator
Etiqueta la carga de trabajo
Para la generación de perfiles programática, debes activar injection-webhook para
insertar metadatos en los pods. Etiqueta la carga de trabajo o su espacio de nombres con managed-mldiagnostics-gke=true antes de implementar la carga de trabajo:
Etiqueta una carga de trabajo. Etiqueta una carga de trabajo
Jobset,LWSoRayJob, lo que habilitará el webhook para esa carga de trabajo específica. El siguiente es un ejemplo para una carga de trabajoJobSet:apiVersion: jobset.x-k8s.io/v1alpha2 kind: JobSet metadata: name: single-host-tpu-v3-jobset2 namespace: default labels: managed-mldiagnostics-gke: "true"Etiqueta un espacio de nombres. Esto habilitará el webhook para todas las cargas de trabajo
Jobset,LWSyRayJobdentro de ese espacio de nombres.kubectl create namespace ai-workloads kubectl label namespace ai-workloads managed-mldiagnostics-gke=true