Creación de un grupo de nodos administrados - 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.

Creación de un grupo de nodos administrados

En este tema, se describe cómo puede lanzar grupos de nodos administrados de Amazon EKS que se registra en el clúster de Amazon EKS. Una vez que los nodos se hayan unido al clúster, puede implementar aplicaciones de Kubernetes en ellos.

Si es la primera vez que lanza un grupo de nodos administrado de Amazon EKS, le recomendamos que siga una de nuestras guías Introducción a Amazon EKS en su lugar. Las guías proporcionan explicaciones para crear un clúster de Amazon EKS con nodos.

importante
Requisitos previos

Puede crear un grupo de nodos administrados con eksctl o la AWS Management Console.

eksctl
Crear un grupo de nodos administrados con eksctl

En este procedimiento, se requiere la versión 0.183.0 o posterior de la eksctl. Puede verificar la versión con el siguiente comando:

eksctl version

Para obtener instrucciones sobre cómo instalar o actualizar eksctl, consulte Instalación en la documentación de eksctl.

  1. (Opcional) Si la política administrada de IAM AmazonEKS_CNI_Policy se adjunta a su Rol de IAM de nodo de Amazon EKS, recomendamos asignarla a un rol de IAM asociado a la cuenta de servicios del aws-node de Kubernetes en su lugar. Para obtener más información, consulte Configuración de Amazon VPC CNI plugin for Kubernetes para utilizar los roles de IAM en las cuentas de servicio (IRSA).

  2. Cree un grupo de nodos administrados con una plantilla de lanzamiento personalizada o sin ella. La especificación manual de una plantilla de lanzamiento permite una mayor personalización de un grupo de nodos. Por ejemplo, puede permitir implementar una AMI personalizada o proporcionar argumentos al script boostrap.sh en una AMI optimizada para Amazon EKS. Para obtener una lista completa de todas las opciones y valores predeterminados disponibles, ingrese el siguiente comando.

    eksctl create nodegroup --help

    En el siguiente comando, reemplace my-cluster por el nombre del clúster y sustituya my-mng por el nombre del grupo de nodos. 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.

    importante

    Si no utiliza una plantilla de lanzamiento personalizada al crear un grupo de nodos administrados, no utilice una en otro momento para el grupo de nodos. Si no especificó una plantilla de lanzamiento personalizada, el sistema genera automáticamente una plantilla de lanzamiento que no recomendamos que modifique manualmente. Si se modifica manualmente esta plantilla de lanzamiento generada automáticamente, se podrían producir errores.

    Sin una plantilla de lanzamiento

    eksctl crea una plantilla de lanzamiento predeterminada de Amazon EC2 en su cuenta e implementa el grupo de nodos mediante una plantilla de lanzamiento que crea en función de las opciones que especifique. Antes de especificar un valor para --node-type, consulte Elección de un tipo de instancia de Amazon EC2.

    Sustituya ami-family por una palabra clave permitida. Para obtener más información, consulte Configuración de la familia AMI del nodo en la documentación de eksctl. Reemplace my-key con el nombre de su par de claves de Amazon EC2 o la clave pública. Esta clave se utiliza para SSH en sus nodos después de que se lancen.

    nota

    Para Windows, este comando no habilita SSH. En su lugar, asocia el par de claves de Amazon EC2 con la instancia y le permite RDP en la instancia.

    Si aún no tiene un par de claves de Amazon EC2, puede crear uno en la AWS Management Console. Para obtener información de Linux, consulte Pares de claves de Amazon EC2 e instancias de Linux en la Guía del usuario de Amazon EC2. Para obtener información de Windows, consulte Pares de claves de Amazon EC2 e instancias de Windows en la Guía del usuario de Amazon EC2.

    Se recomienda bloquear el acceso del Pod al IMDS si se cumplen las siguientes condiciones:

    • Tiene previsto asignar roles de IAM a todas sus cuentas de servicio de Kubernetes para que los Pods solo tengan los permisos mínimos que necesitan.

    • Ninguno de los Pods del clúster requiere acceso al servicio de metadatos de la instancia de Amazon EC2 (IMDS) por otros motivos, como la recuperación de la Región de AWS actual.

    Para obtener más información, consulte Restringir el acceso al perfil de instancias asignado al nodo de trabajo.

    Para bloquear el acceso del Pod a IMDS, agregue la opción --disable-pod-imds al siguiente comando.

    eksctl create nodegroup \ --cluster my-cluster \ --region region-code \ --name my-mng \ --node-ami-family ami-family \ --node-type m5.large \ --nodes 3 \ --nodes-min 2 \ --nodes-max 4 \ --ssh-access \ --ssh-public-key my-key

    Las instancias pueden asignar de manera opcional un número significativamente mayor de direcciones IP a los Pods, asignar direcciones IP a los Pods de un bloque de CIDR diferente al de la instancia e implementar en un clúster sin acceso a Internet. Para obtener más información, consulte Aumentar la cantidad de direcciones IP disponibles para sus nodos de Amazon EC2, Redes personalizadas para los pods y Requisitos del clúster privado para obtener opciones adicionales que se pueden agregar al comando anterior.

    Los grupos de nodos administrados calculan y aplican un único valor para el número máximo de Pods que se pueden ejecutar en cada nodo del grupo de nodos, según el tipo de instancia. Si crea un grupo de nodos con distintos tipos de instancias, el valor más pequeño calculado en todos los tipos de instancias se aplica como el número máximo de Pods que se pueden ejecutar en cada tipo de instancia del grupo de nodos. Los grupos de nodos administrados calculan el valor mediante el script al que se hace referencia en Número máximo de Pods recomendado por Amazon EKS para cada tipo de instancia de Amazon EC2.

    Con una plantilla de lanzamiento

    La plantilla de lanzamiento ya debe existir y cumplir con los requisitos especificados en Conceptos básicos de configuración de plantillas de lanzamiento.

    Se recomienda bloquear el acceso del Pod al IMDS si se cumplen las siguientes condiciones:

    • Tiene previsto asignar roles de IAM a todas sus cuentas de servicio de Kubernetes para que los Pods solo tengan los permisos mínimos que necesitan.

    • Ninguno de los Pods del clúster requiere acceso al servicio de metadatos de la instancia de Amazon EC2 (IMDS) por otros motivos, como la recuperación de la Región de AWS actual.

    Para obtener más información, consulte Restringir el acceso al perfil de instancias asignado al nodo de trabajo.

    Si desea bloquear el acceso de Pod a IMDS, especifique la configuración necesaria en la plantilla de lanzamiento.

    1. Copie los siguientes contenidos en su dispositivo. Reemplace los example values y, a continuación, ejecute el comando modificado para crear el archivo eks-nodegroup.yaml. Varias configuraciones que especifique al implementar sin una plantilla de lanzamiento se mueven a la plantilla de lanzamiento. Si no especifica una version, se usa la versión de plantilla predeterminada.

      cat >eks-nodegroup.yaml <<EOF apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: my-cluster region: region-code managedNodeGroups: - name: my-mng launchTemplate: id: lt-id version: "1" EOF

      Para obtener una lista completa de configuraciones de archivo de config de eksctl, consulte Esquema de archivo de Config en la documentación de eksctl. Las instancias pueden asignar de manera opcional un número significativamente mayor de direcciones IP a los Pods, asignar direcciones IP a los Pods de un bloque de CIDR diferente al de la instancia, utilizar el tiempo de ejecución de containerd e implementar en un clúster sin acceso a Internet saliente. Para obtener más información, consulte Aumentar la cantidad de direcciones IP disponibles para sus nodos de Amazon EC2, Redes personalizadas para los pods, Prueba de la migración de Docker a containerd y Requisitos del clúster privado para obtener opciones adicionales que se pueden agregar al archivo de config.

      Si no especificó ningún ID de AMI en la plantilla de lanzamiento, los grupos de nodos administrados calculan y aplican un único valor para el número máximo de Pods que se pueden ejecutar en cada nodo del grupo de nodos, según el tipo de instancia. Si crea un grupo de nodos con distintos tipos de instancias, el valor más pequeño calculado en todos los tipos de instancias se aplica como el número máximo de Pods que se pueden ejecutar en cada tipo de instancia del grupo de nodos. Los grupos de nodos administrados calculan el valor mediante el script al que se hace referencia en Número máximo de Pods recomendado por Amazon EKS para cada tipo de instancia de Amazon EC2.

      Si especificó un ID de AMI en la plantilla de lanzamiento, debe especificar el número máximo de Pods que se pueden ejecutar en cada nodo del grupo de nodos si usa redes personalizadas o quiere aumentar el número de direcciones IP asignadas a la instancia. Para obtener más información, consulte Número máximo de Pods recomendado por Amazon EKS para cada tipo de instancia de Amazon EC2.

    2. Implemente el grupo de nodos con el siguiente comando.

      eksctl create nodegroup --config-file eks-nodegroup.yaml
AWS Management Console
Para crear un grupo de nodos administrados con la AWS Management Console
  1. Espere a que el estado del clúster sea ACTIVE. No se puede crear un grupo de nodos administrados para un clúster que aún no está ACTIVE.

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

  3. Elija el nombre del clúster en el que desea crear un grupo de nodos administrados.

  4. En la pestaña Informática.

  5. Elija Agregar grupo de nodos.

  6. En la página Configurar grupo de nodos rellene los parámetros en consecuencia y, a continuación, elija Siguiente.

    • Nombre: Ingrese un nombre único para el grupo de nodos administrado. 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.

    • Rol de IAM de nodos: Elija el rol de instancia de nodo que se va a utilizar con su grupo de nodos. Para obtener más información, consulte Rol de IAM de nodo de Amazon EKS.

      importante
      • No se puede usar el mismo rol que se usa para crear clústeres.

      • Es recomendable utilizar un rol que no se esté utilizando actualmente en ningún grupo de nodos autoadministrados. De lo contrario, se utiliza en un nuevo grupo de nodos autoadministrados. Para obtener más información, consulte Eliminación de un grupo de nodos administrados.

    • Utilizar la plantilla de lanzamiento: (opcional) seleccione esta opción si desea utilizar una plantilla de lanzamiento existente. Seleccione un Nombre de plantilla de lanzamiento. A continuación, seleccione Versión de plantilla de lanzamiento. Si no selecciona una versión, Amazon EKS utiliza la versión predeterminada de la plantilla. Las plantillas de lanzamiento permiten una mayor personalización del grupo de nodos, como permitir implementar una AMI personalizada, asignar un número significativamente mayor de direcciones IP a los Pods, asignar direcciones IP a los Pods de un bloque de CIDR diferente al de la instancia, habilitar el tiempo de ejecución de containerd para sus instancias e implementar nodos en un clúster sin acceso a Internet saliente. Para obtener más información, consulte Aumentar la cantidad de direcciones IP disponibles para sus nodos de Amazon EC2, Redes personalizadas para los pods, Prueba de la migración de Docker a containerd y Requisitos del clúster privado.

      La plantilla de lanzamiento debe cumplir los requisitos de Personalización de nodos administrados con plantillas de lanzamiento. Si no utiliza su propia plantilla de lanzamiento, la API de Amazon EKS crea una plantilla de lanzamiento predeterminada de Amazon EC2 en su cuenta e implementa el grupo de nodos utilizando la plantilla de lanzamiento predeterminada.

      Si implementa roles de IAM para cuentas de servicio, asigna los permisos necesarios directamente a todos los Pod que requieren acceso a servicios de AWS y ningún Pods del clúster requiere acceso a IMDS por otros motivos (como recuperar la Región de AWS actual), también puede desactivar el acceso a IMDS para los Pods que no utilizan redes de host en una plantilla de lanzamiento. Para obtener más información, consulte Restringir el acceso al perfil de instancias asignado al nodo de trabajo.

    • Etiquetas de Kubernetes: (opcional) puede optar por aplicar etiquetas de Kubernetes a los nodos del grupo de nodos administrado.

    • Taints de Kubernetes: (opcional) puede optar por aplicar taints de Kubernetes de los nodos de su grupo de nodos administrados. Las opciones disponibles en el menú Efecto son NoSchedule, NoExecute y PreferNoSchedule. Para obtener más información, consulte Taints de nodos para grupos de nodos administrados.

    • Etiquetas: (Opcional) puede elegir etiquetar su grupo de nodos administrado de Amazon EKS. Estas etiquetas no se propagan a otros recursos del grupo de nodos, como instancias o grupos de escalado automático. Para obtener más información, consulte Etiquetado de los recursos de Amazon EKS.

  7. En la página Establecer configuración de informática y escalado, rellene los parámetros según corresponda y, a continuación, elija Siguiente.

    • Tipo de AMI: Seleccione un tipo de AMI. Si implementa instancias Arm, asegúrese de revisar las consideraciones de AMI de Amazon Linux optimizada para Amazon EKS Arm antes de implementarlas.

      Si especificó una plantilla de lanzamiento en la página anterior y especificó una AMI en la plantilla de lanzamiento, no podrá seleccionar un valor. Se muestra el valor de la plantilla. La AMI especificada en la plantilla debe cumplir los requisitos de Especificación de una AMI.

    • Tipo de capacidad: Seleccione un tipo de capacidad. Para obtener más información sobre cómo elegir un tipo de capacidad, consulte Tipos de capacidad de grupo de nodos administrado. No se pueden mezclar diferentes tipos de capacidad dentro del mismo grupo de nodos. Si desea utilizar ambos tipos de capacidad, cree grupos de nodos independientes, cada uno con su propia capacidad y tipos de instancias.

    • Tipos de instancia: Se especifican uno o más tipos de instancia de forma predeterminada. Para eliminar un tipo de instancia predeterminado, seleccione la casilla X en la parte derecha del tipo de instancia. Elija los tipos de instancia que se van a utilizar en el grupo de nodos administrado. Para obtener más información, consulte Elección de un tipo de instancia de Amazon EC2.

      La consola muestra un conjunto de tipos de instancia de uso frecuente. Si necesita crear un grupo de nodos administrados con un tipo de instancia que no figura en la lista, utilice eksctl, la AWS CLI, AWS CloudFormation o un SDK para crear el grupo de nodos. Si especificó una plantilla de lanzamiento en la página anterior, no podrá seleccionar un valor porque el tipo de instancia debe especificarse en la plantilla de lanzamiento. Se muestra el valor de la plantilla de lanzamiento. Si seleccionó Spot para Tipo de capacidad, recomendamos especificar varios tipos de instancia para mejorar la disponibilidad.

    • Tamaño del disco: Ingrese el tamaño del disco (en GiB) que se va a utilizar para el volumen raíz de su nodo.

      Si especificó una plantilla de lanzamiento en la página anterior, no podrá seleccionar un valor porque debe especificarse en la plantilla de lanzamiento.

    • Tamaño deseado: Especifique el número actual de nodos que debe mantener el grupo de nodos administrado durante el lanzamiento.

      nota

      Amazon EKS no escala automáticamente el grupo de nodos de entrada o salida. Sin embargo, puede configurar el escalador automático de clústeres de Kubernetes para que lo haga por usted.

    • Tamaño mínimo: Especifica la cantidad mínima de nodos a los que puede escalar el grupo de nodos administrado.

    • Tamaño máximo: Especifica el número máximo de nodos a los que puede escalar el grupo de nodos administrado.

    • Configuración de la actualización del grupo de nodos: (Opcional) puede seleccionar el número o el porcentaje de nodos que se actualizarán en paralelo. Estos nodos no estarán disponibles durante la actualización. En Máximo no disponible, seleccione una de las siguientes opciones y especifique un valor:

      • Número: Seleccione y especifique el número de nodos del grupo de nodos que se pueden actualizar en paralelo.

      • Porcentaje: Seleccione y especifique el porcentaje de nodos del grupo de nodos que se pueden actualizar en paralelo. Esto es útil si tiene un gran número de nodos en su grupo de nodos.

  8. En la página Especificar redes, rellene los parámetros como corresponda y, a continuación, elija Siguiente.

    • Subredes: Elija las subredes en las que lanzar los nodos administrados.

      importante

      Si está ejecutando una aplicación con estado en varias zonas de disponibilidad respaldadas por volúmenes de Amazon EBS y utilizando el Escalado automático de Kubernetes, debe configurar varios grupos de nodos, cada uno enfocado a una sola zona de disponibilidad. Además, debe habilitar la característica --balance-similar-node-groups.

      importante
      • Si elige una subred pública y el clúster solo tiene habilitado el punto de conexión del servidor API público, la subred debe tener MapPublicIPOnLaunch establecido en true para que las instancias se unan correctamente a un clúster. Si la subred se creó con eksctl o las plantillas de AWS CloudFormation ofrecidas por Amazon EKS el 26 de marzo de 2020 o después, este valor ya está establecido en true. Si las subredes se crearon con eksctl o las plantillas de AWS CloudFormation antes del 26 de marzo de 2020, debe cambiar el valor de forma manual. Para obtener más información, consulte Modificación del atributo de direcciones IPv4 públicas de su subred.

      • Si utiliza una plantilla de lanzamiento y especifica varias interfaces de red, Amazon EC2 no asignará automáticamente una dirección IPv4 pública, incluso si MapPublicIpOnLaunch se establece en true. Para que los nodos se unan al clúster en este escenario, debe habilitar el punto de conexión del servidor API privado del clúster o lanzar nodos en una subred privada con acceso a Internet saliente proporcionado a través de un método alternativo, como una puerta de enlace NAT. A fin de obtener más información, consulte Direcciones IP de instancias de Amazon EC2 en la Guía del usuario de Amazon EC2.

    • Configure el acceso SSH a los nodos (opcional). El acceso SSH le permite conectarse a sus instancias y recopilar información de diagnóstico si hay algún problema. Le recomendamos que habilite el acceso remoto cuando cree un grupo de nodos. No puede habilitar el acceso remoto después de crear el grupo de nodos.

      Si eligió usar una plantilla de lanzamiento, esta opción no se muestra. Para habilitar el acceso remoto a los nodos, especifique un par de claves en la plantilla de lanzamiento y asegúrese de que el puerto adecuado esté abierto para los nodos de los grupos de seguridad que especifique en la plantilla de lanzamiento. Para obtener más información, consulte Uso de grupos de seguridad personalizados.

      nota

      Para Windows, este comando no habilita SSH. En su lugar, asocia el par de claves de Amazon EC2 con la instancia y le permite RDP en la instancia.

    • En Par de claves de SSH seleccione una clave SSH de Amazon EC2 para utilizar. Para obtener información de Linux, consulte Pares de claves de Amazon EC2 e instancias de Linux en la Guía del usuario de Amazon EC2. Para obtener información de Windows, consulte Pares de claves de Amazon EC2 e instancias de Windows en la Guía del usuario de Amazon EC2. Si eligió usar una plantilla de lanzamiento, no puede seleccionar una. Cuando se proporciona una clave SSH de Amazon EC2 para grupos de nodos que utilizan AMI de Bottlerocket, el contenedor administrativo también se habilita. Para obtener más información, consulte Contenedor de administración en GitHub.

    • En Permitir acceso remoto de SSH desde, si desea limitar el acceso a instancias específicas, seleccione los grupos de seguridad asociados a dichas instancias. Si no selecciona grupos de seguridad específicos, se permite el acceso SSH desde cualquier lugar de Internet (0.0.0.0/0).

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

    Si los nodos no se unen al clúster, consulte Los nodos no pueden unirse al clúster en la Guía de solución de problemas.

  10. Observe el estado de los nodos y espere a que aparezca el estado Ready.

    kubectl get nodes --watch
  11. (Solo para nodos de GPU) Si ha elegido un tipo de instancia de GPU y la AMI acelerada optimizada para Amazon EKS, debe aplicar el complemento de dispositivo NVIDIA para Kubernetes como un DaemonSet en su clúster. Reemplace vX.X.X con la versión Plugin de dispositivo NVidia/K8Sdeseada antes de ejecutar el siguiente comando.

    kubectl apply -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/vX.X.X/nvidia-device-plugin.yml

Ahora que tiene un clúster de Amazon EKS en funcionamiento con nodos, está listo para comenzar a instalar los complementos de Kubernetes e implementar aplicaciones en su clúster. Los siguientes temas de documentación lo ayudarán a ampliar la funcionalidad de su clúster.

  • La entidad principal de IAM que creó el clúster es la única entidad principal que puede realizar llamadas al servidor de la API de Kubernetes con kubectl o laAWS Management Console. Si desea que otras entidades principales de IAM tengan acceso al clúster, debe agregarlas. Para obtener más información, consulte Concesión de acceso a las API de Kubernetes y Permisos necesarios.

  • Se recomienda bloquear el acceso del Pod al IMDS si se cumplen las siguientes condiciones:

    • Tiene previsto asignar roles de IAM a todas sus cuentas de servicio de Kubernetes para que los Pods solo tengan los permisos mínimos que necesitan.

    • Ninguno de los Pods del clúster requiere acceso al servicio de metadatos de la instancia de Amazon EC2 (IMDS) por otros motivos, como la recuperación de la Región de AWS actual.

    Para obtener más información, consulte Restringir el acceso al perfil de instancias asignado al nodo de trabajo.

  • Escalado automático: Configure el escalador automático de clústeres de Kubernetes para ajustar de forma automática el número de nodos en sus grupos de nodos.

  • Implemente una aplicación de muestra en su clúster.

  • Administración de clústeres: Conozca cómo utilizar herramientas importantes para administrar el clúster.