Creación de un grupo de nodos administrados para un clúster - Amazon EKS

Creación de un grupo de nodos administrados para un clúster

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 en Introducción a Amazon EKS en su lugar. Estas guías proporcionan explicaciones para crear un clúster de Amazon EKS con nodos.

importante

Puede crear un grupo de nodos administrados con cualquiera de las siguientes opciones:

eksctl

Crear un grupo de nodos administrados con eksctl

En este procedimiento, se requiere la versión 0.194.0 o posterior de 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 de aws-node de Kubernetes en su lugar. Para obtener más información, consulte Configuración del complemento de CNI de Amazon VPC para utilizar 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 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 cuando crea un grupo de nodos administrados, evite utilizarla más adelante para ese mismo grupo. 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 nodo de Amazon EC2 óptimo.

Reemplace 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 instancias (IMDS) de Amazon EC2 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 Asignación de más direcciones IP a los nodos de Amazon EKS con prefijos, Implementación de pods en subredes alternativas con redes personalizadas y Implementación de clústeres privados con acceso limitado a Internet 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 el 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 instancias (IMDS) de Amazon EC2 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. Sustituya los valores de ejemplo 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 utiliza 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 Asignación de más direcciones IP a los nodos de Amazon EKS con prefijos, Implementación de pods en subredes alternativas con redes personalizadas, Prueba de la migración de Amazon Linux 2 de Docker a containerd y Implementación de clústeres privados con acceso limitado a Internet para obtener opciones adicionales que se pueden agregar al archivo de config.

    Si no especificó ningún ID de la 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 el número máximo de pods recomendado por Amazon EKS para cada tipo de instancia de Amazon EC2.

    Si especificó un ID de la 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

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.

  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 utilizar el mismo rol que se utiliza 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 administrado de un clúster.

  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 las AMI Arm de Amazon Linux optimizadas para Amazon EKS 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 que están en 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. Consulte Creación de un grupo de nodos administrados con bloques de capacidad para ML para obtener información sobre el aprovisionamiento y escalado de nodos de trabajo acelerados por GPU.

    • 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 nodo de Amazon EC2 óptimo.

      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 CLI de AWS, 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 como Capacity type (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. Para obtener más información, consulte Escalador automático de clústeres en AWS.

    • 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 Escalador automático de clústeres 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 de 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 de 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ó utilizar 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ó utilizar 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 se seleccionan 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 el capítulo 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 NVIDIA/k8s-device-plugin deseada antes de ejecutar el siguiente comando.

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

Instalar complementos de Kubernetes

Ahora que tiene un clúster de Amazon EKS con nodos en funcionamiento, 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.