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.
Instalar canalizaciones de Kubeflow
Kubeflow Pipelines () KFP es el componente de orquestación de canalizaciones
Puede implementar Kubeflow Pipelines (KFP) en un Amazon Elastic Kubernetes Service (Amazon) existente o crear un nuevo clúster de EKS Amazon. EKS Utilice un nodo de puerta de enlace para interactuar con el clúster. El nodo de puerta de enlace puede ser tu máquina local o una EC2 instancia de Amazon.
En la siguiente sección, se explican los pasos necesarios para instalar y configurar estos recursos.
Temas
Elegir una opción de instalación
Kubeflow Pipelines está disponible como un componente principal de la distribución completa de Kubeflow en una instalación independiente AWS o como una instalación independiente.
Seleccione la opción que se aplique a su caso de uso:
-
Kubeflow completo en el momento de la implementación AWS
Para usar otros componentes de Kubeflow además de las canalizaciones de Kubeflow, elija la implementación completa de distribución de AWS de Kubeflow
. -
Implementación independiente de canalizaciones de Kubeflow
Para usar las canalizaciones de Kubeflow sin los demás componentes de Kubeflow, instale las canalizaciones de Kubeflow de forma independiente.
Para instalar la versión completa de Kubeflow AWS, elige la opción de implementación básica de la guía de implementación de Kubeflow on AWS
En esta sección se supone que el usuario tiene permisos para crear roles y definir políticas para el rol.
Configurar un nodo de puerta de enlace
Puedes usar tu máquina local o una EC2 instancia de Amazon como nodo de puerta de enlace. Se utiliza un nodo de puerta de enlace para crear un EKS clúster de Amazon y acceder a la interfaz de usuario de Kubeflow Pipelines.
Realice los siguientes pasos para configurar su nodo.
-
Cree un nodo de puerta de enlace.
Puedes usar una EC2 instancia de Amazon existente o crear una nueva instancia con la última DLAMI versión de Ubuntu 18.04 siguiendo los pasos de Lanzamiento y configuración de un DLAMI.
-
Cree un IAM rol para conceder a su nodo de puerta de enlace acceso a AWS los recursos.
Cree un IAM rol con permisos para los siguientes recursos: CloudWatch AWS CloudFormation,IAM, AmazonEC2, Amazon S3, AmazonEKS.
Adjunta las siguientes políticas al IAM rol:
-
CloudWatchLogsFullAccess
-
IAMFullAccess
-
Amazon S3 FullAccess
-
Amazon EC2FullAccess
-
Una mazonEKSAdmin política (cree esta política con el esquema de Amazon EKS Identity Based Policy Examples)
Para obtener información sobre cómo añadir IAM permisos a un IAM rol, consulte Añadir y eliminar permisos de IAM identidad.
-
-
Instale las siguientes herramientas y clientes.
Instale y configure las siguientes herramientas y recursos en su nodo de puerta de enlace para acceder al EKS clúster y a la interfaz de KFP usuario (UI) de Amazon.
-
AWS CLI: la herramienta de línea de comandos para trabajar con AWS los servicios. Para obtener información sobre la configuración de AWS CLI , consulte Configuración del AWS CLI.
-
aws-iam-authenticatorversión 0.1.31 y versiones posteriores: herramienta que utiliza AWS IAM credenciales para autenticarse en un clúster de Kubernetes.
-
eksctl
versión superior a la 0.15: la herramienta de línea de comandos para trabajar con EKS clústeres de Amazon. -
kubectl
: la herramienta de línea de comandos para trabajar con clústeres de Kubernetes. La versión debe coincidir con su versión de Kubernetes dentro de una versión secundaria. -
pip install boto3
-
Configurar un EKS clúster de Amazon
-
Si no tienes un EKS clúster de Amazon existente, ejecuta los siguientes pasos desde la línea de comandos de tu nodo de puerta de enlace; de lo contrario, omite este paso.
-
Ejecuta el siguiente comando para crear un EKS clúster de Amazon con la versión 1.17 o superior. Reemplace
<clustername>
por el nombre del clúster.eksctl create cluster --name
<clustername>
--region us-east-1 --auto-kubeconfig --timeout=50m --managed --nodes=1 -
Cuando se complete la creación del clúster, asegúrese de tener acceso a él mediante una lista de los nodos del clúster.
kubectl get nodes
-
-
Asegúrese de que el contexto
kubectl
actual apunta al clúster con el siguiente comando. El contexto actual se marca con un asterisco (*) en la salida.kubectl config get-contexts CURRENT NAME CLUSTER *
<username>
@<clustername>
.us-east-1.eksctl.io<clustername>
.us-east-1.eksctl.io -
Si el clúster deseado no está configurado como el predeterminado actual, actualícelo con el siguiente comando.
aws eks update-kubeconfig --name
<clustername>
--region us-east-1
Instalar canalizaciones de Kubeflow
Ejecute los siguientes pasos desde la terminal de su nodo de puerta de enlace para instalar canalizaciones de Kubeflow en su clúster.
-
Instale todos los componentes cert-manager
. kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.9.1/cert-manager.yaml
-
Instale las canalizaciones de Kubeflow.
export PIPELINE_VERSION=2.0.0-alpha.5 kubectl apply -k "github.com/kubeflow/pipelines/manifests/kustomize/env/cert-manager/cluster-scoped-resources?ref=$KFP_VERSION" kubectl wait --for condition=established --timeout=60s crd/applications.app.k8s.io kubectl apply -k "github.com/kubeflow/pipelines/manifests/kustomize/env/cert-manager/dev?ref=$KFP_VERSION"
-
Asegúrese de que el servicio de canalizaciones de Kubeflow y otros recursos relacionados funcionen.
kubectl -n kubeflow get all | grep pipeline
El resultado debería tener el siguiente aspecto.
pod/ml-pipeline-6b88c67994-kdtjv 1/1 Running 0 2d pod/ml-pipeline-persistenceagent-64d74dfdbf-66stk 1/1 Running 0 2d pod/ml-pipeline-scheduledworkflow-65bdf46db7-5x9qj 1/1 Running 0 2d pod/ml-pipeline-ui-66cc4cffb6-cmsdb 1/1 Running 0 2d pod/ml-pipeline-viewer-crd-6db65ccc4-wqlzj 1/1 Running 0 2d pod/ml-pipeline-visualizationserver-9c47576f4-bqmx4 1/1 Running 0 2d service/ml-pipeline ClusterIP 10.100.170.170 <none> 8888/TCP,8887/TCP 2d service/ml-pipeline-ui ClusterIP 10.100.38.71 <none> 80/TCP 2d service/ml-pipeline-visualizationserver ClusterIP 10.100.61.47 <none> 8888/TCP 2d deployment.apps/ml-pipeline 1/1 1 1 2d deployment.apps/ml-pipeline-persistenceagent 1/1 1 1 2d deployment.apps/ml-pipeline-scheduledworkflow 1/1 1 1 2d deployment.apps/ml-pipeline-ui 1/1 1 1 2d deployment.apps/ml-pipeline-viewer-crd 1/1 1 1 2d deployment.apps/ml-pipeline-visualizationserver 1/1 1 1 2d replicaset.apps/ml-pipeline-6b88c67994 1 1 1 2d replicaset.apps/ml-pipeline-persistenceagent-64d74dfdbf 1 1 1 2d replicaset.apps/ml-pipeline-scheduledworkflow-65bdf46db7 1 1 1 2d replicaset.apps/ml-pipeline-ui-66cc4cffb6 1 1 1 2d replicaset.apps/ml-pipeline-viewer-crd-6db65ccc4 1 1 1 2d replicaset.apps/ml-pipeline-visualizationserver-9c47576f4 1 1 1 2d
Configura los permisos de acceso de tu canalización SageMaker
En esta sección, crearás una función de IAM ejecución que permita a los pods de Kubeflow Pipeline acceder a los SageMaker servicios.
Configuración de los SageMaker componentes (versión 2)
Para ejecutar la versión 2 de SageMaker Components para Kubeflow Pipelines, debes instalar SageMaker Operator for Kubernetes
importante
Siga esta sección si va a utilizar la implementación independiente de las canalizaciones de Kubeflow. Si utilizas la AWS distribución de la versión 1.6.0-aws-b1.0.0 o superior de Kubeflow, los componentes de la versión 2 ya están configurados. SageMaker
-
Instale Operator for Kubernetes para usar SageMaker los componentes de la versión 2. SageMaker
Siga la sección de configuración del tutorial Machine Learning with ACK SageMaker Controller
. -
Configura RBAC los permisos para la función de ejecución (cuenta de servicio) que utilizan los pods de Kubeflow Pipelines. En la implementación independiente de las canalizaciones de Kubeflow, las ejecuciones de la canalización se ejecutan en el espacio de nombres
kubeflow
mediante la cuenta de serviciopipeline-runner
.-
Crea una RoleBinding
que dé permiso a la cuenta de servicio para administrar SageMaker recursos personalizados. cat > manage_sagemaker_cr.yaml <<EOF apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: manage-sagemaker-cr namespace: kubeflow subjects: - kind: ServiceAccount name: pipeline-runner namespace: kubeflow roleRef: kind: ClusterRole name: ack-sagemaker-controller apiGroup: rbac.authorization.k8s.io EOF
kubectl apply -f manage_sagemaker_cr.yaml
-
Asegúrese de que el enlace de roles se haya creado ejecutando:
kubectl get rolebinding manage-sagemaker-cr -n kubeflow -o yaml
-
Configuración de los SageMaker componentes (versión 1)
Para ejecutar la versión 1 de SageMaker Components para Kubeflow Pipelines, es necesario acceder a los pods de Kubeflow Pipeline. SageMaker
importante
Sigue esta sección tanto si utilizas el Kubeflow completo durante la implementación como si utilizas Kubeflow Pilepines de forma independiente. AWS
Para crear una función de IAM ejecución a la que se conceda acceso a los pods de canalización de Kubeflow, sigue estos pasos: SageMaker
-
Exporta el nombre del clúster (p. ej. my-cluster-name) y la región del clúster (p. ej., us-east-1).
export CLUSTER_NAME=
my-cluster-name
export CLUSTER_REGION=us-east-1
-
Exporte el espacio de nombres y el nombre de la cuenta de servicio a su instalación.
-
Para obtener el Kubeflow completo durante la AWS instalación, exporta tu perfil
namespace
(por ejemplo kubeflow-user-example-com) y el editor predeterminado como cuenta de servicio.export NAMESPACE=
kubeflow-user-example-com
export KUBEFLOW_PIPELINE_POD_SERVICE_ACCOUNT=default-editor -
Para la implementación independiente de las canalizaciones, exporte kubeflow como el
namespace
y pipeline-runner como la cuenta de servicio.export NAMESPACE=kubeflow export KUBEFLOW_PIPELINE_POD_SERVICE_ACCOUNT=pipeline-runner
-
-
Crea un IAMOIDCproveedor para el EKS clúster de Amazon con el siguiente comando.
eksctl utils associate-iam-oidc-provider --cluster ${CLUSTER_NAME} \ --region ${CLUSTER_REGION} --approve
-
Crea una función de IAM ejecución para que los KFP pods accedan a AWS los servicios (SageMaker, CloudWatch).
eksctl create iamserviceaccount \ --name ${KUBEFLOW_PIPELINE_POD_SERVICE_ACCOUNT} \ --namespace ${NAMESPACE} --cluster ${CLUSTER_NAME} \ --region ${CLUSTER_REGION} \ --attach-policy-arn arn:aws:iam::aws:policy/AmazonSageMakerFullAccess \ --attach-policy-arn arn:aws:iam::aws:policy/CloudWatchLogsFullAccess \ --override-existing-serviceaccounts \ --approve
Una vez que tus permisos de canalización estén configurados para acceder a la versión 1 de SageMaker Components, sigue la guía sobre los SageMaker componentes de las canalizaciones de Kubeflow que se encuentra en la documentación de Kubeflow
Accede a la interfaz de usuario (panel de control de KFP Kubeflow)
La interfaz de usuario de las canalizaciones de Kubeflow se utiliza para administrar y realizar un seguimiento de los experimentos, los trabajos y las ejecuciones en el clúster. Para obtener instrucciones sobre cómo acceder a la interfaz de usuario de las canalizaciones de Kubeflow desde su nodo de puerta de enlace, siga los pasos correspondientes a la opción de implementación en esta sección.
Sigue las instrucciones del AWS sitio web de Kubeflow
Use el reenvío de puertos para acceder a la interfaz de usuario de canalizaciones de Kubeflow desde su nodo de puerta de enlace según estos pasos.
Configura el reenvío de puertos al servicio de interfaz de usuario KFP
Ejecute el siguiente comando desde la línea de comandos de su nodo de puerta de enlace.
-
Compruebe que el servicio de KFP interfaz de usuario se esté ejecutando mediante el siguiente comando.
kubectl -n kubeflow get service ml-pipeline-ui NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE ml-pipeline-ui ClusterIP 10.100.38.71 <none> 80/TCP 2d22h
-
Ejecute el siguiente comando para configurar el reenvío de puertos al servicio de KFP interfaz de usuario. Esto reenvía la KFP interfaz de usuario al puerto 8080 del nodo de la puerta de enlace y le permite acceder a la KFP interfaz de usuario desde el navegador.
kubectl port-forward -n kubeflow service/ml-pipeline-ui 8080:80
El reenvío de puertos desde su equipo remoto se interrumpe si no hay actividad. Vuelva a ejecutar este comando si su panel no puede obtener registros o actualizaciones. Si los comandos devuelven un error, asegúrese de que no haya ningún proceso en ejecución en el puerto que está intentando utilizar.
Acceda al servicio de interfaz de usuario KFP
El método de acceso a la KFP interfaz de usuario depende del tipo de nodo de la puerta de enlace.
-
Equipo local como nodo de puerta de enlace:
-
Acceda al panel de su navegador de la siguiente manera:
http://localhost:8080
-
Seleccione Canalizaciones para acceder a la interfaz de usuario de las canalizaciones.
-
-
EC2Instancia de Amazon como nodo de puerta de enlace:
-
Debes configurar un SSH túnel en tu EC2 instancia de Amazon para acceder al panel de control de Kubeflow desde el navegador de tu máquina local.
Desde una nueva sesión de terminal en su equipo local, ejecute lo siguiente.
<public-DNS-of-gateway-node>
Sustitúyala por la dirección IP de la instancia que se encuentra en la EC2 consola de Amazon. También puedes usar el públicoDNS. Reemplace<path_to_key>
por la ruta de acceso a la clave pem utilizada para acceder al nodo de puerta de enlace.public_DNS_address=
<public-DNS-of-gateway-node>
key=<path_to_key>
on Ubuntu: ssh -i ${key} -L 9000:localhost:8080 ubuntu@${public_DNS_address} or on Amazon Linux: ssh -i ${key} -L 9000:localhost:8080 ec2-user@${public_DNS_address} -
Acceda al panel de su navegador.
http://localhost:9000
-
Elige Pipelines para acceder a la KFP interfaz de usuario.
-
(Opcional) Concede a las instancias de SageMaker notebook acceso a Amazon EKS y ejecuta KFP pipelines desde tu notebook.
Una instancia de SageMaker notebook es una instancia de EC2 cómputo de Amazon totalmente gestionada que ejecuta la aplicación Jupyter Notebook. Puede usar una instancia de bloc de notas para crear y administrar los cuadernos de Jupyter y, a continuación, definir, compilar, implementar y ejecutar sus KFP canalizaciones utilizando o el. AWS SDK for Python (Boto3) KFP CLI
-
Siga los pasos que se indican en Crear una instancia de SageMaker Notebook para crear su instancia de Notebook y, a continuación, adjunte la
S3FullAccess
política a su función de ejecución. IAM -
Desde la línea de comandos de su nodo de puerta de enlace, ejecute el siguiente comando para recuperar el IAM rol ARN de la instancia de notebook que creó. Reemplace
<instance-name>
por el nombre de la instancia.aws sagemaker describe-notebook-instance --notebook-instance-name
<instance-name>
--region<region>
--output text --query 'RoleArn'Este comando genera el IAM rol ARN en el
arn:aws:iam::<account-id>:role/<role-name>
formato. Toma nota de estoARN. -
Ejecute este comando para adjuntar las siguientes políticas (AmazonSageMakerFullAccess, A mazonEKSWorkerNodePolicy, AmazonS3FullAccess) a esta IAM función.
<role-name>
Sustitúyalo por el<role-name>
de su. ARNaws iam attach-role-policy --role-name
<role-name>
--policy-arn arn:aws:iam::aws:policy/AmazonSageMakerFullAccess aws iam attach-role-policy --role-name<role-name>
--policy-arn arn:aws:iam::aws:policy/AmazonEKSWorkerNodePolicy aws iam attach-role-policy --role-name<role-name>
--policy-arn arn:aws:iam::aws:policy/AmazonS3FullAccess -
EKSLos clústeres de Amazon utilizan IAM roles para controlar el acceso al clúster. Las reglas se implementan en un mapa de configuración denominado
aws-auth
.eksctl
proporciona comandos para leer y editar el mapa de configuraciónaws-auth
. Solo los usuarios que tienen acceso al clúster pueden editar este mapa de configuración.system:masters
es uno de los grupos de usuarios predeterminados con permisos de superusuario para el clúster. Agregue su usuario a este grupo o cree un grupo con permisos más restrictivos. -
Implemente el rol en el clúster ejecutando el siguiente comando.
<IAM-Role-arn>
ARNSustitúyalo por el del IAM rol.<your_username>
puede ser cualquier nombre de usuario único.eksctl create iamidentitymapping \ --cluster
<cluster-name>
\ --arn<IAM-Role-arn>
\ --group system:masters \ --username<your-username>
\ --region<region>
-
Abre un cuaderno de Jupyter en tu SageMaker instancia y ejecuta el siguiente comando para asegurarte de que tiene acceso al clúster.
aws eks --region
<region>
update-kubeconfig --name<cluster-name>
kubectl -n kubeflow get all | grep pipeline