Creación de un clúster de Amazon EKS - Amazon EKS

Creación de un clúster de Amazon EKS

En este tema, se ofrece información general de las opciones disponibles y se describe qué debe tener en cuenta al crear un clúster de Amazon EKS. Si es la primera vez que crea un clúster de Amazon EKS, recomendamos que siga una de nuestras guías de Introducción a Amazon EKS. Estas guías le ayudan a crear un clúster simple y predeterminado sin expandirse a todas las opciones disponibles.

Requisitos previos

Cuando se crea un clúster de Amazon EKS, la entidad (el usuario o el rol) de IAM que crea el clúster se agrega a la tabla de autorización de RBAC de Kubernetes como administrador. Esta entidad tiene permisos system:masters. La identidad de esta entidad no está visible en la configuración del clúster. Por lo tanto, es importante anotar la entidad que creó el clúster y asegurarse de no eliminarlo nunca. Inicialmente, solo esa entidad de IAM que creó el servidor puede realizar llamadas al servidor de la API de Kubernetes con kubectl. Si utiliza la consola para crear el clúster, debe asegurarse de que las mismas credenciales de IAM se encuentren en la cadena de credenciales del SDK de AWS al ejecutar comandos de kubectl en el clúster. Una vez que se crea el clúster, puede conceder acceso a su clúster a otras entidades de IAM.

Crear un clúster de Amazon EKS

  1. Si ya tiene un rol de IAM de clúster o va a crear su clúster con eksctl, puede omitir este paso. Por defecto, eksctl crea un rol para usted.

    Para crear el rol de IAM del clúster de Amazon EKS

    1. Ejecute el siguiente comando para crear un archivo de política de confianza JSON de IAM.

      cat >eks-cluster-role-trust-policy.json <<EOF { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "eks.amazonaws.com" }, "Action": "sts:AssumeRole" } ] } EOF
    2. Cree el rol de IAM del clúster de Amazon EKS. Si es necesario, introduzca eks-cluster-role-trust-policy.json con la ruta del equipo en la que escribió el archivo en el paso anterior. El comando asocia la política de confianza creada en el paso anterior al rol. Para crear un rol de IAM, a la entidad de IAM (usuario o rol) que está creando el rol se le debe asignar la siguiente acción de IAM (permiso): iam:CreateRole.

      aws iam create-role --role-name AmazonEKSClusterRole --assume-role-policy-document file://"eks-cluster-role-trust-policy.json"
    3. Adjunte la política administrada de IAM por Amazon EKS denominada AmazonEKSClusterPolicy al rol. Para adjuntar una política de IAM a una entidad de IAM (usuario o rol), se debe asignar a la entidad de IAM que adjunta la política una de las siguientes acciones de IAM (permisos): iam:AttachUserPolicy o iam:AttachRolePolicy.

      aws iam attach-role-policy --policy-arn arn:aws:iam::aws:policy/AmazonEKSClusterPolicy --role-name AmazonEKSClusterRole
  2. Cree un clúster de Amazon EKS.

    Puede crear un clúster mediante la eksctl, la AWS Management Console o la AWS CLI.

    eksctl

    Requisito previo

    La versión 0.105.0 o posterior de la herramienta de la línea de comandos eksctl instalada en su computadora o AWS CloudShell. Para instalar o actualizar eksctl, consulte Instalación o actualización del eksctl.

    Para crear el clúster

    Cree un clúster de Amazon EKS IPv4 con la versión más reciente de Kubernetes de Amazon EKS en su Región de AWS predeterminada. Antes de ejecutar el comando, realice los siguientes reemplazos:

    • Reemplace region-code por la Región de AWS en la que desea implementar sus recursos.

    • Reemplace my-cluster por el nombre del clúster.

    • Reemplace 1.22 por cualquier versión compatible con Amazon EKS.

    • Cambie los valores de vpc-private-subnets para satisfacer sus necesidades. También puede agregar identificadores adicionales. Debe especificar al menos dos ID de subredes. Si prefiere especificar subredes públicas, puede cambiar --vpc-private-subnets a --vpc-public-subnets. Las subredes públicas tienen una tabla de enrutamiento asociada a una ruta a una puerta de enlace de Internet, pero las subredes privadas no tienen una tabla de enrutamiento asociada. Recomendamos utilizar subredes privadas siempre que sea posible.

      Las subredes que elija deben cumplir los Requisitos de subred de Amazon EKS. Antes de seleccionar subredes, le recomendamos que esté familiarizado con todos los Requisitos y consideraciones de Amazon EKS VPC y subred. No puede cambiar qué subredes desea utilizar después de crear un clúster.

    eksctl create cluster --name my-cluster --region region-code --version 1.22 --vpc-private-subnets subnet-ExampleID1,subnet-ExampleID2 --without-nodegroup

    El aprovisionamiento de clústeres tarda varios minutos. Mientras se crea el clúster, aparecen varias líneas de salida. La última línea de salida es similar a la siguiente línea de ejemplo.

    [✓] EKS cluster "my-cluster" in "region-code" region is ready
    sugerencia

    Para ver la mayoría de las opciones que se pueden especificar al crear un clúster con eksctl, utilice el comando eksctl create cluster --help. Para ver todas las opciones disponibles, puede utilizar un archivo config. Para obtener más información, consulte Uso de archivos de configuración y el esquema de archivos de configuración en la documentación de eksctl. Puede encontrar ejemplos de archivos de configuración en GitHub.

    Configuración opcional

    A continuación se muestra una configuración opcional que, si es necesario, debe agregarse al comando anterior. Solo puede habilitar estas opciones al crear el clúster, no después. Si necesita especificar estas opciones, debe crear el clúster con un archivo de configuración eksctl y especifique la configuración, en lugar de utilizar el comando anterior.

    • Si desea especificar uno o varios grupos de seguridad que Amazon EKS asigna a las interfaces de red que crea, especifique la opción securityGroup.

      Independientemente de que elija grupos de seguridad o no, Amazon EKS crea un grupo de seguridad que permite la comunicación entre el clúster y la VPC. Amazon EKS asocia este grupo de seguridad, y el que elija, a las interfaces de red que crea. Para obtener más información acerca del grupo de seguridad de clúster que crea Amazon EKS, consulte Requisitos y consideraciones sobre grupos de seguridad de Amazon EKS. Puede modificar las reglas del grupo de seguridad del clúster que crea Amazon EKS. Si elige agregar sus propios grupos de seguridad, no puede cambiar los que elija tras la creación del clúster.

    • Si quiere especificar desde qué bloque de enrutamiento entre dominios sin clase (CIDR) IPv4 Kubernetes asigna direcciones IP de servicio, especifique la opción serviceIPv4CIDR.

      Especificar su propio rango puede ayudar a evitar conflictos entre servicios Kubernetes y otras redes interconectadas o conectadas a la VPC. Escriba un rango en notación CIDR. Por ejemplo: 10.2.0.0/16.

      El bloque de CIDR debe cumplir los siguientes requisitos:

      • Se encuentra dentro de una de las siguientes gamas: 10.0.0.0/8, 172.16.0.0/12 o 192.168.0.0/16.

      • Tiene un tamaño mínimo de /24 y un tamaño máximo de /12.

      • No se superponen con el rango de la VPC de los recursos de Amazon EKS.

      Solo se puede especificar esta opción cuando se utiliza la familia IPv4 de direcciones y solo en la creación de clústeres. Si no especifica esto, entonces Kubernetes asigna direcciones IP de servicio desde los bloques CIDR 10.100.0.0/16 o 172.20.0.0/16.

    • Si va a crear un clúster que es versión 1.21 o posterior y desea que el clúster asigne direcciones IPv6 a pods y servicios en lugar de direcciones IPv4, especifique la opción ipFamily.

      Kubernetes asigna direcciones IPv4 a sus pods y servicios de manera predeterminada. Antes de decidir utilizar la familia IPv6, asegúrese de estar familiarizado con todas las consideraciones y requisitos en los temas Requisitos y consideraciones de la VPC, Requisitos y consideraciones de la subred, Requisitos y consideraciones sobre grupos de seguridad de Amazon EKS y Asignación de direcciones IPv6 a pods y services. Si elige la familia IPv6, no puede especificar un intervalo de direcciones para que Kubernetes asigne direcciones de servicio IPv6 desde lo que puede hacer para la familia IPv4. Kubernetes asigna direcciones de servicio del rango de direcciones local exclusivo (fc00::/7).

    AWS Management Console

    Para crear el clúster

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

    2. Elija Add cluster (Agregar clúster) y, a continuación, elija Create (Crear).

    3. En la página Configure cluster (Configurar clúster) rellene los siguientes campos:

      • Nombre: un nombre único para el clúster. Deben ser únicos.

      • Versión de Kubernetes: la versión de Kubernetes que debe utilizarse para el clúster.

      • Rol de servicio del clúster: elija el rol de IAM del clúster para permitir que el plano de control de Kubernetes administre los recursos de AWS en su nombre.

      • Cifrado de secretos: (opcional) elija habilitar el cifrado de secretos de los secretos de Kubernetes con una clave de KMS. También puede habilitarlo después de crear el clúster. Antes de habilitar esta capacidad, asegúrese de estar familiarizado con la información de Habilitación del cifrado de secretos en un clúster existente.

      • Etiquetas: (opcional) agregue las etiquetas a su clúster. Para obtener más información, consulte Etiquetado de los recursos de Amazon EKS .

    4. Seleccione Next (Siguiente).

    5. En la página Specify networking (Especificar red) seleccione valores para los siguientes campos:

      • VPC: elija una VPC existente que cumpla con los Requisitos de Amazon EKS VPC en el que crear el clúster. Antes de elegir una VPC, le recomendamos que esté familiarizado con todos los requisitos y consideraciones de Requisitos y consideraciones de Amazon EKS VPC y subred. No puede cambiar la VPC que desea utilizar después de crear un clúster. Si no hay ninguna VPC en la lista, debe crear una primero. Para obtener más información, consulte Creación de una VPC para su clúster de Amazon EKS .

      • Subredes: de forma predeterminada, se preseleccionan todas las subredes disponibles de la VPC especificada en el campo anterior. Debe seleccionar al menos dos.

        Las subredes que elija deben cumplir los Requisitos de subred de Amazon EKS. Antes de seleccionar subredes, le recomendamos que esté familiarizado con todos los Requisitos y consideraciones de Amazon EKS VPC y subred. No puede cambiar qué subredes desea utilizar después de crear un clúster.

        Grupos de seguridad: (opcional) especifique uno o varios grupos de seguridad que desea que Amazon EKS asocie a las interfaces de red que crea.

        Independientemente de que elija grupos de seguridad o no, Amazon EKS crea un grupo de seguridad que permite la comunicación entre el clúster y la VPC. Amazon EKS asocia este grupo de seguridad, y el que elija, a las interfaces de red que crea. Para obtener más información acerca del grupo de seguridad de clúster que crea Amazon EKS, consulte Requisitos y consideraciones sobre grupos de seguridad de Amazon EKS. Puede modificar las reglas del grupo de seguridad del clúster que crea Amazon EKS. Si elige agregar sus propios grupos de seguridad, no puede cambiar los que elija tras la creación del clúster.

      • Elección de la familia de direcciones IP del clúster: si la versión que eligió para el clúster es 1.20 o anterior, solo estará disponible la opción IPv4. Si eligió 1.21 o posterior, IPv4 y IPv6 están disponibles.

        Kubernetes asigna direcciones IPv4 a sus pods y servicios de manera predeterminada. Antes de decidir utilizar la familia IPv6, asegúrese de estar familiarizado con todas las consideraciones y requisitos en los temas Requisitos y consideraciones de la VPC, Requisitos y consideraciones de la subred, Requisitos y consideraciones sobre grupos de seguridad de Amazon EKS y Asignación de direcciones IPv6 a pods y services. Si elige la familia IPv6, no puede especificar un intervalo de direcciones para que Kubernetes asigne direcciones de servicio IPv6 desde lo que puede hacer para la familia IPv4. Kubernetes asigna direcciones de servicio del rango de direcciones local exclusivo (fc00::/7).

      • (Opcional) Elija Configuración del rango de direcciones IP de Kubernetes Service y especifique un Rango de servicio IPv4.

        Especificar su propio rango puede ayudar a evitar conflictos entre servicios Kubernetes y otras redes interconectadas o conectadas a la VPC. Escriba un rango en notación CIDR. Por ejemplo: 10.2.0.0/16.

        El bloque de CIDR debe cumplir los siguientes requisitos:

        • Se encuentra dentro de una de las siguientes gamas: 10.0.0.0/8, 172.16.0.0/12 o 192.168.0.0/16.

        • Tiene un tamaño mínimo de /24 y un tamaño máximo de /12.

        • No se superponen con el rango de la VPC de los recursos de Amazon EKS.

        Solo se puede especificar esta opción cuando se utiliza la familia IPv4 de direcciones y solo en la creación de clústeres. Si no especifica esto, entonces Kubernetes asigna direcciones IP de servicio desde los bloques CIDR 10.100.0.0/16 o 172.20.0.0/16.

      • Para el Acceso al punto de conexión del clúster, seleccione una opción. Una vez que se crea el clúster, puede cambiar esta opción. Antes de seleccionar una opción no predeterminada, asegúrese de familiarizarse con las opciones y sus implicaciones. Para obtener más información, consulte Control de acceso al punto de conexión del clúster de Amazon EKS .

    6. Puede aceptar los valores predeterminados en la sección Networking add-ons (Complementos de red) para instalar la versión predeterminada de los complementos Amazon VPC CNI plugin for Kubernetes, CoreDNS y kube-proxy de Amazon EKS. O, si lo prefiere, puede seleccionar una versión diferente. Si no necesita la funcionalidad de ninguno de los complementos, puede eliminarlos una vez que se cree el clúster. Si necesita administrar la configuración administrada de Amazon EKS para cualquiera de estos complementos usted mismo, elimine la administración de Amazon EKS del complemento una vez que se haya creado el clúster. Para obtener más información, consulte Complementos de Amazon EKS .

    7. Seleccione Next (Siguiente).

    8. En la página Configure logging (Configurar registro) puede elegir opcionalmente los tipos de registro que desea habilitar. De forma predeterminada, los tipos de registro están Disabled (Deshabilitados). Antes de seleccionar otra opción, familiarícese con la información de Registro de plano de control de Amazon EKS. Puede cambiar esta opción después de crear un clúster.

    9. Seleccione Next (Siguiente).

    10. En la página Review and create (Revisar y crear) revise la información que ha introducido o seleccionado en las páginas anteriores. Si necesita realizar cambios, seleccione Edit (Editar). Cuando esté satisfecho, seleccione Create (Crear). El campo Status (Estado) muestra CREATING (CREANDO) mientras se aprovisiona el clúster.

      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 .

      El aprovisionamiento de clústeres tarda varios minutos.

    AWS CLI

    Para crear el clúster

    1. Cree el clúster con el comando siguiente. Antes de ejecutar el comando, realice los siguientes reemplazos:

      • Reemplace region-code por la Región de AWS en la que desea implementar sus recursos.

      • Reemplace my-cluster por el nombre del clúster.

      • Reemplace 1.22 por cualquier versión compatible con Amazon EKS.

      • Reemplace 111122223333 por el ID de la cuenta y AmazonEKSClusterRole por el nombre rol de IAM de su clúster.

      • Reemplace los valores subnetIds con valores propios. También puede agregar identificadores adicionales. Debe especificar al menos dos ID de subredes.

        Las subredes que elija deben cumplir los Requisitos de subred de Amazon EKS. Antes de seleccionar subredes, le recomendamos que esté familiarizado con todos los Requisitos y consideraciones de Amazon EKS VPC y subred. No puede cambiar qué subredes desea utilizar después de crear un clúster.

      • Si no desea especificar un ID de grupo de seguridad, elimine ,securityGroupIds=sg-ExampleID1 del comando. Si desea especificar uno o varios ID de grupo de seguridad, sustituya los valores de securityGroupIds con la suya propia. También puede agregar identificadores adicionales.

        Independientemente de que elija grupos de seguridad o no, Amazon EKS crea un grupo de seguridad que permite la comunicación entre el clúster y la VPC. Amazon EKS asocia este grupo de seguridad, y el que elija, a las interfaces de red que crea. Para obtener más información acerca del grupo de seguridad de clúster que crea Amazon EKS, consulte Requisitos y consideraciones sobre grupos de seguridad de Amazon EKS. Puede modificar las reglas del grupo de seguridad del clúster que crea Amazon EKS. Si elige agregar sus propios grupos de seguridad, no puede cambiar los que elija tras la creación del clúster.

      aws eks create-cluster --region region-code --name my-cluster --kubernetes-version 1.22 \ --role-arn arn:aws:iam::111122223333:role/AmazonEKSClusterRole \ --resources-vpc-config subnetIds=subnet-ExampleID1,subnet-ExampleID2,securityGroupIds=sg-ExampleID1
      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 .

      Configuración opcional

      A continuación se muestra una configuración opcional que, si es necesario, debe agregarse al comando anterior. Solo puede habilitar estas opciones al crear el clúster, no después.

      • Si quiere especificar desde qué bloque de enrutamiento entre dominios sin clase (CIDR) IPv4 Kubernetes asigna direcciones IP de servicio, debe especificarlo agregando el --kubernetes-network-config serviceIpv4Cidr=CIDR block al siguiente comando.

        Especificar su propio rango puede ayudar a evitar conflictos entre servicios Kubernetes y otras redes interconectadas o conectadas a la VPC. Escriba un rango en notación CIDR. Por ejemplo: 10.2.0.0/16.

        El bloque de CIDR debe cumplir los siguientes requisitos:

        • Se encuentra dentro de una de las siguientes gamas: 10.0.0.0/8, 172.16.0.0/12 o 192.168.0.0/16.

        • Tiene un tamaño mínimo de /24 y un tamaño máximo de /12.

        • No se superponen con el rango de la VPC de los recursos de Amazon EKS.

        Solo se puede especificar esta opción cuando se utiliza la familia IPv4 de direcciones y solo en la creación de clústeres. Si no especifica esto, entonces Kubernetes asigna direcciones IP de servicio desde los bloques CIDR 10.100.0.0/16 o 172.20.0.0/16.

      • Si crea un clúster de versión 1.21 o posterior y desea que asigne direcciones IPv6 a los pods y los servicios en lugar de direcciones IPv4, agregue --kubernetes-network-config ipFamily=ipv6 al siguiente comando.

        Kubernetes asigna direcciones IPv4 a sus pods y servicios de manera predeterminada. Antes de decidir utilizar la familia IPv6, asegúrese de estar familiarizado con todas las consideraciones y requisitos en los temas Requisitos y consideraciones de la VPC, Requisitos y consideraciones de la subred, Requisitos y consideraciones sobre grupos de seguridad de Amazon EKS y Asignación de direcciones IPv6 a pods y services. Si elige la familia IPv6, no puede especificar un intervalo de direcciones para que Kubernetes asigne direcciones de servicio IPv6 desde lo que puede hacer para la familia IPv4. Kubernetes asigna direcciones de servicio del rango de direcciones local exclusivo (fc00::/7).

    2. La provisión del clúster puede tardar varios minutos. Puede consultar el estado del clúster con el comando siguiente.

      aws eks describe-cluster \ --region region-code \ --name my-cluster \ --query "cluster.status"

      No continúe con el paso siguiente hasta que la salida devuelta sea ACTIVE.

  3. Si ha creado el clúster mediante eksctl, puede omitir este paso. Esto se debe a que eksctl ya has completado este paso por usted. Habilite kubectl para comunicarse con el clúster agregando un nuevo contexto al archivo kubectl config. Para obtener más información acerca de cómo crear y actualizar el archivo, consulte Creación de una kubeconfig para Amazon EKS.

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

    El ejemplo de resultado es el siguiente.

    Added new context arn:aws:eks:region-code:111122223333:cluster/my-cluster to /home/username/.kube/config
  4. Confirme la comunicación con el clúster ejecutando el siguiente comando.

    kubectl get svc

    El ejemplo de resultado es el siguiente.

    NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.100.0.1 <none> 443/TCP 28h
  5. (Recomendado) Para utilizar algunos complementos de Amazon EKS o a fin de permitir que las cargas de trabajo individuales de Kubernetes cuenten con permisos de AWS Identity and Access Management (IAM) específicos, cree un proveedor de OpenID Connect de IAM (OIDC) para el clúster. Para conocer instrucciones sobre cómo crear un proveedor de OIDC de IAM para su clúster, consulte Crear un proveedor de OIDC de IAM para su clúster. Solo necesita crear un proveedor de OIDC de IAM para su clúster una vez. Para obtener más información sobre los complementos de Amazon EKS, consulte Complementos de Amazon EKS. Para obtener más información acerca de la asignación de permisos de IAM específicos a sus cargas de trabajo, consulte Información técnica general sobre los roles de IAM para cuentas de servicio.

  6. (Recomendado) Configure el clúster para el complemento Amazon VPC CNI plugin for Kubernetes antes de implementar nodos Amazon EC2 en su clúster. De forma predeterminada, el complemento se instaló con el clúster. Cuando agrega nodos de Amazon EC2 a su clúster, el complemento se implementa automáticamente en cada nodo de Amazon EC2 que agregue. El complemento requiere que adjunte una de las siguientes políticas de IAM a un rol de IAM:

    El rol de IAM al que adjunta la política puede ser el rol de IAM de nodo o un rol dedicado que se usa solo para el complemento. Recomendamos adjuntar la política a este rol. Para obtener más información sobre la creación del rol, consulte la Configuración del Amazon VPC CNI plugin for Kubernetes para utilizar los roles de IAM en las cuentas de servicio o la Rol de IAM de nodo de Amazon EKS.

  7. Si ha implementado el clúster mediante el AWS Management Console, puede omitir este paso. La AWS Management Console implementa los complementos Amazon VPC CNI plugin for Kubernetes, CoreDNS y kube-proxy de Amazon EKS, de forma predeterminada.

    (Opcional) Si implementa el clúster mediante cualquiera de los doseksctl o el AWS CLI, entonces se implementan complementos Amazon VPC CNI plugin for Kubernetes, CoreDNS y kube-proxy autoadministrados. Puede migrar los complementos autoadministrados Amazon VPC CNI plugin for Kubernetes, CoreDNS y kube-proxy que se implementan con su clúster en complementos de Amazon EKS. Para obtener más información, consulte Complementos de Amazon EKS .

Siguientes pasos recomendados: