Conexión a un clúster de Kubernetes a un área de trabajo de Azure Machine Learning

SE APLICA A:Extensión ML de la CLI de Azure v2 (actual)SDK de Python azure-ai-ml v2 (actual)

Una vez implementada la extensión AML en el clúster de AKS o de Kubernetes para Arc, puede asociar el clúster de Kubernetes al área de trabajo de Azure Machine Learning y crear destinos de proceso para que los profesionales de ML los utilicen.

Requisitos previos

La asociación de un clúster de Kubernetes al área de trabajo de Azure Machine Learning puede admitir de forma flexible muchos escenarios diferentes. Por ejemplo, los escenarios compartidos con varias asociaciones, scripts de entrenamiento de modelos que acceden a los recursos de Azure y la configuración de autenticación del área de trabajo.

Aislamiento de cargas de trabajo y múltiples adjuntos

Un clúster a un área de trabajo, creando varios destinos de proceso

  • Si el clúster de Kubernetes fuera el mismo, es posible asociarlo a la misma área de trabajo varias veces y crear varios destinos de proceso para diferentes proyectos, equipos o cargas de trabajo.

Un clúster en varias áreas de trabajo

  • Si el clúster de Kubernetes es el mismo, también puede asociarlo a varias áreas de trabajo y que estas lo compartan.

Si tiene previsto tener destinos de proceso diferentes para proyectos o equipos distintos, especifique el espacio de nombres de Kubernetes existente en el clúster para que el destino de proceso aísle la carga de trabajo entre diferentes equipos o proyectos.

Importante

El espacio de nombres que tiene previsto especificar al adjuntar el clúster al área de trabajo de AML debería crearse previamente.

Acceso seguro al recurso de Azure desde el script de entrenamiento

Si necesita acceder al recurso de Azure de forma segura desde el script de entrenamiento, puede especificar una identidad administrada para el destino de proceso de Kubernetes durante la operación de asociación.

Adjuntar al área de trabajo con una identidad administrada asignada por el usuario

De manera predeterminada, el área de trabajo de Azure Machine Learning tiene una identidad administrada asignada por el sistema para acceder a los recursos de AML. Los pasos se completan si la configuración predeterminada asignada por el sistema está activada.

De lo contrario, si se especifica una identidad administrada asignada por el usuario en la creación de un área de trabajo de Azure Machine Learning, se deberán conceder manualmente las siguientes asignaciones de roles a la identidad administrada antes de adjuntar el proceso.

Nombre de recurso de Azure Roles que se van a asignar Descripción
Azure Relay Propietario de Azure Relay Solo aplicable para un clúster de Kubernetes habilitado para Arc. Azure Relay no se crea para el clúster de AKS sin Arc conectado.
Kubernetes: Azure Arc o Azure Kubernetes Service Lector
Kubernetes Extension Contributor
Administrador de clúster de Azure Kubernetes Service
Aplicable tanto al clúster de Kubernetes habilitado para Arc como al clúster de AKS.

Sugerencia

El recurso de Azure Relay se crea durante la implementación de la extensión en el mismo grupo de recursos que el clúster de Kubernetes habilitado para Arc.

Nota

  • Si el permiso de rol "Colaborador de extensión de Kubernetes" no estuviera disponible, los datos adjuntos del clúster producirán un error de "extensión no instalada".
  • Si el permiso de rol "Administrador de clústeres de Azure Kubernetes Service" no estuviera disponible, los datos adjuntos del clúster producirán un error de "servidor interno".

Cómo conectar un clúster de Kubernetes a un área de trabajo de Azure Machine Learning

Se admiten dos maneras de adjuntar un clúster de Kubernetes al área de trabajo de AML, mediante la CLI de Azure o la interfaz de usuario de Studio.

Los siguientes comandos v2 de CLI muestran cómo adjuntar un clúster de Kubernetes para AKS y habilitado para Azure Arc, y cómo usarlo para destino de proceso con la identidad administrada habilitada.

Clúster de AKS

az ml compute attach --resource-group <resource-group-name> --workspace-name <workspace-name> --type Kubernetes --name k8s-compute --resource-id "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.ContainerService/managedclusters/<cluster-name>" --identity-type SystemAssigned --namespace <Kubernetes namespace to run Azure Machine Learning workloads> --no-wait

Clúster de Kubernetes para Arc

az ml compute attach --resource-group <resource-group-name> --workspace-name <workspace-name> --type Kubernetes --name amlarc-compute --resource-id "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Kubernetes/connectedClusters/<cluster-name>" --user-assigned-identities "subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<identity-name>" --no-wait

Establezca el argumento --type en Kubernetes. Use el argumento identity_type para habilitar las identidades administradas SystemAssigned o UserAssigned.

Importante

--user-assigned-identities solo es necesario para las identidades administradas UserAssigned. Aunque puede proporcionar una lista de identidades administradas por el usuario separadas por comas, solo se usa la primera al adjuntar el clúster.

La asociación del proceso no creará automáticamente el espacio de nombres de Kubernetes ni validará si el espacio de nombres de Kubernetes existía. Debe comprobar que el espacio de nombres especificado existe en el clúster; de lo contrario, se producirá un error en las cargas de trabajo de AML enviadas a este proceso.

Asignación de una identidad administrada al destino de proceso

Una dificultad habitual entre los desarrolladores es la administración de los secretos y las credenciales que se usan para proteger la comunicación entre los distintos componentes de una solución. Las identidades administradas eliminan la necesidad de que los desarrolladores administren las credenciales.

Para acceder a Azure Container Registry (ACR) para encontrar una imagen de Docker, o a una cuenta de almacenamiento de los datos de entrenamiento, conecte el proceso de Kubernetes a una identidad administrada habilitada asignada por el sistema o por un usuario.

Identidad administrada asignada

  • Puede asignar una identidad administrada al proceso en el paso de asociación del proceso.

  • Si el proceso ya está asociado a una identidad, puede actualizar la configuración para usar una identidad administrada de Estudio de Azure Machine Learning.

    • Vaya a Azure Machine Learning Studio. Seleccione Proceso > Attached compute (Proceso asociado) y seleccione el proceso asociado.
    • Seleccione el icono de lápiz para editar la identidad administrada.

    Screenshot of updating identity of the Kubernetes compute from Azure portal.

    Screenshot of selecting identity of the Kubernetes compute from Azure portal.

Asignación de roles de Azure a una identidad administrada

Azure ofrece algunas formas de asignar roles a una identidad administrada.

Si usa Azure Portal para asignar roles y tiene una identidad administrada asignada por el sistema, Seleccionar usuario, Entidad de usuario o Entidad de servicio, puede buscar el nombre de la identidad seleccionando Seleccionar miembros. El nombre de la identidad debe tener el siguiente formato: <workspace name>/computes/<compute target name>.

Si tiene una identidad administrada asignada por un usuario, seleccione Identidad administrada para localizar la identidad de destino.

Puede usar la identidad administrada para extraer imágenes de Azure Container Registry. Conceda el rol AcrPull a la identidad administrada del proceso. Para obtener más información, vea Roles y permisos de Azure Container Registry.

Puede usar una identidad administrada para acceder a Azure Blob:

  • La identidad administrada del proceso debe tener concedido el rol Lector de datos de Storage Blob con fines de solo lectura.
  • La identidad administrada del proceso debe tener concedido el rol Colaborador de datos de Storage Blob con fines de lectura y escritura.

Pasos siguientes