Introducción a Amazon EKS: AWS Management Console y AWS CLI - Amazon EKS

Ayude a mejorar esta página

¿Quiere contribuir a esta guía del usuario? Desplácese hasta el final de esta página y seleccione Editar esta página en GitHub. Sus contribuciones ayudarán a que nuestra guía del usuario sea mejor para todos.

Introducción a Amazon EKS: AWS Management Console y AWS CLI

Esta guía lo ayuda a crear todos los recursos necesarios para comenzar a utilizar Amazon Elastic Kubernetes Service (Amazon EKS) mediante la AWS Management Console y la AWS CLI. En esta guía, creará cada recurso de forma manual. Al final de este tutorial, contará con un clúster de Amazon EKS en ejecución en el que puede implementar aplicaciones.

Los procedimientos de esta guía le dan una visibilidad completa sobre cómo se crea cada recurso y cómo interactúan los recursos entre sí. Si prefiere que la mayoría de los recursos se creen de forma automática, utilice la CLI de eksctl para crear el clúster y los nodos. Para obtener más información, consulte Introducción a Amazon EKS: eksctl.

Requisitos previos

Antes de comenzar este tutorial, debe instalar y configurar las siguientes herramientas y recursos que necesitará para crear y administrar un clúster de Amazon EKS.

  • AWS CLI: una herramienta de línea de comandos para trabajar con servicios de AWS, incluido Amazon EKS. Para obtener más información, consulte Instalar, actualizar y desinstalar la AWS CLI en la guía del usuario de AWS Command Line Interface. Después de instalar la AWS CLI, recomendamos que también la configure. Para obtener más información, consulte Configuración rápida con aws configure en la guía del usuario de AWS Command Line Interface.

  • kubectl: una herramienta de línea de comandos para trabajar con clústeres de Kubernetes. Para obtener más información, consulte Instalación o actualización del kubectl.

  • Permisos de IAM necesarios: la entidad principal de seguridad de IAM que está utilizando debe contar con permisos para trabajar con los roles de IAM de Amazon EKS y los roles vinculados al servicio, AWS CloudFormation, una VPC y recursos relacionados. Para obtener más información, consulte Acciones, recursos y claves de condición de Amazon Elastic Kubernetes Service y Uso de roles vinculados a servicios en la Guía del usuario de IAM. Debe completar todos los pasos de esta guía como el mismo usuario. Ejecute el siguiente comando para comprobar el usuario actual:

    aws sts get-caller-identity
  • Le recomendamos que siga los pasos de este tema en un intérprete de comandos Bash. Si no está utilizando un intérprete de comandos Bash, algunos comandos de script, como los caracteres de continuación de línea y la forma en que se establecen y utilizan las variables, requieren ajustes para su intérprete de comandos. Además, las reglas de entrecomillado y escape de su intérprete de comandos pueden ser diferentes. Para obtener más información, consulte Uso de entrecomillado de cadenas en la AWS CLI de la Guía del usuario de la AWS Command Line Interface.

Paso 1: crear el clúster de Amazon EKS

importante

Para comenzar de la manera más sencilla y rápida posible, en este tema se incluye pasos a fin de crear un clúster con la configuración predeterminada. Antes de crear un clúster para su uso en producción, recomendamos que conozca toda la configuración e implemente un clúster con la configuración que satisfaga sus requisitos. Para obtener más información, consulte Creación de un clúster de Amazon EKS. Algunos ajustes de configuración solo se pueden habilitar al crear el clúster.

Para crear el clúster
  1. Cree una Amazon VPC con subredes privadas y públicas que cumplan con los requisitos de Amazon EKS. Reemplace region-code por cualquier Región de AWS en la que se admita Amazon EKS. Para ver una lista de Regiones de AWS, consulte Puntos de conexión y cuotas de Amazon EKS en la Guía de referencia general de AWS.Puede reemplazar my-eks-vpc-stack con cualquier nombre que elija.

    aws cloudformation create-stack \ --region region-code \ --stack-name my-eks-vpc-stack \ --template-url https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2020-10-29/amazon-eks-vpc-private-subnets.yaml
    sugerencia

    Para obtener una lista de todos los recursos que crea el comando anterior, abra la consola de AWS CloudFormation en https://console.aws.amazon.com/cloudformation. Elija la pila my-eks-vpc-stack y, a continuación, elija la pestaña Resources (Recursos).

  2. Cree un rol de IAM de clúster y adjúntelo a la política administrada de IAM de Amazon EKS. Los clústeres de Kubernetes administrados por Amazon EKS realizan llamadas a otros servicios de AWS en su nombre para administrar los recursos que utiliza con el servicio.

    1. Copie el siguiente contenido en un archivo denominado eks-cluster-role-trust-policy.json.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "eks.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
    2. Cree el rol.

      aws iam create-role \ --role-name myAmazonEKSClusterRole \ --assume-role-policy-document file://"eks-cluster-role-trust-policy.json"
    3. Adjunte la política administrada de IAM por Amazon EKS requerida al rol.

      aws iam attach-role-policy \ --policy-arn arn:aws:iam::aws:policy/AmazonEKSClusterPolicy \ --role-name myAmazonEKSClusterRole
  3. Abra la consola de Amazon EKS en https://console.aws.amazon.com/eks/home#/clusters.

    Asegúrese de que la Región de AWS que se muestra en la parte superior derecha de la consola sea la Región de AWS en la que desea crear el clúster. De lo contrario, elija el menú desplegable junto al nombre de la Región de AWS y elija la Región de AWS que desea utilizar.

  4. Elija Add cluster (Agregar clúster) y, a continuación, elija Create (Crear). Si no ve esta opción, elija Clusters (Clústeres) en el panel de navegación izquierdo primero.

  5. En la página Configure cluster (Configurar clúster), haga lo siguiente:

    1. Ingrese un Name (Nombre) para su clúster, como my-cluster. El nombre solo puede contener caracteres alfanuméricos (con distinción de mayúsculas y minúsculas) y guiones. Debe comenzar con un carácter alfanumérico y no puede tener más de 100 caracteres. El nombre debe ser único dentro de la Región de AWS y la Cuenta de AWS en las que va a crear el clúster.

    2. En Cluster Service Role (Rol de servicio de clúster), elija myAmazonEKSClusterRole.

    3. Conserve el resto de la configuración con sus valores predeterminados y elija Next (Siguiente).

  6. En la página Specify networking (Especificar redes), haga lo siguiente:

    1. Elija el ID de la VPC que creó en un paso anterior en la lista desplegable de VPC. Es algo similar a vpc-00x0000x000x0x000 | my-eks-vpc-stack-VPC.

    2. Conserve el resto de la configuración con sus valores predeterminados y elija Siguiente.

  7. En la página Configurar observabilidad, elija Siguiente.

  8. En la página Seleccionar complementos, elija Siguiente.

    Para obtener más información sobre los complementos, consulte Complementos de Amazon EKS.

  9. En la página Configurar las opciones de complementos seleccionados, elija Siguiente.

  10. En la página Review and create (Revisar y crear), elija Create (Crear).

    A la derecha del nombre del clúster, el estado del clúster es Creating (En creación) durante varios minutos hasta que se complete el proceso de aprovisionamiento del clúster. No siga con el paso siguiente hasta que el estado sea Active (Activo).

    nota

    Es posible que reciba un error que indique que una de las zonas de disponibilidad de la solicitud no tiene capacidad suficiente para crear un clúster de Amazon EKS. Si esto ocurre, el mensaje de error indicará las zonas de disponibilidad que admiten un clúster nuevo. Intente crear el clúster de nuevo con al menos dos subredes ubicadas en las zonas de disponibilidad admitidas para su cuenta. Para obtener más información, consulte Capacidad insuficiente.

Paso 2: configurar el equipo para comunicarse con el clúster

En esta sección creará un archivo de kubeconfig para el clúster. La configuración de este archivo permite a la CLI de kubectl comunicarse con el clúster.

Para configurar el equipo a fin de comunicarse con el clúster
  1. Cree o actualice un archivo de kubeconfig para el clúster. Reemplace region-code con la Región de AWS en la creó el clúster. Reemplace my-cluster por el nombre del clúster.

    aws eks update-kubeconfig --region region-code --name my-cluster

    De forma predeterminada, el archivo de config se crea en ~/.kube o la configuración del clúster nuevo se agrega a un archivo de config existente en ~/.kube.

  2. Pruebe la configuración.

    kubectl get svc
    nota

    Si recibe cualquier error de tipo de recurso o autorización, consulte Acceso denegado o no autorizado (kubectl) en el tema de solución de problemas.

    Un ejemplo de salida sería el siguiente.

    NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE svc/kubernetes ClusterIP 10.100.0.1 <none> 443/TCP 1m

Paso 3: crear nodos

importante

Para comenzar de la manera más sencilla y rápida posible, en este tema se incluyen pasos a fin de crear nodos con la configuración predeterminada. Antes de crear nodos para su uso en producción, recomendamos que conozca toda la configuración e implemente nodos con la configuración que satisfaga sus requisitos. Para obtener más información, consulte Nodos de Amazon EKS. Algunos ajustes de configuración solo se pueden habilitar al crear los nodos.

Puede crear un clúster con uno de los siguientes tipos de nodos. Para obtener más información sobre cada tipo, consulte Nodos de Amazon EKS. Después de implementar el clúster, puede agregar otros tipos de nodos.

  • Fargate – Linux: elija este tipo de nodo si desea ejecutar aplicaciones de Linux en AWS Fargate. Fargate es un motor de computación sin servidor que le permite implementar Pods de Kubernetes sin administrar instancias de Amazon EC2.

  • Nodos administrados – Linux: elija este tipo de nodo si desea ejecutar aplicaciones de Amazon Linux en instancias de Amazon EC2. Aunque no se trata en esta guía, también puede agregar nodos autoadministrados de Windows y nodos Bottlerocket su clúster.

Fargate – Linux

Crear un perfil de Fargate. Cuando los Pods de Kubernetes se implementan con criterios que coinciden con los criterios definidos en el perfil, los Pods se implementan en Fargate.

Para crear un perfil de Fargate
  1. Cree un rol de IAM y adjúntelo a la política administrada de IAM de Amazon EKS. Cuando su clúster crea Pods en infraestructura de Fargate, los componentes que se ejecutan en la infraestructura de Fargate deben hacer llamadas a las API de AWS en su nombre. Es así para que puedan realizar acciones, como extraer imágenes de contenedores de Amazon ECR o enrutar registros a otros servicios de AWS. El rol de ejecución de Pod de Amazon EKS proporciona los permisos de IAM para esta tarea.

    1. Copie el siguiente contenido en un archivo denominado pod-execution-role-trust-policy.json. Reemplace region-code por la Región de AWS en la que se encuentra el clúster. Si desea utilizar la misma función en todas las Regiones de AWS en su cuenta, reemplace region-code con *. Reemplace 111122223333 por el nombre del clúster y my-cluster por el ID de la cuenta. Si quiere utilizar el mismo rol para todos los clústeres de su cuenta, reemplace my-cluster con *.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:eks:region-code:111122223333:fargateprofile/my-cluster/*" } }, "Principal": { "Service": "eks-fargate-pods.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
    2. Cree un rol de IAM de ejecución de Pod.

      aws iam create-role \ --role-name AmazonEKSFargatePodExecutionRole \ --assume-role-policy-document file://"pod-execution-role-trust-policy.json"
    3. Adjunte la política administrada de IAM por Amazon EKS requerida al rol.

      aws iam attach-role-policy \ --policy-arn arn:aws:iam::aws:policy/AmazonEKSFargatePodExecutionRolePolicy \ --role-name AmazonEKSFargatePodExecutionRole
  2. Abra la consola de Amazon EKS en https://console.aws.amazon.com/eks/home#/clusters.

  3. En la página Clusters (Clústeres), elija el clúster my-cluster.

  4. En la página my-cluster, haga lo siguiente:

    1. Elija la pestaña Computación.

    2. En Fargate profiles (Perfiles de Fargate), elija Add Fargate profile (Agregar perfil de Fargate).

  5. En la página Configure Fargate Profile (Configurar perfil de Fargate), haga lo siguiente:

    1. En Name (Nombre), ingrese un nombre único para su perfil de Fargate; por ejemplo, my-profile.

    2. En Pod execution role (Rol de ejecución de pods), elija el rol AmazonEKSFargatePodExecutionRole que ha creado en el paso anterior.

    3. Elija el menú desplegable Subnets (Subredes) y anule la selección de cualquier subred con Public en su nombre. Solo las subredes privadas son compatibles con los Pods que se ejecutan en Fargate.

    4. Elija Siguiente.

  6. En la página Configure Pod selection (Configurar la selección de ), haga lo siguiente:

    1. En Namespace (Espacio de nombres), escriba default.

    2. Elija Siguiente.

  7. En la página Revisar y crear, revise la información de su perfil de Fargate y elija Crear.

  8. Al cabo de unos minutos, el Status (Estado) en Fargate Profile configuration (Configuración de perfil de Fargate) cambiará de Creating (En creación) a Active (Activo). No siga con el paso siguiente hasta que el estado sea Active (Activo).

  9. Si planea implementar todos los Pods en Fargate (ninguno en los nodos de Amazon EC2), haga lo siguiente para crear otro perfil de Fargate y ejecutar el solucionador de nombres predeterminado (CoreDNS) en Fargate.

    nota

    Si no hace esto, no tendrá ningún nodo en este momento.

    1. En la página Fargate Profile (Perfil de Fargate), elija my-profile.

    2. En Fargate profiles (Perfiles de Fargate), elija Add Fargate profile (Agregar perfil de Fargate).

    3. En Nombre, escriba CoreDNS.

    4. En Pod execution role (Rol de ejecución de pods), elija el rol AmazonEKSFargatePodExecutionRole que ha creado en el paso anterior.

    5. Elija el menú desplegable Subnets (Subredes) y anule la selección de cualquier subred con Public en su nombre. Solo las subredes privadas son compatibles con los Pods que se ejecutan en Fargate.

    6. Elija Siguiente.

    7. En Namespace (Espacio de nombres), escriba kube-system.

    8. Elija Match labels (Etiquetas de coincidencia) y, luego, elija Add label (Agregar etiqueta).

    9. Ingrese k8s-app en Key (Clave) y kube-dns en Value (Valor). Esto es necesario para que el solucionador de nombres predeterminado (CoreDNS) se implemente en Fargate.

    10. Elija Siguiente.

    11. En la página Revisar y crear, revise la información de su perfil de Fargate y elija Crear.

    12. Ejecute el siguiente comando para eliminar la anotación eks.amazonaws.com/compute-type : ec2predeterminada de los Pods de CoreDNS.

      kubectl patch deployment coredns \ -n kube-system \ --type json \ -p='[{"op": "remove", "path": "/spec/template/metadata/annotations/eks.amazonaws.com~1compute-type"}]'
    nota

    El sistema crea e implementa dos nodos según la etiqueta de perfil de Fargate que agregó. No verá nada en la lista Node Groups (Grupos de nodos) porque no se aplican a los nodos de Fargate, pero observará los nodos nuevos en la pestaña Overview (Información general).

Managed nodes – Linux

Cree un grupo de nodos administrados, al especificar las subredes y el rol de IAM de nodo que creó en los pasos anteriores.

Para crear el grupo de nodos administrados por Linux de Amazon EC2
  1. Cree un rol de IAM de nodo y adjúntelo a la política administrada de IAM de Amazon EKS. El daemon de kubelet del nodo de Amazon EKS realiza llamadas a las API de AWS en su nombre. Los nodos reciben permisos de dichas llamadas de API a través de políticas asociadas y de un perfil de instancias de IAM.

    1. Copie el siguiente contenido en un archivo denominado node-role-trust-policy.json.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
    2. Cree el rol de IAM de nodo.

      aws iam create-role \ --role-name myAmazonEKSNodeRole \ --assume-role-policy-document file://"node-role-trust-policy.json"
    3. Adjunte las políticas de IAM administradas requeridas al rol.

      aws iam attach-role-policy \ --policy-arn arn:aws:iam::aws:policy/AmazonEKSWorkerNodePolicy \ --role-name myAmazonEKSNodeRole aws iam attach-role-policy \ --policy-arn arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryReadOnly \ --role-name myAmazonEKSNodeRole aws iam attach-role-policy \ --policy-arn arn:aws:iam::aws:policy/AmazonEKS_CNI_Policy \ --role-name myAmazonEKSNodeRole
  2. Abra la consola de Amazon EKS en https://console.aws.amazon.com/eks/home#/clusters.

  3. Elija el nombre del clúster que creó en Paso 1: crear el clúster de Amazon EKS, por ejemplo, my-cluster.

  4. En la página my-cluster, haga lo siguiente:

    1. Elija la pestaña Compute (Computación).

    2. Elija Add Node Group (Agregar grupo de nodos).

  5. En la página Configure Node Group (Configurar grupo de nodos), haga lo siguiente:

    1. En Name (Nombre), ingrese un nombre único para el grupo de nodos administrados, por ejemplo, my-nodegroup. El nombre del grupo de nodos no puede tener más de 63 caracteres. Debe empezar por una letra o un dígito, pero también puede incluir guiones y guiones bajos como caracteres no iniciales.

    2. En Node IAM role name (Nombre de rol de IAM de nodo), elija el rol myAmazonEKSNodeRole que creó en el paso anterior. Recomendamos que cada grupo de nodos utilice su propio rol de IAM exclusivo.

    3. Elija Siguiente.

  6. En la página Set compute and scaling configuration (Establecer la configuración de computación y escalado), acepte los valores predeterminados y elija Next (Siguiente).

  7. En la página Specify networking (Especificar redes), acepte los valores predeterminados y elija Next (Siguiente).

  8. En la página Revisar y crear, revise la configuración del grupo de nodos administrados y elija Crear.

  9. Al cabo de varios minutos, el Status (Estado) en la Node Group configuration (Configuración del grupo de nodos) cambiará de Creating (En creación) a Active (Activo). No siga con el paso siguiente hasta que el estado sea Active (Activo).

Paso 4: ver recursos

Puede ver sus nodos y cargas de trabajo de Kubernetes.

Para ver los nodos y las cargas de trabajo
  1. En el panel de navegación izquierdo, elija Clusters (Clústeres). En la lista de Clusters (Clústeres), elija el nombre del clúster que ha creado, como my-cluster.

  2. En la página my-cluster, elija lo siguiente:

    1. En la pestaña Compute (Informática), verá la lista de Nodes (Nodos) que se implementaron para el clúster. Puede elegir el nombre de un nodo para obtener más información sobre él.

    2. En la pestaña Resources (Recursos): consulte todos los recursos de Kubernetes que se implementan de forma predeterminada en un clúster de Amazon EKS. Seleccione cualquier tipo de recurso en la consola de para obtener más información sobre él.

Paso 5: eliminar recursos

Cuando haya terminado con el clúster y los nodos que creó para este tutorial, deberá eliminar los recursos creados. Si desea hacer más con este clúster antes de eliminar los recursos, consulte Siguientes pasos.

Para eliminar los recursos que creó en esta guía
  1. Elimine cualquier grupo de nodos o perfil de Fargate que haya creado.

    1. Abra la consola de Amazon EKS en https://console.aws.amazon.com/eks/home#/clusters.

    2. En el panel de navegación izquierdo, elija Clusters (Clústeres). En la lista de clústeres, elija my-cluster.

    3. Elija la pestaña Computación.

    4. Si ha creado un grupo de nodos, lija el grupo de nodos my-nodegroup y, luego, elija Delete (Eliminar). Introduzca my-nodegroup y luego escriba Delete (Eliminar).

    5. Para cada perfil de Fargate que haya creado, elíjalo y, luego, elija Delete (Eliminar). Ingrese el nombre del perfil y, a continuación, elija Delete (Eliminar).

      nota

      Si elimina un segundo perfil de Fargate, es posible que tenga que esperar a que se termine de eliminar el primero.

    6. No continúe hasta que el grupo de nodos o los perfiles de Fargate se eliminen.

  2. Eliminar el clúster.

    1. En el panel de navegación izquierdo, elija Clusters (Clústeres). En la lista de clústeres, elija my-cluster.

    2. Seleccione Delete cluster (Eliminar clúster).

    3. Introduzca my-cluster y luego elija Delete (Eliminar). No continúe hasta que se elimine el clúster.

  3. Elimine la pila de AWS CloudFormation de la VPC que ha creado.

    1. Abra la consola de AWS CloudFormation en https://console.aws.amazon.com/cloudformation.

    2. Elija la pila my-eks-vpc-stack y, a continuación, elija Delete (Eliminar).

    3. En el cuadro de diálogo de confirmación Delete my-eks-vpc-stack (Eliminar my-eks-vpc-stack), elija Delete stack (Eliminar pila).

  4. Elimine los roles de IAM que ha creado.

    1. Abra la consola de IAM en https://console.aws.amazon.com/iam/.

    2. En el panel de navegación izquierdo, seleccione Roles.

    3. Seleccione todos los roles que creó en la lista (myAmazonEKSClusterRole, así como AmazonEKSFargatePodExecutionRole o myAmazonEKSNodeRole). Elija Delete (Eliminar), ingrese el texto de confirmación solicitado y, luego, elija Delete (Eliminar).

Siguientes pasos

Los siguientes temas de documentación lo ayudarán a ampliar la funcionalidad de su clúster.