

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.

# Antiguos operadores de SageMaker IA para Kubernetes
<a name="kubernetes-sagemaker-operators-end-of-support"></a>

Esta sección se basa en la versión original de [SageMaker AI Operators](https://github.com/aws/amazon-sagemaker-operator-for-k8s) para Kubernetes.

**importante**  
Vamos a detener el desarrollo y el soporte técnico de la versión original de [ SageMaker Operators](https://github.com/aws/amazon-sagemaker-operator-for-k8s/tree/master) for Kubernetes.  
Si actualmente utilizas la versión `v1.2.2` o anterior de [ SageMaker Operators for Kubernetes](https://github.com/aws/amazon-sagemaker-operator-for-k8s/tree/master), te recomendamos migrar tus recursos al [controlador de servicios ACK](https://github.com/aws-controllers-k8s/sagemaker-controller) para Amazon. SageMaker [El controlador de servicios ACK es una nueva generación de SageMaker operadores para Kubernetes basada en Controllers for Kubernetes (ACK).AWS](https://aws-controllers-k8s.github.io/community/)  
Para obtener información sobre los pasos de migración, consulte [Migrar recursos a los operadores más recientes](kubernetes-sagemaker-operators-migrate.md).  
Para obtener respuestas a las preguntas frecuentes sobre la finalización del soporte de la versión original de Operators for Kubernetes, consulte SageMaker [Anunciamos el fin del soporte de la versión original de SageMaker AI Operators para Kubernetes](kubernetes-sagemaker-operators-eos-announcement.md)

**Topics**
+ [Instale operadores de SageMaker IA para Kubernetes](#kubernetes-sagemaker-operators-eos-install)
+ [Utilice Amazon SageMaker AI Jobs](kubernetes-sagemaker-jobs.md)
+ [Migrar recursos a los operadores más recientes](kubernetes-sagemaker-operators-migrate.md)
+ [Anunciamos el fin del soporte de la versión original de SageMaker AI Operators para Kubernetes](kubernetes-sagemaker-operators-eos-announcement.md)

## Instale operadores de SageMaker IA para Kubernetes
<a name="kubernetes-sagemaker-operators-eos-install"></a>

Siga los siguientes pasos para instalar y usar SageMaker AI Operators for Kubernetes para entrenar, ajustar e implementar modelos de aprendizaje automático con Amazon AI. SageMaker 

**Topics**
+ [Configuración basada en roles de IAM e implementación de operadores](#iam-role-based-setup-and-operator-deployment)
+ [Eliminar recursos](#cleanup-operator-resources)
+ [Eliminación de operadores](#delete-operators)
+ [Resolución de problemas](#troubleshooting)
+ [Imágenes y SMLlogs en cada región](#images-and-smlogs-in-each-region)

### Configuración basada en roles de IAM e implementación de operadores
<a name="iam-role-based-setup-and-operator-deployment"></a>

En las siguientes secciones se describen los pasos para configurar e implementar la versión original del operador.

**aviso**  
**Recordatorio:** Los siguientes pasos no permiten instalar la versión más reciente de SageMaker AI Operators for Kubernetes. Para instalar los nuevos operadores de ACK-based SageMaker IA para Kubernetes, consulte. [Los últimos operadores de SageMaker IA para Kubernetes](kubernetes-sagemaker-operators-ack.md)

#### Requisitos previos
<a name="prerequisites"></a>

En esta guía se supone que se han completado los siguientes requisitos previos: 
+ Ha instalado las siguientes herramientas en el equipo cliente utilizado para acceder al clúster de Kubernetes: 
  + Versión 1.13 o posterior de [https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html](https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html). Use una versión de `kubectl` con una diferencia de versión de menos de un número que el plano de control del clúster de Amazon EKS. Por ejemplo, un cliente de `kubectl` 1.13 debe funcionar con los clústeres 1.13 y 1.14 de Kubernetes. Las versiones anteriores a la 1.13 no son compatibles con OpenID Connect (OIDC). 
  + Versión 0.7.0 o posterior de [https://github.com/weaveworks/eksctl](https://github.com/weaveworks/eksctl). 
  + [AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv1.html) versión 1.16.232 o posterior 
  + Versión 3.0 o posterior de [Helm](https://helm.sh/docs/intro/install/) (opcional). 
  + [aws-iam-authenticator](https://docs.aws.amazon.com/eks/latest/userguide/install-aws-iam-authenticator.html) 
+ Tiene permisos para crear un rol de IAM y asociar políticas a los roles.
+ Ha creado un clúster de Kubernetes en el que ejecutar los operadores. Debe ser la versión 1.13 o 1.14 de Kubernetes. Para la creación automática de clústeres mediante `eksctl`, consulte [Introducción a eksctl](https://docs.aws.amazon.com/eks/latest/userguide/getting-started-eksctl.html). La provisión del clúster puede tardar de 20 a 30 minutos. 

#### Cluster-scoped despliegue
<a name="cluster-scoped-deployment"></a>

Antes de poder implementar su operador mediante un rol de IAM, asocie un proveedor de identidades (IdP) de OpenID Connect (OIDC) a su rol para autenticarse en el servicio de IAM.

##### Creación de un proveedor de OIDC para su clúster
<a name="create-an-openid-connect-provider-for-your-cluster"></a>

Las siguientes instrucciones muestran cómo crear y asociar un proveedor de OIDC a su clúster de Amazon EKS.

1. Establezca las variables local, `CLUSTER_NAME`, y de entorno, `AWS_REGION`, de la siguiente manera:

   ```
   # Set the Region and cluster
   export CLUSTER_NAME="{{<your cluster name>}}"
   export AWS_REGION="{{<your region>}}"
   ```

1. Utilice el siguiente comando para asociar el proveedor de OIDC con el clúster. Para obtener más información, consulte [Enabling IAM Roles for Service Accounts on your Cluster](https://docs.aws.amazon.com/eks/latest/userguide/enable-iam-roles-for-service-accounts.html). 

   ```
   eksctl utils associate-iam-oidc-provider --cluster ${CLUSTER_NAME} \
         --region ${AWS_REGION} --approve
   ```

   El resultado debería tener el siguiente aspecto: 

   ```
   [_]  eksctl version 0.10.1
     [_]  using region us-east-1
     [_]  IAM OpenID Connect provider is associated with cluster "my-cluster" in "us-east-1"
   ```

Ahora que el clúster tiene un proveedor de identidades OIDC, puedes crear un rol y dar ServiceAccount permiso a Kubernetes para que lo asuma.

##### Obtención del ID de OIDC
<a name="get-the-oidc-id"></a>

Para configurarlo ServiceAccount, obtén la URL del emisor del OIDC mediante el siguiente comando:

```
aws eks describe-cluster --name ${CLUSTER_NAME} --region ${AWS_REGION} \
      --query cluster.identity.oidc.issuer --output text
```

El comando devuelve una URL similar a la siguiente: 

```
https://oidc.eks.${AWS_REGION}.amazonaws.com/id/D48675832CA65BD10A532F597OIDCID
```

En esta URL, el valor `D48675832CA65BD10A532F597OIDCID` es el ID de OIDC. El ID de OIDC del clúster es diferente. Necesita este valor de ID de OIDC para crear un rol. 

 Si la salida es `None`, significa que la versión de su cliente es antigua. Para solucionar este problema, ejecute el siguiente comando: 

```
aws eks describe-cluster --region ${AWS_REGION} --query cluster --name ${CLUSTER_NAME} --output text | grep OIDC
```

La URL de OIDC se devuelve de la siguiente manera: 

```
OIDC https://oidc.eks.us-east-1.amazonaws.com/id/D48675832CA65BD10A532F597OIDCID
```

##### Creación de un rol de IAM
<a name="create-an-iam-role"></a>

1. Cree un archivo con un nombre `trust.json` e inserte en él el siguiente bloque de códigos de relación de confianza. Asegúrese de reemplazar todos los marcadores de posición `<OIDC ID>`, `<AWS account number>` y `<EKS Cluster region>` por los valores correspondientes a su clúster. 

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
         {
           "Effect": "Allow",
           "Principal": {
             "Federated": "arn:aws:iam::{{111122223333}}:oidc-provider/oidc.eks.{{<EKS Cluster region>}}.amazonaws.com/id/{{<OIDC ID>}}"
           },
           "Action": "sts:AssumeRoleWithWebIdentity",
           "Condition": {
             "StringEquals": {
               "oidc.eks.{{<EKS Cluster region>}}.amazonaws.com/id/{{<OIDC ID>}}:aud": "sts.amazonaws.com",
               "oidc.eks.{{<EKS Cluster region>}}.amazonaws.com/id/{{<OIDC ID>}}:sub": "system:serviceaccount:sagemaker-k8s-operator-system:sagemaker-k8s-operator-default"
             }
           }
         }
       ]
     }
   ```

------

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
         {
           "Effect": "Allow",
           "Principal": {
             "Federated": "arn:aws-cn:iam::{{111122223333}}:oidc-provider/oidc.eks.{{<EKS Cluster region>}}.amazonaws.com/id/{{<OIDC ID>}}"
           },
           "Action": "sts:AssumeRoleWithWebIdentity",
           "Condition": {
             "StringEquals": {
               "oidc.eks.{{<EKS Cluster region>}}.amazonaws.com/id/{{<OIDC ID>}}:aud": "sts.amazonaws.com",
               "oidc.eks.{{<EKS Cluster region>}}.amazonaws.com/id/{{<OIDC ID>}}:sub": "system:serviceaccount:sagemaker-k8s-operator-system:sagemaker-k8s-operator-default"
             }
           }
         }
       ]
     }
   ```

------

1. Ejecute el siguiente comando para crear un rol con la relación de confianza definida en `trust.json`. Este rol permite que el clúster de Amazon EKS obtenga y actualice las credenciales de IAM. 

   ```
   aws iam create-role --region ${AWS_REGION} --role-name {{<role name>}} --assume-role-policy-document file://trust.json --output=text
   ```

   El resultado debería tener el siguiente aspecto: 

   ```
   ROLE    arn:aws:iam::123456789012:role/my-role 2019-11-22T21:46:10Z    /       ABCDEFSFODNN7EXAMPLE   my-role
   ASSUMEROLEPOLICYDOCUMENT        2012-10-17		 	 	 
   STATEMENT       sts:AssumeRoleWithWebIdentity   Allow
   STRINGEQUALS    sts.amazonaws.com       system:serviceaccount:sagemaker-k8s-operator-system:sagemaker-k8s-operator-default
   PRINCIPAL       arn:aws:iam::123456789012:oidc-provider/oidc.eks.us-east-1.amazonaws.com/id/
   ```

    Tome nota de `ROLE ARN`; pasará este valor a su operador. 

##### Adjunte la AmazonSageMakerFullAccess política al rol
<a name="attach-the-amazonsagemakerfullaccess-policy-to-the-role"></a>

Para dar acceso al rol a la SageMaker IA, adjunta la [AmazonSageMakerFullAccess](https://console.aws.amazon.com/iam/home?#/policies/arn:aws:iam::aws:policy/AmazonSageMakerFullAccess)política. Si desea limitar los permisos al operador, puede crear su propia política personalizada y asociarla. 

 Para asociar `AmazonSageMakerFullAccess`, ejecute el siguiente comando: 

```
aws iam attach-role-policy --role-name {{<role name>}}  --policy-arn arn:aws:iam::aws:policy/AmazonSageMakerFullAccess
```

Los Kubernetes ServiceAccount `sagemaker-k8s-operator-default` deben tener permisos. `AmazonSageMakerFullAccess` Confirme esto cuando instale el operador. 

##### Implementación del operador
<a name="deploy-the-operator"></a>

Al implementar el operador, puede usar un archivo YAML o gráficos de Helm. 

##### Implementación del operador mediante YAML
<a name="deploy-the-operator-using-yaml"></a>

Es la forma más sencilla de implementar los operadores. El proceso es el siguiente: 

1. Descargue el script del instalador mediante el siguiente comando: 

   ```
   wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/release/rolebased/installer.yaml
   ```

1. Edite el archivo `installer.yaml` para reemplazar `eks.amazonaws.com/role-arn`. Sustituya el ARN aquí por el nombre de recurso de Amazon (ARN) del OIDC-based rol que ha creado. 

1. Utilice el siguiente comando para implementar el clúster: 

   ```
   kubectl apply -f installer.yaml
   ```

##### Implementación del operador mediante gráficos de Helm
<a name="deploy-the-operator-using-helm-charts"></a>

Utilice el gráfico de Helm suministrado para instalar el operador. 

1. Clone el directorio del instalador de Helm mediante el siguiente comando: 

   ```
   git clone https://github.com/aws/amazon-sagemaker-operator-for-k8s.git
   ```

1. Vaya a la carpeta `amazon-sagemaker-operator-for-k8s/hack/charts/installer`. Edite el archivo `rolebased/values.yaml`, que incluye parámetros de alto nivel para el gráfico. Sustituya el ARN del rol aquí por el nombre de recurso de Amazon (ARN) del OIDC-based rol que ha creado. 

1. Instale el gráfico de Helm mediante el siguiente comando: 

   ```
   kubectl create namespace sagemaker-k8s-operator-system
     helm install --namespace sagemaker-k8s-operator-system sagemaker-operator rolebased/
   ```

   Si decide instalar el operador en un espacio de nombres distinto del especificado, tendrá que ajustar el espacio de nombres definido en el archivo `trust.json` de rol de IAM para que coincida. 

1. Transcurrido un momento, el gráfico se instala con un nombre generado aleatoriamente. Ejecute el siguiente comando para comprobar que se ha instalado correctamente: 

   ```
   helm ls
   ```

   El resultado debería tener el siguiente aspecto: 

   ```
   NAME                    NAMESPACE                       REVISION        UPDATED                                 STATUS          CHART                           APP VERSION
     sagemaker-operator      sagemaker-k8s-operator-system   1               2019-11-20 23:14:59.6777082 +0000 UTC   deployed        sagemaker-k8s-operator-0.1.0
   ```

##### Verificación de la implementación del operador
<a name="verify-the-operator-deployment"></a>

1. Debería poder ver las definiciones de recursos (CRD) personalizadas de SageMaker IA de cada operador implementado en su clúster ejecutando el siguiente comando: 

   ```
   kubectl get crd | grep sagemaker
   ```

   El resultado debería tener el siguiente aspecto: 

   ```
   batchtransformjobs.sagemaker.aws.amazon.com         2019-11-20T17:12:34Z
   endpointconfigs.sagemaker.aws.amazon.com            2019-11-20T17:12:34Z
   hostingdeployments.sagemaker.aws.amazon.com         2019-11-20T17:12:34Z
   hyperparametertuningjobs.sagemaker.aws.amazon.com   2019-11-20T17:12:34Z
   models.sagemaker.aws.amazon.com                     2019-11-20T17:12:34Z
   trainingjobs.sagemaker.aws.amazon.com               2019-11-20T17:12:34Z
   ```

1. Asegúrese de que el pod del operador se esté ejecutando correctamente. Utilice el siguiente comando para enumerar todos los pods. 

   ```
   kubectl -n sagemaker-k8s-operator-system get pods
   ```

   Debería ver un pod denominado `sagemaker-k8s-operator-controller-manager-*****` en el espacio de nombres `sagemaker-k8s-operator-system`, como sigue: 

   ```
   NAME                                                         READY   STATUS    RESTARTS   AGE
   sagemaker-k8s-operator-controller-manager-12345678-r8abc     2/2     Running   0          23s
   ```

#### Namespace-scoped despliegue
<a name="namespace-scoped-deployment"></a>

Tiene la opción de instalar el operador dentro del ámbito de un espacio de nombres de Kubernetes individual. En este modo, el controlador solo monitorea y reconcilia los recursos con la SageMaker IA si los recursos se crean dentro de ese espacio de nombres. Esto permite un control más preciso sobre qué controlador administra qué recursos. Esto resulta útil para realizar despliegues en varias AWS cuentas o para controlar qué usuarios tienen acceso a determinadas tareas. 

Esta guía describe cómo instalar un operador en un espacio de nombres específico y predefinido. Para implementar un controlador en un segundo espacio de nombres, siga la guía de principio a fin y cambie el espacio de nombres en cada paso. 

##### Creación de un proveedor de OIDC para su clúster de Amazon EKS
<a name="create-an-openid-connect-provider-for-your-eks-cluster"></a>

Las siguientes instrucciones muestran cómo crear y asociar un proveedor de OIDC a su clúster de Amazon EKS. 

1. Establezca las variables local, `CLUSTER_NAME`, y de entorno, `AWS_REGION`, de la siguiente manera: 

   ```
   # Set the Region and cluster
   export CLUSTER_NAME="{{<your cluster name>}}"
   export AWS_REGION="{{<your region>}}"
   ```

1. Utilice el siguiente comando para asociar el proveedor de OIDC con el clúster. Para obtener más información, consulte [Enabling IAM Roles for Service Accounts on your Cluster](https://docs.aws.amazon.com/eks/latest/userguide/enable-iam-roles-for-service-accounts.html). 

   ```
   eksctl utils associate-iam-oidc-provider --cluster ${CLUSTER_NAME} \
         --region ${AWS_REGION} --approve
   ```

   El resultado debería tener el siguiente aspecto: 

   ```
   [_]  eksctl version 0.10.1
     [_]  using region us-east-1
     [_]  IAM OpenID Connect provider is associated with cluster "my-cluster" in "us-east-1"
   ```

Ahora que el clúster tiene un proveedor de identidad OIDC, cree un rol y dé ServiceAccount permiso a Kubernetes para que lo asuma. 

##### Obtención del ID de OIDC
<a name="get-your-oidc-id"></a>

Para configurarlo ServiceAccount, primero obtenga la URL del emisor de OpenID Connect mediante el siguiente comando: 

```
aws eks describe-cluster --name ${CLUSTER_NAME} --region ${AWS_REGION} \
      --query cluster.identity.oidc.issuer --output text
```

El comando devuelve una URL similar a la siguiente: 

```
https://oidc.eks.${AWS_REGION}.amazonaws.com/id/D48675832CA65BD10A532F597OIDCID
```

En esta URL, el valor D48675832CA65BD10A532F597OIDCID es el ID de OIDC. El ID de OIDC del clúster es diferente. Necesita este valor de ID de OIDC para crear un rol. 

 Si la salida es `None`, significa que la versión de su cliente es antigua. Para solucionar este problema, ejecute el siguiente comando: 

```
aws eks describe-cluster --region ${AWS_REGION} --query cluster --name ${CLUSTER_NAME} --output text | grep OIDC
```

La URL de OIDC se devuelve de la siguiente manera: 

```
OIDC https://oidc.eks.us-east-1.amazonaws.com/id/D48675832CA65BD10A532F597OIDCID
```

##### Creación de su rol de IAM
<a name="create-your-iam-role"></a>

1. Cree un archivo con un nombre `trust.json` e inserte en él el siguiente bloque de códigos de relación de confianza. Asegúrese de reemplazar todos los marcadores de posición `<OIDC ID>`, `<AWS account number>`, `<EKS Cluster region>` y `<Namespace>` por los valores correspondientes a su clúster. A los efectos de esta guía, se utiliza `my-namespace` para el valor `<Namespace>`. 

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
         {
           "Effect": "Allow",
           "Principal": {
           "Federated": "arn:aws:iam::{{111122223333}}:oidc-provider/oidc.eks.{{<EKS Cluster region>}}.amazonaws.com/id/{{<OIDC ID>}}"
           },
           "Action": "sts:AssumeRoleWithWebIdentity",
           "Condition": {
             "StringEquals": {
                 "oidc.eks.{{<EKS Cluster region>}}.amazonaws.com/id/{{<OIDC ID>}}:aud": "sts.amazonaws.com",
                 "oidc.eks.{{<EKS Cluster region>}}.amazonaws.com/id/{{<OIDC ID>}}:sub": "system:serviceaccount:{{<Namespace>}}:sagemaker-k8s-operator-default"
             }
           }
         }
       ]
     }
   ```

------

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
         {
           "Effect": "Allow",
           "Principal": {
             "Federated": "arn:aws-cn:iam::{{111122223333}}:oidc-provider/oidc.eks.{{<EKS Cluster region>}}.amazonaws.com/id/{{<OIDC ID>}}"
           },
           "Action": "sts:AssumeRoleWithWebIdentity",
           "Condition": {
             "StringEquals": {
                 "oidc.eks.{{<EKS Cluster region>}}.amazonaws.com/id/{{<OIDC ID>}}:aud": "sts.amazonaws.com",
                 "oidc.eks.{{<EKS Cluster region>}}.amazonaws.com/id/{{<OIDC ID>}}:sub": "system:serviceaccount:{{<Namespace>}}:sagemaker-k8s-operator-default"
             }
           }
         }
       ]
     }
   ```

------

1. Ejecute el siguiente comando para crear un rol con la relación de confianza definida en `trust.json`. Este rol permite que el clúster de Amazon EKS obtenga y actualice las credenciales de IAM. 

   ```
   aws iam create-role --region ${AWS_REGION} --role-name {{<role name>}} --assume-role-policy-document file://trust.json --output=text
   ```

   El resultado debería tener el siguiente aspecto: 

   ```
   ROLE    arn:aws:iam::123456789012:role/my-role 2019-11-22T21:46:10Z    /       ABCDEFSFODNN7EXAMPLE   my-role
     ASSUMEROLEPOLICYDOCUMENT        2012-10-17		 	 	 
     STATEMENT       sts:AssumeRoleWithWebIdentity   Allow
     STRINGEQUALS    sts.amazonaws.com       system:serviceaccount:my-namespace:sagemaker-k8s-operator-default
     PRINCIPAL       arn:aws:iam::123456789012:oidc-provider/oidc.eks.us-east-1.amazonaws.com/id/
   ```

Tome nota del `ROLE ARN`. Pasará este valor a su operador. 

##### Adjunte la AmazonSageMakerFullAccess política a su función
<a name="attach-the-amazonsagemakerfullaccess-policy-to-your-role"></a>

Para dar acceso al rol a la SageMaker IA, adjunta la [https://console.aws.amazon.com/iam/home?#/policies/arn:aws:iam::aws:policy/AmazonSageMakerFullAccess](https://console.aws.amazon.com/iam/home?#/policies/arn:aws:iam::aws:policy/AmazonSageMakerFullAccess)política. Si desea limitar los permisos al operador, puede crear su propia política personalizada y asociarla. 

 Para asociar `AmazonSageMakerFullAccess`, ejecute el siguiente comando: 

```
aws iam attach-role-policy --role-name {{<role name>}}  --policy-arn arn:aws:iam::aws:policy/AmazonSageMakerFullAccess
```

Los Kubernetes ServiceAccount `sagemaker-k8s-operator-default` deben tener permisos. `AmazonSageMakerFullAccess` Confirme esto cuando instale el operador. 

##### Implementación del operador en su espacio de nombres
<a name="deploy-the-operator-to-your-namespace"></a>

Al implementar el operador, puede usar un archivo YAML o gráficos de Helm. 

##### Implementación del operador en su espacio de nombres mediante YAML
<a name="deploy-the-operator-to-your-namespace-using-yaml"></a>

La implementación de un operador dentro del ámbito de un espacio de nombres consta de dos partes. La primera es el conjunto de CRD que se instalan a nivel de clúster. Estas definiciones de recursos solo se deben instalar una vez por clúster de Kubernetes. La segunda parte son los permisos del operador y la implementación en sí. 

 Si aún no ha instalado los CRD en el clúster, aplique el YAML del instalador de CRD mediante el siguiente comando: 

```
kubectl apply -f https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/release/rolebased/namespaced/crd.yaml
```

Para instalar el operador en el clúster: 

1. Descargue el YAML del instalador del operador mediante el siguiente comando: 

   ```
   wget https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/release/rolebased/namespaced/operator.yaml
   ```

1. Actualice el YAML del instalador para colocar los recursos en el espacio de nombres especificado mediante el siguiente comando: 

   ```
   sed -i -e 's/PLACEHOLDER-NAMESPACE/{{<YOUR NAMESPACE>}}/g' operator.yaml
   ```

1. Edite el archivo `operator.yaml` para colocar los recursos en su `eks.amazonaws.com/role-arn`. Sustituya el ARN aquí por el nombre de recurso de Amazon (ARN) del OIDC-based rol que ha creado. 

1. Utilice el siguiente comando para implementar el clúster: 

   ```
   kubectl apply -f operator.yaml
   ```

##### Implementación del operador en su espacio de nombres mediante gráficos de Helm
<a name="deploy-the-operator-to-your-namespace-using-helm-charts"></a>

La implementación de un operador dentro del ámbito de un espacio de nombres se compone de dos partes. La primera es el conjunto de CRD que se instalan a nivel de clúster. Estas definiciones de recursos solo se deben instalar una vez por clúster de Kubernetes. La segunda parte son los permisos del operador y la implementación en sí. Si usa gráficos de Helm, primero debe crear el espacio de nombres con `kubectl`. 

1. Clone el directorio del instalador de Helm mediante el siguiente comando: 

   ```
   git clone https://github.com/aws/amazon-sagemaker-operator-for-k8s.git
   ```

1. Vaya a la carpeta `amazon-sagemaker-operator-for-k8s/hack/charts/installer/namespaced`. Edite el archivo `rolebased/values.yaml`, que incluye parámetros de alto nivel para el gráfico. Sustituya el ARN del rol aquí por el nombre de recurso de Amazon (ARN) del OIDC-based rol que ha creado. 

1. Instale el gráfico de Helm mediante el siguiente comando: 

   ```
   helm install crds crd_chart/
   ```

1. Cree el espacio de nombres necesario e instale el operador mediante el siguiente comando: 

   ```
   kubectl create namespace {{<namespace>}}
   helm install --n {{<namespace>}} op operator_chart/
   ```

1. Después de un momento, el gráfico se instala con el nombre `sagemaker-operator`. Ejecute el siguiente comando para comprobar que se ha instalado correctamente: 

   ```
   helm ls
   ```

   El resultado debería tener el siguiente aspecto: 

   ```
   NAME                    NAMESPACE                       REVISION        UPDATED                                 STATUS          CHART                           APP VERSION
   sagemaker-operator      my-namespace                    1               2019-11-20 23:14:59.6777082 +0000 UTC   deployed        sagemaker-k8s-operator-0.1.0
   ```

##### Verificación de la implementación del operador en su espacio de nombres
<a name="verify-the-operator-deployment-to-your-namespace"></a>

1. Debería poder ver las definiciones de recursos (CRD) personalizadas de SageMaker IA de cada operador implementado en su clúster ejecutando el siguiente comando: 

   ```
   kubectl get crd | grep sagemaker
   ```

   El resultado debería tener el siguiente aspecto: 

   ```
   batchtransformjobs.sagemaker.aws.amazon.com         2019-11-20T17:12:34Z
   endpointconfigs.sagemaker.aws.amazon.com            2019-11-20T17:12:34Z
   hostingdeployments.sagemaker.aws.amazon.com         2019-11-20T17:12:34Z
   hyperparametertuningjobs.sagemaker.aws.amazon.com   2019-11-20T17:12:34Z
   models.sagemaker.aws.amazon.com                     2019-11-20T17:12:34Z
   trainingjobs.sagemaker.aws.amazon.com               2019-11-20T17:12:34Z
   ```

1. Asegúrese de que el pod del operador se esté ejecutando correctamente. Utilice el siguiente comando para enumerar todos los pods. 

   ```
   kubectl -n my-namespace get pods
   ```

   Debería ver un pod denominado `sagemaker-k8s-operator-controller-manager-*****` en el espacio de nombres `my-namespace`, como sigue: 

   ```
   NAME                                                         READY   STATUS    RESTARTS   AGE
   sagemaker-k8s-operator-controller-manager-12345678-r8abc     2/2     Running   0          23s
   ```

#### Instala el complemento SageMaker `kubectl` de AI logs
<a name="install-the-amazon-sagemaker-logs-kubectl-plugin"></a>

 [Como parte de los operadores de SageMaker IA para Kubernetes, puedes usar el complemento para. `smlogs`](https://kubernetes.io/docs/tasks/extend-kubectl/kubectl-plugins/) `kubectl` Esto permite transmitir CloudWatch los registros de SageMaker IA. `kubectl` `kubectl`debe estar instalado en su [PATH](http://www.linfo.org/path_env_var.html). Los siguientes comandos colocan el binario en el directorio `sagemaker-k8s-bin` de su directorio principal y agregan ese directorio a su `PATH`. 

```
export os="linux"
  
wget https://amazon-sagemaker-operator-for-k8s-us-east-1.s3.amazonaws.com/kubectl-smlogs-plugin/v1/${os}.amd64.tar.gz
tar xvzf ${os}.amd64.tar.gz
  
# Move binaries to a directory in your homedir.
mkdir ~/sagemaker-k8s-bin
cp ./kubectl-smlogs.${os}.amd64/kubectl-smlogs ~/sagemaker-k8s-bin/.
  
# This line adds the binaries to your PATH in your .bashrc.
  
echo 'export PATH=$PATH:~/sagemaker-k8s-bin' >> ~/.bashrc
  
# Source your .bashrc to update environment variables:
source ~/.bashrc
```

Use el siguiente comando para comprobar que el complemento `kubectl` esté correctamente instalado: 

```
kubectl smlogs
```

Si el complemento `kubectl` está instalado correctamente, la salida debería tener el siguiente aspecto: 

```
View SageMaker AI logs via Kubernetes
  
Usage:
  smlogs [command]
  
Aliases:
  smlogs, SMLogs, Smlogs
  
Available Commands:
  BatchTransformJob       View BatchTransformJob logs via Kubernetes
  TrainingJob             View TrainingJob logs via Kubernetes
  help                    Help about any command
  
Flags:
   -h, --help   help for smlogs
  
Use "smlogs [command] --help" for more information about a command.
```

### Eliminar recursos
<a name="cleanup-operator-resources"></a>

Para desinstalar el operador del clúster, primero debe asegurarse de eliminar todos los recursos de SageMaker IA del clúster. Si no lo hace, la operación de eliminación por parte del operador se bloqueará. Ejecute el siguiente comando para detener todos los trabajos: 

```
# Delete all SageMaker AI jobs from Kubernetes
kubectl delete --all --all-namespaces hyperparametertuningjob.sagemaker.aws.amazon.com
kubectl delete --all --all-namespaces trainingjobs.sagemaker.aws.amazon.com
kubectl delete --all --all-namespaces batchtransformjob.sagemaker.aws.amazon.com
kubectl delete --all --all-namespaces hostingdeployment.sagemaker.aws.amazon.com
```

Debería ver una salida similar a esta: 

```
$ kubectl delete --all --all-namespaces trainingjobs.sagemaker.aws.amazon.com
trainingjobs.sagemaker.aws.amazon.com "xgboost-mnist-from-for-s3" deleted
  
$ kubectl delete --all --all-namespaces hyperparametertuningjob.sagemaker.aws.amazon.com
hyperparametertuningjob.sagemaker.aws.amazon.com "xgboost-mnist-hpo" deleted
  
$ kubectl delete --all --all-namespaces batchtransformjob.sagemaker.aws.amazon.com
batchtransformjob.sagemaker.aws.amazon.com "xgboost-mnist" deleted
  
$ kubectl delete --all --all-namespaces hostingdeployment.sagemaker.aws.amazon.com
hostingdeployment.sagemaker.aws.amazon.com "host-xgboost" deleted
```

Tras eliminar todos los trabajos de SageMaker IA, [Eliminación de operadores](#delete-operators) asegúrate de eliminar el operador del clúster.

### Eliminación de operadores
<a name="delete-operators"></a>

#### Eliminación de operadores basados en clústeres
<a name="delete-cluster-based-operators"></a>

##### Operadores instalados mediante YAML
<a name="operators-installed-using-yaml"></a>

Para desinstalar el operador del clúster, asegúrese de que se hayan eliminado todos los recursos de SageMaker IA del clúster. Si no lo hace, la operación de eliminación por parte del operador se bloqueará.

**nota**  
Antes de eliminar el clúster, asegúrate de eliminar todos los recursos de SageMaker IA del clúster. Para obtener más información, consulte [Eliminar recursos](#cleanup-operator-resources).

Una vez que hayas eliminado todos los trabajos de SageMaker IA, úsalo `kubectl` para eliminar el operador del clúster:

```
# Delete the operator and its resources
kubectl delete -f /installer.yaml
```

Debería ver una salida similar a esta: 

```
$ kubectl delete -f raw-yaml/installer.yaml
namespace "sagemaker-k8s-operator-system" deleted
customresourcedefinition.apiextensions.k8s.io "batchtransformjobs.sagemaker.aws.amazon.com" deleted
customresourcedefinition.apiextensions.k8s.io "endpointconfigs.sagemaker.aws.amazon.com" deleted
customresourcedefinition.apiextensions.k8s.io "hostingdeployments.sagemaker.aws.amazon.com" deleted
customresourcedefinition.apiextensions.k8s.io "hyperparametertuningjobs.sagemaker.aws.amazon.com" deleted
customresourcedefinition.apiextensions.k8s.io "models.sagemaker.aws.amazon.com" deleted
customresourcedefinition.apiextensions.k8s.io "trainingjobs.sagemaker.aws.amazon.com" deleted
role.rbac.authorization.k8s.io "sagemaker-k8s-operator-leader-election-role" deleted
clusterrole.rbac.authorization.k8s.io "sagemaker-k8s-operator-manager-role" deleted
clusterrole.rbac.authorization.k8s.io "sagemaker-k8s-operator-proxy-role" deleted
rolebinding.rbac.authorization.k8s.io "sagemaker-k8s-operator-leader-election-rolebinding" deleted
clusterrolebinding.rbac.authorization.k8s.io "sagemaker-k8s-operator-manager-rolebinding" deleted
clusterrolebinding.rbac.authorization.k8s.io "sagemaker-k8s-operator-proxy-rolebinding" deleted
service "sagemaker-k8s-operator-controller-manager-metrics-service" deleted
deployment.apps "sagemaker-k8s-operator-controller-manager" deleted
secrets "sagemaker-k8s-operator-abcde" deleted
```

##### Operadores instalados mediante gráficos de Helm
<a name="operators-installed-using-helm-charts"></a>

Para eliminar los CRD del operador, borre primero todos los trabajos en ejecución. A continuación, elimine el gráfico de Helm que se utilizó para implementar los operadores mediante los siguientes comandos: 

```
# get the helm charts
helm ls
  
# delete the charts
helm delete {{<chart_name>}}
```

#### Eliminación de operadores basados en espacio de nombres
<a name="delete-namespace-based-operators"></a>

##### Operadores instalados con YAML
<a name="operators-installed-with-yaml"></a>

Para desinstalar el operador del clúster, asegúrate primero de que se hayan eliminado todos los recursos de SageMaker IA del clúster. Si no lo hace, la operación de eliminación por parte del operador se bloqueará.

**nota**  
Antes de eliminar el clúster, asegúrate de eliminar todos los recursos de SageMaker IA del clúster. Para obtener más información, consulte [Eliminar recursos](#cleanup-operator-resources).

Después de eliminar todos los trabajos de SageMaker IA, `kubectl` primero borra el operador del espacio de nombres y, después, los CRD del clúster. Ejecute los siguientes comandos para eliminar el operador del clúster: 

```
# Delete the operator using the same yaml file that was used to install the operator
kubectl delete -f operator.yaml
  
# Now delete the CRDs using the CRD installer yaml
kubectl delete -f https://raw.githubusercontent.com/aws/amazon-sagemaker-operator-for-k8s/master/release/rolebased/namespaced/crd.yaml
  
# Now you can delete the namespace if you want
kubectl delete namespace {{<namespace>}}
```

##### Operadores instalados con gráficos de Helm
<a name="operators-installed-with-helm-charts"></a>

Para eliminar los CRD del operador, borre primero todos los trabajos en ejecución. A continuación, elimine el gráfico de Helm que se utilizó para implementar los operadores mediante los siguientes comandos: 

```
# Delete the operator
helm delete {{<chart_name>}}
  
# delete the crds
helm delete crds
  
# optionally delete the namespace
kubectl delete namespace {{<namespace>}}
```

### Resolución de problemas
<a name="troubleshooting"></a>

#### Depuración de un trabajo con errores
<a name="debugging-a-failed-job"></a>

Siga estos pasos para depurar un trabajo con errores.
+ Para comprobar el estado del trabajo, ejecute lo siguiente: 

  ```
  kubectl get {{<CRD Type>}} {{<job name>}}
  ```
+ Si el trabajo se creó en SageMaker IA, puedes usar el siguiente comando para ver los y los`STATUS`: `SageMaker Job Name` 

  ```
  kubectl get {{<crd type>}} {{<job name>}}
  ```
+ Puede utilizar `smlogs` para encontrar la causa del problema mediante el siguiente comando: 

  ```
  kubectl smlogs {{<crd type>}} {{<job name>}}
  ```
+  También puede utilizar el comando `describe` para obtener más detalles sobre el trabajo mediante el siguiente comando. La salida tiene un campo `additional` que contiene más información sobre el estado del trabajo. 

  ```
  kubectl describe {{<crd type>}} {{<job name>}}
  ```
+ Si el trabajo no se creó en la SageMaker IA, utilice los registros del módulo del operador para encontrar la causa del problema de la siguiente manera: 

  ```
  $ kubectl get pods -A | grep sagemaker
  # Output:
  sagemaker-k8s-operator-system   sagemaker-k8s-operator-controller-manager-5cd7df4d74-wh22z   2/2     Running   0          3h33m
    
  $ kubectl logs -p {{<pod name>}} -c manager -n sagemaker-k8s-operator-system
  ```

#### Eliminación del CRD del operador
<a name="deleting-an-operator-crd"></a>

Si la eliminación de un trabajo no funciona, compruebe si el operador está en ejecución. Si el operador no se está ejecutando, debe eliminar el finalizador conforme a los siguientes pasos: 

1. En una nueva terminal, abra el trabajo en un editor con `kubectl edit` siguiente manera: 

   ```
   kubectl edit {{<crd type>}} {{<job name>}}
   ```

1. Edite el trabajo para eliminar el finalizador eliminando las dos líneas siguientes del archivo. Guarde el archivo y se eliminará el trabajo. 

   ```
   finalizers:
     - sagemaker-operator-finalizer
   ```

### Imágenes y SMLlogs en cada región
<a name="images-and-smlogs-in-each-region"></a>

En la siguiente tabla se muestran las imágenes de los operadores y los SMLogs disponibles en cada región. 


|  Region  |  Imagen del controlador  |  SMLogs de Linux  | 
| --- | --- | --- | 
|  us-east-1  |  957583890962.dkr.ecr.us-east-1.amazonaws.com/amazon-sagemaker-operator-for-k8s:v1  |  [https://s3.us-east-1.amazonaws.com/amazon-sagemaker-operator-for-k8s-us-east-1/kubectl-smlogs-plugin/v1/linux.amd64.tar.gz](https://s3.us-east-1.amazonaws.com/amazon-sagemaker-operator-for-k8s-us-east-1/kubectl-smlogs-plugin/v1/linux.amd64.tar.gz)  | 
|  us-east-2  |  922499468684.dkr.ecr.us-east-2.amazonaws.com/amazon-sagemaker-operator-for-k8s:v1  |  [https://s3.us-east-2.amazonaws.com/amazon-sagemaker-operator-for-k8s-us-east-2/kubectl-smlogs-plugin/v1/linux.amd64.tar.gz](https://s3.us-east-2.amazonaws.com/amazon-sagemaker-operator-for-k8s-us-east-2/kubectl-smlogs-plugin/v1/linux.amd64.tar.gz)  | 
|  us-west-2  |  640106867763.dkr.ecr.us-west-2.amazonaws.com/amazon-sagemaker-operator-for-k8s:v1  |  [https://s3.us-west-2.amazonaws.com/amazon-sagemaker-operator-for-k8s-us-west-2/kubectl-smlogs-plugin/v1/linux.amd64.tar.gz](https://s3.us-west-2.amazonaws.com/amazon-sagemaker-operator-for-k8s-us-west-2/kubectl-smlogs-plugin/v1/linux.amd64.tar.gz)  | 
|  eu-west-1  |  613661167059.dkr.ecr.eu-west-1.amazonaws.com/amazon-sagemaker-operator-for-k8s:v1  |  [https://s3.eu-west-1.amazonaws.com/amazon-sagemaker-operator-for-k8s-eu-west-1/kubectl-smlogs-plugin/v1/linux.amd64.tar.gz](https://s3.eu-west-1.amazonaws.com/amazon-sagemaker-operator-for-k8s-eu-west-1/kubectl-smlogs-plugin/v1/linux.amd64.tar.gz)  | 