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.
Personalización de nodos administrados con plantillas de lanzamiento
Para obtener el nivel más alto de personalización, puede implementar nodos administrados mediante el uso de su propia plantilla de lanzamiento. El uso de una plantilla de lanzamiento le permite hacer lo siguiente:
-
Proporcionar argumentos de arranque en la implementación de un nodo, como argumentos
kubelet
adicionales. -
Asignar direcciones IP a Pods desde un bloque de CIDR diferente de la dirección IP asignada al nodo.
-
Implementar su propia AMI personalizada en los nodos.
-
Implementar su propia CNI personalizada en los nodos.
Si proporciona su propia plantilla de lanzamiento al crear por primera vez un grupo de nodos administrado, también tendrá mayor flexibilidad más adelante. Siempre que implemente un grupo de nodos administrado con su propia plantilla de lanzamiento, puede actualizarlo de forma iterativa con una versión diferente de la misma plantilla de lanzamiento. Cuando actualiza el grupo de nodos a una versión diferente de la plantilla de lanzamiento, todos los nodos del grupo se reciclan para que coincidan con la nueva configuración de la versión de la plantilla de lanzamiento especificada.
Los grupos de nodos administrados se implementan siempre con una plantilla de lanzamiento para utilizar con el grupo de Amazon EC2 Auto Scaling. Cuando no proporciona una plantilla de lanzamiento, la API de Amazon EKS crea una en su cuenta de forma automática con los valores predeterminados. Sin embargo, no le recomendamos que modifique las plantillas de lanzamiento generadas automáticamente. Además, los grupos de nodos existentes que no utilizan una plantilla de lanzamiento personalizada no se pueden actualizar directamente. En su lugar, debe crear un nuevo grupo de nodos con una plantilla de lanzamiento personalizada para hacerlo.
Conceptos básicos de configuración de plantillas de lanzamiento
Puede crear una plantilla de lanzamiento de Amazon EC2 Auto Scaling con la AWS Management Console, la AWS CLI o un SDK de AWS. Para obtener más información, consulte Creación de una plantilla de lanzamiento para un grupo de Auto Scaling en la guía del usuario de Amazon EC2 Auto Scaling. Algunas de las opciones de configuración de una plantilla de lanzamiento son similares a las que se utilizan para la configuración de nodos administrados. Al implementar o actualizar un grupo de nodos con una plantilla de lanzamiento, se deben especificar algunas opciones en la configuración del grupo de nodos o en la plantilla de lanzamiento. No especifique un ajuste en ambos lugares. Si existe una configuración donde no debería, las operaciones como la creación o actualización de un grupo de nodos fallarán.
En la siguiente tabla, se enumeran los ajustes prohibidos en una plantilla de lanzamiento. También se enumeran ajustes similares, si hay alguno disponible, que se requieren en la configuración del grupo de nodos administrados. La configuración de la lista es la configuración que aparece en la consola. Pueden tener nombres similares, pero diferentes en la AWS CLI y el SDK.
Plantilla de lanzamiento: opciones prohibidas | Configuración del grupo de nodos de Amazon EKS |
---|---|
Subred en Interfaces de red (Agregar interfaz de red) | Subredes en Configuración de red del grupo de nodos en la página Especificar red |
Perfil de instancia de IAM en Detalles avanzados | Rol de IAM del nodo en Configuración del grupo de nodos en la página Configurar grupo de nodos. |
Comportamiento de apagado y Detener: comportamiento de hibernación en Detalles avanzados. Mantenga la opción predeterminada No incluir en la configuración de la plantilla de lanzamiento en la plantilla de lanzamiento para ambas configuraciones. | Sin equivalente. Amazon EKS debe controlar el ciclo de vida de la instancia, no el grupo de escalado automático. |
En la siguiente tabla, se enumeran los ajustes prohibidos de una configuración de grupo de nodos administrados. También se enumeran configuraciones similares, si hay alguna disponible, que son necesarias en una plantilla de lanzamiento. La configuración de la lista es la configuración que aparece en la consola. Es posible que tengan nombres similares en la AWS CLI y el SDK.
Configuración del grupo de nodos de Amazon EKS: opciones prohibidas | Plantilla de inicialización |
---|---|
(Solo si especificó una AMI personalizada en una plantilla de lanzamiento) Tipo de AMI en Configuración de computación del grupo de nodos en la página Establecer la configuración de informática y escalado: la consola muestra Especificada en la plantilla de lanzamiento y el ID de la AMI que se especificó. Si no se especificó nada en Imágenes de aplicaciones y sistema operativo (Imagen de máquina de Amazon) en la plantilla de lanzamiento, puede seleccionar una AMI en la configuración del grupo de nodos. |
Imágenes de aplicaciones y sistema operativo (Imagen de máquina de Amazon) en Contenido de la plantilla de lanzamiento: debe especificar un ID si tiene alguno de los siguientes requisitos:
|
Tamaño del disco en Configuración de computación del grupo de nodos en la página Establecer la configuración de informática y escalado: la consola muestra Especificado en la plantilla de lanzamiento. | Tamaño en Almacenamiento (Volúmenes) (Agregar nuevo volumen). Debe especificarlo en la plantilla de lanzamiento. |
Par de claves de SSH en Configuración del grupo de nodos en la página Especificar redes: la consola muestra la clave especificada en la plantilla de lanzamiento o muestra No especificado en la plantilla de lanzamiento. | Nombre del par de claves en Par de claves (inicio de sesión). |
No se pueden especificar grupos de seguridad fuente a los que se permita el acceso remoto cuando se utiliza una plantilla de lanzamiento. | Grupos de seguridad en Configuración de red para la instancia o Grupos de seguridad en Interfaces de red (Agregar interfaz de red), pero no ambos. Para obtener más información, consulte Uso de grupos de seguridad personalizados. |
nota
-
Si implementa un grupo de nodos mediante una plantilla de lanzamiento, especifique un tipo de instancia o ninguno en Contenido de la plantilla de lanzamiento en una plantilla de lanzamiento. Si lo desea, puede especificar entre 0 y 20 tipos de instancia para Tipos de instancias en la página Establecer la configuración de informática y escalado de la consola. O bien, puede hacerlo mediante otras herramientas que utilizan la API de Amazon EKS. Si especifica un tipo de instancia en una plantilla de lanzamiento y utiliza esa plantilla de lanzamiento para implementar el grupo de nodos, no podrá especificar ningún tipo de instancia en la consola ni utilizar otras herramientas que utilicen la API de Amazon EKS. Si no especifica un tipo de instancia en una plantilla de lanzamiento, en la consola o si utiliza otras herramientas que utilizan la API de Amazon EKS, se utiliza el tipo de instancia
t3.medium
. Si el grupo de nodos utiliza el tipo de capacidad spot, se recomienda especificar varios tipos de instancias mediante la consola. Para obtener más información, consulte Tipos de capacidad de grupo de nodos administrado. -
Si alguno de los contenedores que implementa en el grupo de nodos utiliza el servicio de metadatos de instancia versión 2, asegúrese de establecer la propiedad Límite del salto de respuesta de metadatos en
2
en la plantilla de lanzamiento. Para obtener más información, consulte Metadatos de instancia y datos de usuario en la Guía del usuario de Amazon EC2. Si implementa un grupo de nodos administrado sin utilizar una plantilla de lanzamiento personalizada, este valor se establece automáticamente para el grupo de nodos en la plantilla de lanzamiento predeterminada.
Etiquetado de instancias de Amazon EC2
Puede utilizar el parámetro TagSpecification
de una plantilla de lanzamiento para especificar qué etiquetas se aplicarán a las instancias de Amazon EC2 del grupo de nodos. La entidad IAM que llama a las API CreateNodegroup
o UpdateNodegroupVersion
debe tener permisos para ec2:RunInstances
y ec2:CreateTags
, y las etiquetas deben agregarse a la plantilla de lanzamiento.
Uso de grupos de seguridad personalizados
Puede utilizar una plantilla de lanzamiento para especificar grupos de seguridad de Amazon EC2 personalizados para aplicar a instancias del grupo de nodos. Esto puede estar en el parámetro de grupos de seguridad de nivel de instancia o como parte de los parámetros de configuración de la interfaz de red. Sin embargo, no se puede crear una plantilla de lanzamiento que especifique el nivel de la instancia y los grupos de seguridad de una interfaz de red. Tenga en cuenta las siguientes condiciones que se aplican al uso de grupos de seguridad personalizados con grupos de nodos administrados:
-
Amazon EKS solo permite plantillas de lanzamiento con una única especificación de interfaz de red.
-
De forma predeterminada, Amazon EKS aplica el grupo de seguridad de clúster a las instancias del grupo de nodos para facilitar la comunicación entre nodos y el plano de control. Si especifica grupos de seguridad personalizados en la plantilla de lanzamiento mediante cualquiera de las opciones mencionadas anteriormente, Amazon EKS no agrega el grupo de seguridad del clúster. Debe asegurarse de que las reglas entrantes y salientes de los grupos de seguridad habiliten la comunicación con el punto de conexión del clúster. Si las reglas del grupo de seguridad son incorrectas, los nodos de trabajo no pueden unirse al clúster. Para obtener más información acerca de las reglas de los grupos de seguridad, consulte Requisitos y consideraciones sobre grupos de seguridad de Amazon EKS.
-
Si necesita acceso SSH a las instancias del grupo de nodos, incluya un grupo de seguridad que permita ese acceso.
Datos de usuario de Amazon EC2
La plantilla de lanzamiento incluye una sección para datos de usuario personalizados. Puede especificar la configuración de su grupo de nodos en esta sección sin crear manualmente AMI personalizadas individuales. Para obtener más información sobre la configuración disponible para Bottlerocket, consulte Utilización de datos de usuario
Puede proporcionar datos de usuario de Amazon EC2 en su plantilla de lanzamiento mediante cloud-init
al iniciar sus instancias. Para obtener más información, consulte la documentación de cloud-init
Los datos de usuario de Amazon EC2 en las plantillas de lanzamiento que se utilizan con grupos de nodos administrados deben estar en el formato de archivo multiparte MIMEkubelet
. Esto se realiza como parte de los datos de usuario fusionados por Amazon EKS. Ciertos parámetros de kubelet
, como establecer etiquetas en nodos, se pueden configurar directamente a través de la API de grupos de nodos administrados.
nota
Para obtener más información sobre la personalización de kubelet
avanzada, lo que incluye un inicio manual o pasar parámetros de configuración personalizados, consulte Especificación de una AMI. Si se especifica un ID de AMI personalizado en una plantilla de lanzamiento, Amazon EKS no fusiona los datos de usuario.
Los siguientes detalles proporcionan más información sobre la sección de datos de usuario.
Especificación de una AMI
Si tiene alguno de los siguientes requisitos, especifique un ID de AMI en el campo ImageId
de la plantilla de lanzamiento. Seleccione el requisito que tiene para obtener información adicional.
Bootstrapping es un término que se utiliza para describir la adición de comandos que se pueden ejecutar cuando se inicia una instancia. Por ejemplo, el arranque permite usar argumentos kubelet
bootstrap.sh
mediante eksctl
sin especificar una configuración de lanzamiento. O puede hacerlo al especificar la información en la sección de datos de usuario de una plantilla de lanzamiento.
Bootstrapping es un término que se utiliza para describir la adición de comandos que se pueden ejecutar cuando se inicia una instancia. Puede pasar los argumentos al script Start-EKSBootstrap.ps1
mediante eksctl
sin especificar una configuración de lanzamiento. O puede hacerlo al especificar la información en la sección de datos de usuario de una plantilla de lanzamiento.
Si desea especificar un ID de AMI de Windows personalizado, tenga en cuenta las siguientes consideraciones:
-
Debe utilizar una plantilla de lanzamiento y proporcionar los comandos de arranque necesarios en la sección de datos de usuario. Para recuperar el identificador deseado de Windows, puede utilizar la tabla de AMI de Windows optimizadas para Amazon EKS.
-
Hay varios límites y condiciones. Por ejemplo, debe agregar
eks:kube-proxy-windows
a su mapa de configuración de IAM Authenticator de AWS. Para obtener más información, consulte Límites y condiciones al especificar un ID de AMI.
Especifique la siguiente información en la sección de datos de usuario de la plantilla de lanzamiento. Sustituya cada
con valores propios. Los argumentos example value
-APIServerEndpoint
, -Base64ClusterCA
y -DNSClusterIP
son opcionales. Sin embargo, definirlos permite que el script Start-EKSBootstrap.ps1
evite crear una llamada describeCluster
.
-
El único argumento requerido en el nombre del clúster (
).my-cluster
-
Para recuperar el valor de
de su clúster, ejecute el siguiente comando.certificate-authority
aws eks describe-cluster --query "cluster.certificateAuthority.data" --output text --name
my-cluster
--regionregion-code
-
Para recuperar el
de su clúster, ejecute el siguiente comando.api-server-endpoint
aws eks describe-cluster --query "cluster.endpoint" --output text --name
my-cluster
--regionregion-code
-
El valor de
--dns-cluster-ip
es su servicio de CIDR con.10
al final. Para recuperar el
de su clúster, ejecute el siguiente comando. Por ejemplo, si el valor devuelto esservice-cidr
ipv4 10.100.0.0/16
, su valor es
.10.100.0.10
aws eks describe-cluster --query "cluster.kubernetesNetworkConfig.serviceIpv4Cidr" --output text --name
my-cluster
--regionregion-code
-
Para obtener argumentos adicionales, consulte Parámetros de configuración del script de arranque.
nota
Si utiliza un CIDR de servicio personalizado, debe especificarlo con el parámetro
-ServiceCIDR
. De lo contrario, se producirá un error en la resolución de DNS del clúster para Pods.
<powershell> [string]$EKSBootstrapScriptFile = "$env:ProgramFiles\Amazon\EKS\Start-EKSBootstrap.ps1" & $EKSBootstrapScriptFile -EKSClusterName
my-cluster
` -Base64ClusterCAcertificate-authority
` -APIServerEndpointapi-server-endpoint
` -DNSClusterIPservice-cidr.10
</powershell>
Para obtener más información, consulte Imágenes de máquina de Amazon (AMI) en la Guía del usuario de Amazon EC2. La especificación de compilación de la AMI de Amazon EKS contiene recursos y scripts de configuración para crear una AMI personalizada de Amazon EKS basada en Amazon Linux. Para obtener más información, consulte Especificación de compilación de AMI de Amazon EKS
importante
Al especificar una AMI, Amazon EKS no combina ningún dato de usuario. Más bien, usted es responsable de suministrar el comando bootstrap
requerido para que los nodos se unan al clúster. Si los nodos no se unen al clúster, las acciones de Amazon EKS CreateNodegroup
y UpdateNodegroupVersion
también fallan.
Límites y condiciones al especificar un ID de AMI
A continuación se detallan los límites y las condiciones que implica especificar un ID de AMI con grupos de nodos administrados:
-
Debe crear un nuevo grupo de nodos para cambiar entre especificar un ID de AMI en una plantilla de lanzamiento y no especificar un ID de AMI.
-
No se le notifica en la consola cuando hay disponible una versión más reciente de AMI. Para actualizar el grupo de nodos a una versión de AMI más reciente, debe crear una nueva versión de la plantilla de lanzamiento con un ID de AMI actualizado. A continuación, debe actualizar el grupo de nodos con la nueva versión de plantilla de lanzamiento.
-
Los siguientes campos no se pueden establecer en la API si especifica un ID de AMI:
-
amiType
-
releaseVersion
-
version
-
-
Todas las
taints
configuradas en la API se aplican de manera asíncrona si se especifica un ID de AMI. Para aplicar taints antes de que un nodo se una al clúster, se deben transferir las taints akubelet
en sus datos de usuario mediante la marca--register-with-taints
de la línea de comandos. Para obtener más información, consultekubelet
en la documentación del Kubernetes. -
Al especificar un ID de AMI personalizado para los grupos de nodos administrados de Windows, agregue
eks:kube-proxy-windows
al mapa de configuración de AWS IAM Authenticator. Esto es necesario para que el DNS funcione correctamente.-
Abra el mapa de configuración de IAM Authenticator de AWS para editarlo.
kubectl edit -n kube-system cm aws-auth
-
Agregue esta entrada a la lista de
groups
debajo de cada uno de losrolearn
asociados con nodos de Windows. El mapa de configuración debería tener un aspecto similar aaws-auth-cm-windows.yaml
. - eks:kube-proxy-windows
-
Guarde el archivo y salga del editor de texto.
-