View a markdown version of this page

Inferencia de errores de instalación del operador mediante CLI AWS - Amazon SageMaker AI

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Inferencia de errores de instalación del operador mediante CLI AWS

Descripción general: Al instalar el operador de inferencia a través de la AWS CLI, la instalación del complemento puede fallar debido a la falta de dependencias. En esta sección se describen los escenarios de error más comunes en la instalación de la CLI y sus soluciones.

La instalación del complemento de inferencia falló debido a la falta de controladores CSI

Problema: Se produce un error al crear el complemento del operador de inferencia porque las dependencias del controlador CSI necesarias no están instaladas en el clúster EKS.

Síntomas y diagnóstico:

Mensajes de error:

Los siguientes errores aparecen en los registros de creación de complementos o en los registros de operadores de inferencia:

S3 CSI driver not installed (missing CSIDriver s3.csi.aws.com). Please install the required CSI driver and see the troubleshooting guide for more information. FSx CSI driver not installed (missing CSIDriver fsx.csi.aws.com). Please install the required CSI driver and see the troubleshooting guide for more information.

Pasos de diagnóstico:

  1. Compruebe si los controladores CSI están instalados:

    # Check for S3 CSI driver kubectl get csidriver s3.csi.aws.com kubectl get pods -n kube-system | grep mountpoint # Check for FSx CSI driver kubectl get csidriver fsx.csi.aws.com kubectl get pods -n kube-system | grep fsx
  2. Compruebe el estado del complemento EKS:

    # List all add-ons aws eks list-addons --cluster-name $EKS_CLUSTER_NAME --region $REGION # Check specific CSI driver add-ons aws eks describe-addon --cluster-name $EKS_CLUSTER_NAME --addon-name aws-mountpoint-s3-csi-driver --region $REGION 2>/dev/null || echo "S3 CSI driver not installed" aws eks describe-addon --cluster-name $EKS_CLUSTER_NAME --addon-name aws-fsx-csi-driver --region $REGION 2>/dev/null || echo "FSx CSI driver not installed"
  3. Compruebe el estado del complemento del operador de inferencia:

    aws eks describe-addon \ --cluster-name $EKS_CLUSTER_NAME \ --addon-name amazon-sagemaker-hyperpod-inference \ --region $REGION \ --query "addon.{Status:status,Health:health,Issues:issues}" \ --output json

Solución:

Paso 1: Instale el controlador CSI de S3 que falta

  1. Cree el rol de IAM para el controlador CSI de S3 (si aún no lo ha creado):

    # Set up service account role ARN (from installation steps) export S3_CSI_ROLE_ARN=$(aws iam get-role --role-name $S3_CSI_ROLE_NAME --query 'Role.Arn' --output text 2>/dev/null || echo "Role not found") echo "S3 CSI Role ARN: $S3_CSI_ROLE_ARN"
  2. Instale el complemento del controlador CSI de S3:

    aws eks create-addon \ --cluster-name $EKS_CLUSTER_NAME \ --addon-name aws-mountpoint-s3-csi-driver \ --addon-version v1.14.1-eksbuild.1 \ --service-account-role-arn $S3_CSI_ROLE_ARN \ --region $REGION
  3. Verifique la instalación del controlador CSI de S3:

    # Wait for add-on to be active aws eks wait addon-active --cluster-name $EKS_CLUSTER_NAME --addon-name aws-mountpoint-s3-csi-driver --region $REGION # Verify CSI driver is available kubectl get csidriver s3.csi.aws.com kubectl get pods -n kube-system | grep mountpoint

Paso 2: Instale el controlador FSx CSI que falta

  1. Cree el rol de IAM para el controlador FSx CSI (si aún no lo ha creado):

    # Set up service account role ARN (from installation steps) export FSX_CSI_ROLE_ARN=$(aws iam get-role --role-name $FSX_CSI_ROLE_NAME --query 'Role.Arn' --output text 2>/dev/null || echo "Role not found") echo "FSx CSI Role ARN: $FSX_CSI_ROLE_ARN"
  2. Instale el complemento FSx del controlador CSI:

    aws eks create-addon \ --cluster-name $EKS_CLUSTER_NAME \ --addon-name aws-fsx-csi-driver \ --addon-version v1.6.0-eksbuild.1 \ --service-account-role-arn $FSX_CSI_ROLE_ARN \ --region $REGION # Wait for add-on to be active aws eks wait addon-active --cluster-name $EKS_CLUSTER_NAME --addon-name aws-fsx-csi-driver --region $REGION # Verify FSx CSI driver is running kubectl get pods -n kube-system | grep fsx

Paso 3: Verificar todas las dependencias

Tras instalar las dependencias que faltan, compruebe que se estén ejecutando correctamente antes de volver a intentar instalar el operador de inferencia:

# Check all required add-ons are active aws eks describe-addon --cluster-name $EKS_CLUSTER_NAME --addon-name aws-mountpoint-s3-csi-driver --region $REGION aws eks describe-addon --cluster-name $EKS_CLUSTER_NAME --addon-name aws-fsx-csi-driver --region $REGION aws eks describe-addon --cluster-name $EKS_CLUSTER_NAME --addon-name metrics-server --region $REGION aws eks describe-addon --cluster-name $EKS_CLUSTER_NAME --addon-name cert-manager --region $REGION # Verify all pods are running kubectl get pods -n kube-system | grep -E "(mountpoint|fsx|metrics-server)" kubectl get pods -n cert-manager

Faltan las definiciones de recursos personalizados de inferencia durante la implementación del modelo

Problema: Faltan las definiciones de recursos personalizadas (CRDs) al intentar crear implementaciones de modelos. Este problema se produce al instalar y eliminar previamente el complemento de inferencia sin limpiar las implementaciones de modelos que tienen finalizadores.

Síntomas y diagnóstico:

Causa raíz:

Si elimina el complemento de inferencia sin eliminar primero todas las implementaciones del modelo, los recursos personalizados con finalizadores permanecen en el clúster. Estos finalizadores deben completarse antes de que pueda eliminar el. CRDs El proceso de eliminación del complemento no espera a que se complete la eliminación del CRD, lo que hace que el CRDs complemento permanezca en un estado de finalización e impide nuevas instalaciones.

Para diagnosticar este problema

  1. Compruebe si CRDs existen.

    kubectl get crd | grep inference.sagemaker.aws.amazon.com
  2. Comprueba si hay recursos personalizados atascados.

    # Check for JumpStartModel resources kubectl get jumpstartmodels -A # Check for InferenceEndpointConfig resources kubectl get inferenceendpointconfigs -A
  3. Inspeccione los finalizadores para ver si los recursos están atascados.

    # Example for a specific JumpStartModel kubectl get jumpstartmodels <model-name> -n <namespace> -o jsonpath='{.metadata.finalizers}' # Example for a specific InferenceEndpointConfig kubectl get inferenceendpointconfigs <config-name> -n <namespace> -o jsonpath='{.metadata.finalizers}'

Solución:

Elimine manualmente los finalizadores de todas las implementaciones de modelos que no se eliminaron al eliminar el complemento de inferencia. Complete los siguientes pasos para cada recurso personalizado bloqueado.

Para eliminar los finalizadores de los recursos JumpStartModel

  1. Enumera todos los JumpStartModel recursos en todos los espacios de nombres.

    kubectl get jumpstartmodels -A
  2. Para cada JumpStartModel recurso, elimina los finalizadores parcheando el recurso para establecer metadata.finalizers en una matriz vacía.

    kubectl patch jumpstartmodels <model-name> -n <namespace> -p '{"metadata":{"finalizers":[]}}' --type=merge

    En el siguiente ejemplo, se muestra cómo aplicar un parche a un recurso denominado kv-l1-only.

    kubectl patch jumpstartmodels kv-l1-only -n default -p '{"metadata":{"finalizers":[]}}' --type=merge
  3. Compruebe que se haya eliminado la instancia del modelo.

    kubectl get jumpstartmodels -A

    Cuando se hayan limpiado todos los recursos, debería ver el siguiente resultado.

    Error from server (NotFound): Unable to list "inference.sagemaker.aws.amazon.com/v1, Resource=jumpstartmodels": the server could not find the requested resource (get jumpstartmodels.inference.sagemaker.aws.amazon.com)
  4. Compruebe que se ha quitado el JumpStartModel CRD.

    kubectl get crd | grep jumpstartmodels.inference.sagemaker.aws.amazon.com

    Si el CRD se ha eliminado correctamente, este comando no devuelve ningún resultado.

Para eliminar los finalizadores de los recursos InferenceEndpointConfig

  1. Enumera todos los InferenceEndpointConfig recursos en todos los espacios de nombres.

    kubectl get inferenceendpointconfigs -A
  2. Para cada InferenceEndpointConfig recurso, elimina los finalizadores.

    kubectl patch inferenceendpointconfigs <config-name> -n <namespace> -p '{"metadata":{"finalizers":[]}}' --type=merge

    El siguiente ejemplo muestra cómo aplicar un parche a un recurso denominado. my-inference-config

    kubectl patch inferenceendpointconfigs my-inference-config -n default -p '{"metadata":{"finalizers":[]}}' --type=merge
  3. Compruebe que se haya eliminado la instancia de configuración.

    kubectl get inferenceendpointconfigs -A

    Cuando se hayan limpiado todos los recursos, deberías ver el siguiente resultado.

    Error from server (NotFound): Unable to list "inference.sagemaker.aws.amazon.com/v1, Resource=inferenceendpointconfigs": the server could not find the requested resource (get inferenceendpointconfigs.inference.sagemaker.aws.amazon.com)
  4. Compruebe que se ha quitado el InferenceEndpointConfig CRD.

    kubectl get crd | grep inferenceendpointconfigs.inference.sagemaker.aws.amazon.com

    Si el CRD se ha eliminado correctamente, este comando no devuelve ningún resultado.

Para volver a instalar el complemento de inferencia

Tras limpiar todos los recursos atascados y comprobar que CRDs se han eliminado, vuelva a instalar el complemento de inferencia. Para obtener más información, consulte Instalación del operador de inferencia con el complemento EKS.

Verificación:

  1. Compruebe que el complemento de inferencia se haya instalado correctamente.

    aws eks describe-addon \ --cluster-name $EKS_CLUSTER_NAME \ --addon-name amazon-sagemaker-hyperpod-inference \ --region $REGION \ --query "addon.{Status:status,Health:health}" \ --output table

    El Estado debe ser ACTIVO y la Salud debe estar SANA.

  2. Compruebe que CRDs estén correctamente instalados.

    kubectl get crd | grep inference.sagemaker.aws.amazon.com

    Debería ver lo relacionado con las inferencias en la CRDs lista de resultados.

  3. Pruebe a crear un nuevo modelo de implementación para confirmar que el problema está resuelto.

    # Create a test deployment using your preferred method kubectl apply -f <your-model-deployment.yaml>

Prevención:

Para evitar este problema, complete los siguientes pasos antes de desinstalar el complemento de inferencia.

  1. Elimine todas las implementaciones de modelos.

    # Delete all JumpStartModel resources kubectl delete jumpstartmodels --all -A # Delete all InferenceEndpointConfig resources kubectl delete inferenceendpointconfigs --all -A # Wait for all resources to be fully deleted kubectl get jumpstartmodels -A kubectl get inferenceendpointconfigs -A
  2. Compruebe que se hayan eliminado todos los recursos personalizados.

  3. Tras confirmar que se han limpiado todos los recursos, elimine el complemento de inferencia.

No se pudo instalar el complemento de inferencia porque faltaba un administrador de certificados

Problema: La creación del complemento del operador de inferencia falla porque el complemento EKS del administrador de certificados no está instalado, por lo que faltan las definiciones de recursos personalizadas (). CRDs

Síntomas y diagnóstico:

Mensajes de error:

Los siguientes errores aparecen en los registros de creación de complementos o en los registros de operadores de inferencia:

Missing required CRD: certificaterequests.cert-manager.io. The cert-manager add-on is not installed. Please install cert-manager and see the troubleshooting guide for more information.

Pasos de diagnóstico:

  1. Compruebe si el administrador de certificados está instalado:

    # Check for cert-manager CRDs kubectl get crd | grep cert-manager kubectl get pods -n cert-manager # Check EKS add-on status aws eks describe-addon --cluster-name $EKS_CLUSTER_NAME --addon-name cert-manager --region $REGION 2>/dev/null || echo "Cert-manager not installed"
  2. Compruebe el estado del complemento del operador de inferencia:

    aws eks describe-addon \ --cluster-name $EKS_CLUSTER_NAME \ --addon-name amazon-sagemaker-hyperpod-inference \ --region $REGION \ --query "addon.{Status:status,Health:health,Issues:issues}" \ --output json

Solución:

Paso 1: Instalar el complemento cert-manager

  1. Instale el complemento EKS de cert-manager:

    aws eks create-addon \ --cluster-name $EKS_CLUSTER_NAME \ --addon-name cert-manager \ --addon-version v1.18.2-eksbuild.2 \ --region $REGION
  2. Compruebe la instalación de cert-manager:

    # Wait for add-on to be active aws eks wait addon-active --cluster-name $EKS_CLUSTER_NAME --addon-name cert-manager --region $REGION # Verify cert-manager pods are running kubectl get pods -n cert-manager # Verify CRDs are installed kubectl get crd | grep cert-manager | wc -l # Expected: Should show multiple cert-manager CRDs

Paso 2: Vuelva a intentar instalar el operador de inferencia

  1. Una vez instalado el administrador de certificados, vuelva a intentar instalar el operador de inferencia:

    # Delete the failed add-on if it exists aws eks delete-addon \ --cluster-name $EKS_CLUSTER_NAME \ --addon-name amazon-sagemaker-hyperpod-inference \ --region $REGION 2>/dev/null || echo "Add-on not found, proceeding with installation" # Wait for deletion to complete sleep 30 # Reinstall the inference operator add-on aws eks create-addon \ --cluster-name $EKS_CLUSTER_NAME \ --addon-name amazon-sagemaker-hyperpod-inference \ --addon-version v1.0.0-eksbuild.1 \ --configuration-values file://addon-config.json \ --region $REGION
  2. Supervise la instalación:

    # Check installation status aws eks describe-addon \ --cluster-name $EKS_CLUSTER_NAME \ --addon-name amazon-sagemaker-hyperpod-inference \ --region $REGION \ --query "addon.{Status:status,Health:health}" \ --output table # Verify inference operator pods are running kubectl get pods -n hyperpod-inference-system

La instalación del complemento de inferencia falló debido a la falta del controlador ALB

Problema: La creación del complemento del operador de inferencia falla porque el controlador de AWS Load Balancer no está instalado o no está configurado correctamente para el complemento de inferencia.

Síntomas y diagnóstico:

Mensajes de error:

Los siguientes errores aparecen en los registros de creación de complementos o en los registros de operadores de inferencia:

ALB Controller not installed (missing aws-load-balancer-controller pods). Please install the Application Load Balancer Controller and see the troubleshooting guide for more information.

Pasos de diagnóstico:

  1. Compruebe si el controlador ALB está instalado:

    # Check for ALB Controller pods kubectl get pods -n kube-system | grep aws-load-balancer-controller kubectl get pods -n hyperpod-inference-system | grep aws-load-balancer-controller # Check ALB Controller service account kubectl get serviceaccount aws-load-balancer-controller -n kube-system 2>/dev/null || echo "ALB Controller service account not found" kubectl get serviceaccount aws-load-balancer-controller -n hyperpod-inference-system 2>/dev/null || echo "ALB Controller service account not found in inference namespace"
  2. Compruebe la configuración del complemento del operador de inferencia:

    aws eks describe-addon \ --cluster-name $EKS_CLUSTER_NAME \ --addon-name amazon-sagemaker-hyperpod-inference \ --region $REGION \ --query "addon.{Status:status,Health:health,ConfigurationValues:configurationValues}" \ --output json

Solución:

Elija una de las siguientes opciones en función de su configuración:

Opción 1: dejar que el complemento de inferencia instale el controlador ALB (recomendado)

  • Asegúrese de que la función ALB se haya creado y configurado correctamente en la configuración del complemento:

    # Verify ALB role exists export ALB_ROLE_ARN=$(aws iam get-role --role-name alb-role --query 'Role.Arn' --output text 2>/dev/null || echo "Role not found") echo "ALB Role ARN: $ALB_ROLE_ARN" # Update your addon-config.json to enable ALB cat > addon-config.json << EOF { "executionRoleArn": "$EXECUTION_ROLE_ARN", "tlsCertificateS3Bucket": "$BUCKET_NAME", "hyperpodClusterArn": "$HYPERPOD_CLUSTER_ARN", "alb": { "enabled": true, "serviceAccount": { "create": true, "roleArn": "$ALB_ROLE_ARN" } }, "keda": { "auth": { "aws": { "irsa": { "roleArn": "$KEDA_ROLE_ARN" } } } } } EOF

Opción 2: utilice la instalación existente del controlador ALB

  • Si ya tiene instalado el controlador ALB, configure el complemento para usar la instalación existente:

    # Update your addon-config.json to disable ALB installation cat > addon-config.json << EOF { "executionRoleArn": "$EXECUTION_ROLE_ARN", "tlsCertificateS3Bucket": "$BUCKET_NAME", "hyperpodClusterArn": "$HYPERPOD_CLUSTER_ARN", "alb": { "enabled": false }, "keda": { "auth": { "aws": { "irsa": { "roleArn": "$KEDA_ROLE_ARN" } } } } } EOF

Paso 3: Vuelva a intentar instalar el operador de inferencia

  1. Vuelva a instalar el complemento del operador de inferencia con la configuración actualizada:

    # Delete the failed add-on if it exists aws eks delete-addon \ --cluster-name $EKS_CLUSTER_NAME \ --addon-name amazon-sagemaker-hyperpod-inference \ --region $REGION 2>/dev/null || echo "Add-on not found, proceeding with installation" # Wait for deletion to complete sleep 30 # Reinstall with updated configuration aws eks create-addon \ --cluster-name $EKS_CLUSTER_NAME \ --addon-name amazon-sagemaker-hyperpod-inference \ --addon-version v1.0.0-eksbuild.1 \ --configuration-values file://addon-config.json \ --region $REGION
  2. Compruebe que el controlador ALB esté funcionando:

    # Check ALB Controller pods kubectl get pods -n hyperpod-inference-system | grep aws-load-balancer-controller kubectl get pods -n kube-system | grep aws-load-balancer-controller # Check service account annotations kubectl describe serviceaccount aws-load-balancer-controller -n hyperpod-inference-system 2>/dev/null kubectl describe serviceaccount aws-load-balancer-controller -n kube-system 2>/dev/null

La instalación del complemento de inferencia falló debido a la falta del operador KEDA

Problema: La creación del complemento del operador de inferencia falla porque el operador KEDA (escalador automático basado en eventos de Kubernetes) no está instalado o no está configurado correctamente para el complemento de inferencia.

Síntomas y diagnóstico:

Mensajes de error:

Los siguientes errores aparecen en los registros de creación de complementos o en los registros de operadores de inferencia:

KEDA operator not installed (missing keda-operator pods). KEDA can be installed separately in any namespace or via the Inference addon.

Pasos de diagnóstico:

  1. Compruebe si el operador KEDA está instalado:

    # Check for KEDA operator pods in common namespaces kubectl get pods -n keda-system | grep keda-operator 2>/dev/null || echo "KEDA not found in keda-system namespace" kubectl get pods -n kube-system | grep keda-operator 2>/dev/null || echo "KEDA not found in kube-system namespace" kubectl get pods -n hyperpod-inference-system | grep keda-operator 2>/dev/null || echo "KEDA not found in inference namespace" # Check for KEDA CRDs kubectl get crd | grep keda 2>/dev/null || echo "KEDA CRDs not found" # Check KEDA service account kubectl get serviceaccount keda-operator -A 2>/dev/null || echo "KEDA service account not found"
  2. Compruebe la configuración del complemento del operador de inferencia:

    aws eks describe-addon \ --cluster-name $EKS_CLUSTER_NAME \ --addon-name amazon-sagemaker-hyperpod-inference \ --region $REGION \ --query "addon.{Status:status,Health:health,ConfigurationValues:configurationValues}" \ --output json

Solución:

Elija una de las siguientes opciones en función de su configuración:

Opción 1: dejar que el complemento de inferencia instale KEDA (recomendado)

  • Asegúrese de que el rol KEDA esté creado y configurado correctamente en la configuración del complemento:

    # Verify KEDA role exists export KEDA_ROLE_ARN=$(aws iam get-role --role-name keda-operator-role --query 'Role.Arn' --output text 2>/dev/null || echo "Role not found") echo "KEDA Role ARN: $KEDA_ROLE_ARN" # Update your addon-config.json to enable KEDA cat > addon-config.json << EOF { "executionRoleArn": "$EXECUTION_ROLE_ARN", "tlsCertificateS3Bucket": "$BUCKET_NAME", "hyperpodClusterArn": "$HYPERPOD_CLUSTER_ARN", "alb": { "serviceAccount": { "create": true, "roleArn": "$ALB_ROLE_ARN" } }, "keda": { "enabled": true, "auth": { "aws": { "irsa": { "roleArn": "$KEDA_ROLE_ARN" } } } } } EOF

Opción 2: utilice una instalación de KEDA existente

  • Si ya tiene KEDA instalado, configure el complemento para que utilice la instalación existente:

    # Update your addon-config.json to disable KEDA installation cat > addon-config.json << EOF { "executionRoleArn": "$EXECUTION_ROLE_ARN", "tlsCertificateS3Bucket": "$BUCKET_NAME", "hyperpodClusterArn": "$HYPERPOD_CLUSTER_ARN", "alb": { "serviceAccount": { "create": true, "roleArn": "$ALB_ROLE_ARN" } }, "keda": { "enabled": false } } EOF

Paso 3: Vuelva a intentar instalar el operador de inferencia

  1. Vuelva a instalar el complemento del operador de inferencia con la configuración actualizada:

    # Delete the failed add-on if it exists aws eks delete-addon \ --cluster-name $EKS_CLUSTER_NAME \ --addon-name amazon-sagemaker-hyperpod-inference \ --region $REGION 2>/dev/null || echo "Add-on not found, proceeding with installation" # Wait for deletion to complete sleep 30 # Reinstall with updated configuration aws eks create-addon \ --cluster-name $EKS_CLUSTER_NAME \ --addon-name amazon-sagemaker-hyperpod-inference \ --addon-version v1.0.0-eksbuild.1 \ --configuration-values file://addon-config.json \ --region $REGION
  2. Compruebe que KEDA esté funcionando:

    # Check KEDA pods kubectl get pods -n hyperpod-inference-system | grep keda kubectl get pods -n kube-system | grep keda kubectl get pods -n keda-system | grep keda 2>/dev/null # Check KEDA CRDs kubectl get crd | grep scaledobjects kubectl get crd | grep scaledjobs # Check KEDA service account annotations kubectl describe serviceaccount keda-operator -n hyperpod-inference-system 2>/dev/null kubectl describe serviceaccount keda-operator -n kube-system 2>/dev/null kubectl describe serviceaccount keda-operator -n keda-system 2>/dev/null