Ayude a mejorar esta página
Para contribuir a esta guía del usuario, elija el enlace Edit this page on GitHub que se encuentra en el panel derecho de cada página.
Amazon Linux 2023 (AL2023), Ubuntu y Red Hat Enterprise Linux (RHEL) son validados de forma continua para su uso como sistema operativo de nodo para los nodos híbridos. AWS admite la integración de nodos híbridos con estos sistemas operativos, pero no proporciona soporte para los sistemas operativos en sí. Los planes de AWS Support no cubren AL2023 cuando se ejecuta fuera de Amazon EC2. AL2023 solo se puede utilizar en entornos virtualizados en las instalaciones. Consulte la Guía del usuario de Amazon Linux 2023 para obtener más información.
Usted es responsable del aprovisionamiento y la administración del sistema operativo. Al probar nodos híbridos por primera vez, lo más sencillo es ejecutar la CLI de Nodos híbridos de Amazon EKS (nodeadm
) en un host ya aprovisionado. Para implementaciones de producción, se recomienda incluir nodeadm
en las imágenes del sistema operativo configurado para que se ejecute como un servicio systemd para unir automáticamente hosts a clústeres de Amazon EKS al iniciar el host.
Compatibilidad de versiones
La tabla que aparece a continuación representa las versiones del sistema operativo compatibles y validadas para su uso como sistema operativo de nodo para nodos híbridos. Si utiliza otras variantes o versiones del sistema operativo que no aparecen en esta tabla, la compatibilidad de los nodos híbridos con la variante o versión del sistema operativo no está cubierta por AWS Support. Los nodos híbridos son independientes de la infraestructura subyacente y admiten arquitecturas x86 y ARM.
Sistema operativo | Versiones |
---|---|
Amazon Linux |
Amazon Linux 2023 (AL2023) |
Ubuntu |
Ubuntu 20.04, Ubuntu 22.04, Ubuntu 24.04 |
Red Hat Enterprise Linux |
RHEL 8, RHEL 9 |
Consideraciones de los sistemas operativos
General
-
La CLI (
nodeadm
) de los Nodos híbridos de Amazon EKS se puede utilizar para simplificar la instalación y configuración de los componentes y dependencias de los nodos híbridos. Puede ejecutar el procesonodeadm install
durante las canalizaciones de creación de imágenes del sistema operativo o en tiempo de ejecución en cada host en las instalaciones. Para más información sobre los componentes quenodeadm
instala, consulte el Referencia de nodeadm de nodos híbridos. -
Si utiliza un proxy en el entorno en las instalaciones para acceder a Internet, se requiere una configuración adicional del sistema operativo para que los procesos de instalación y actualización configuren el administrador de paquetes para utilizar el proxy. Para obtener instrucciones, consulte Configuración del proxy para nodos híbridos.
Containerd
-
Containerd es el tiempo de ejecución de contenedores estándar de Kubernetes y es una dependencia para los nodos híbridos, así como para todos los tipos de computación de nodos de Amazon EKS. La CLI (
nodeadm
) de los Nodos Híbridos de Amazon EKS intenta instalar containerd durante el procesonodeadm install
. Puede configurar la instalación de containerd en tiempo de ejecución denodeadm install
con la opción de línea de comandos--containerd-source
. Las opciones válidas sonnone
,distro
ydocker
. Si utiliza RHEL,distro
no es una opción válida y puede, o bien configurarnodeadm
para instalar la compilación containerd desde los repositorios de Docker, o instalar containerd manualmente. Cuando se usa AL2023 o Ubuntu,nodeadm
instala containerd desde la distribución del sistema operativo de forma predeterminada. Si no quiere que nodeadm instale containerd, use la opción--containerd-source none
.
Ubuntu
-
Si usa Ubuntu 20.04, debe usar las activaciones híbridas de AWS Systems Manager como proveedor de credenciales. AWS IAM Roles Anywhere no se admite en Ubuntu 20.04.
-
Si usa Ubuntu 24.04, es posible que tenga que actualizar la versión de containerd o cambiar la configuración de AppArmor para adoptar una corrección que permita que los pods se terminen correctamente. Consulte Ubuntu #2065423
. Se requiere un reinicio para aplicar los cambios al perfil de AppArmor. La versión más reciente de Ubuntu 24.04 tiene una versión actualizada de containerd en su administrador de paquetes con la corrección (versión 1.7.19+ de containerd).
RHEL
-
Si usa RHEL 8, debe usar las activaciones híbridas de AWS Systems Manager como proveedor de credenciales. AWS IAM Roles Anywhere no se admite en RHEL 8.
ARM
-
Si utiliza hardware de ARM, se requiere un procesador compatible con ARMv8.2 con la extensión de criptografía (ARMv8.2+crypto) para ejecutar la versión 1.31 o posterior del complemento kube-proxy de EKS. Todos los sistemas Raspberry Pi anteriores a Raspberry Pi 5, así como los procesadores basados en Cortex-A72, no cumplen este requisito. Como solución alternativa, puede seguir utilizando la versión 1.30 del complemento kube-proxy de EKS hasta que finalice el soporte extendido en julio de 2026 (consulte Calendario de lanzamiento de Amazon EKS Kubernetes o utilice una imagen de kube-proxy personalizada anterior).
-
El siguiente mensaje de error del registro de kube-proxy indica esta incompatibilidad:
Fatal glibc error: This version of Amazon Linux requires a newer ARM64 processor compliant with at least ARM architecture 8.2-a with Cryptographic extensions. On EC2 this is Graviton 2 or later.
Creación de imágenes del sistema operativo
Amazon EKS proporciona plantillas Packer de ejemplonodeadm
y lo configuren de modo que se ejecute al iniciar el host. Este proceso se recomienda para no tener que extraer las dependencias de los nodos híbridos individualmente en cada host y para automatizar el proceso de arranque de los nodos híbridos. Puede utilizar las plantillas Packer de ejemplo con una imagen ISO de Ubuntu 22.04, Ubuntu 24.04, RHEL 8 o RHEL 9 y puede obtener imágenes con estos formatos: OVA, Qcow2 o sin procesar.
Requisitos previos
Antes de utilizar las plantillas Packer de ejemplo, debe tener instalado lo siguiente en la máquina desde la que ejecuta Packer.
-
Versión 1.11.0 o superior de Packer. Para obtener instrucciones sobre cómo instalar Packer, consulte Instalación de Packer
en la documentación de Packer. -
Si se crean OVA, la versión 1.4.0 o superior del complemento VMware vSphere.
-
Si crea imágenes
Qcow2
o sin procesar, utilice la versión 1.x del complemento QEMU
Configuración de las variables de entorno
Antes de ejecutar la compilación de Packer, establezca las siguientes variables de entorno en la máquina desde la que ejecuta Packer.
General
Se deben establecer las siguientes variables de entorno para crear imágenes con todos los sistemas operativos y formatos de salida.
Variable de entorno | Tipo | Descripción |
---|---|---|
PKR_SSH_PASSWORD |
Cadena |
Durante el aprovisionamiento, Packer utiliza las variables |
ISO_URL |
Cadena |
URL de la ISO que se va a utilizar. Puede ser un enlace web para descargar de un servidor, o una ruta absoluta a un archivo local |
ISO_CHECKSUM |
Cadena |
Suma de comprobación asociada para la ISO suministrada. |
CREDENTIAL_PROVIDER |
Cadena |
Proveedor de credenciales para nodos híbridos. Los valores válidos son |
K8S_VERSION |
Cadena |
Versión de Kubernetes para nodos híbridos (por ejemplo, |
NODEADM_ARCH |
Cadena |
Arquitecturas para |
RHEL
Si utiliza RHEL, se deben configurar las siguientes variables de entorno.
Variable de entorno | Tipo | Descripción |
---|---|---|
RH_USERNAME |
Cadena |
Nombre de usuario del administrador de suscripciones de RHEL |
RH_PASSWORD |
Cadena |
Contraseña del administrador de suscripciones de RHEL |
RHEL_VERSION |
Cadena |
La versión iso de Rhel que se utiliza. Los valores válidos son |
Ubuntu
No se requieren variables de entorno específicas de Ubuntu.
vSphere
Si va a crear un OVA de VMware vSphere, deberá configurar las siguientes variables de entorno.
Variable de entorno | Tipo | Descripción |
---|---|---|
VSPHERE_SERVER |
Cadena |
Dirección del servidor vSphere |
VSPHERE_USER |
Cadena |
Nombre de usuario de vSphere |
VSPHERE_PASSWORD |
Cadena |
Contraseña de vSphere |
VSPHERE_DATACENTER |
Cadena |
Nombre del centro de datos de vSphere |
VSPHERE_CLUSTER |
Cadena |
Nombre del clúster de vSphere |
VSPHERE_DATASTORE |
Cadena |
Nombre del almacén de datos de vSphere |
VSPHERE_NETWORK |
Cadena |
Nombre de la red de vSphere |
VSPHERE_OUTPUT_FOLDER |
Cadena |
Carpeta de salida de vSphere para las plantillas |
QEMU
Variable de entorno | Tipo | Descripción |
---|---|---|
PACKER_OUTPUT_FORMAT |
Cadena |
Formato de salida para el generador QEMU. Los valores válidos son |
Validación de la plantilla
Antes de ejecutar la compilación, valide la plantilla con el siguiente comando después de configurar las variables de entorno. Sustituya template.pkr.hcl
si utiliza un nombre diferente para la plantilla.
packer validate template.pkr.hcl
Generación de imágenes
Genere las imágenes con los siguientes comandos y utilice la marca -only
para especificar el destino y el sistema operativo de las imágenes. Sustituya template.pkr.hcl
si utiliza un nombre diferente para la plantilla.
OVA de vSphere
nota
Si utiliza RHEL con vSphere necesita convertir los archivos kickstart a una imagen OEMDRV y transmitirla como una ISO desde la que arrancar. Para obtener más información, consulte Readme de Packer
OVA de Ubuntu 22.04
packer build -only=general-build.vsphere-iso.ubuntu22 template.pkr.hcl
OVA de Ubuntu 24.04
packer build -only=general-build.vsphere-iso.ubuntu24 template.pkr.hcl
OVA de RHEL 8
packer build -only=general-build.vsphere-iso.rhel8 template.pkr.hcl
OVA de RHEL 9
packer build -only=general-build.vsphere-iso.rhel9 template.pkr.hcl
QEMU
nota
Si va a generar una imagen para una CPU de host específica que no coincide con el host del generador, consulte la documentación de QEMU-cpu
con el nombre de la CPU de host cuando ejecute los siguientes comandos.
Ubuntu 22.04 Qcow2/sin procesar
packer build -only=general-build.qemu.ubuntu22 template.pkr.hcl
Ubuntu 24.04 Qcow2/sin procesar
packer build -only=general-build.qemu.ubuntu24 template.pkr.hcl
RHEL 8 Qcow2/sin procesar
packer build -only=general-build.qemu.rhel8 template.pkr.hcl
RHEL 9 Qcow2/sin procesar
packer build -only=general-build.qemu.rhel9 template.pkr.hcl
Cómo transmitir la configuración de nodeadm a través de user-data
Puede transmitir la configuración de nodeadm
en los user-data a través de cloud-init para configurar y conectar automáticamente los nodos híbridos al clúster de EKS al iniciar el host. A continuación, encontrará un ejemplo de cómo lograrlo al utilizar VMware vSphere como infraestructura para los nodos híbridos.
-
Instale la CLI de
govc
según las instrucciones del archivo govc readmeen GitHub. -
Después de ejecutar la compilación de Packer en la sección anterior y aprovisionar la plantilla, podrá clonar la plantilla para crear varios nodos diferentes de la siguiente manera. Debe clonar la plantilla para cada nueva máquina virtual que cree y que vaya a utilizar para nodos híbridos. Sustituya las variables del comando que aparece a continuación por los valores correspondientes al entorno. El
VM_NAME
en el comando que aparece a continuación se utiliza comoNODE_NAME
cuando se introducen los nombres de las máquinas virtuales a través del archivometadata.yaml
.govc vm.clone -vm "/PATH/TO/TEMPLATE" -ds="YOUR_DATASTORE" \ -on=false -template=false -folder=/FOLDER/TO/SAVE/VM "VM_NAME"
-
Después de clonar la plantilla para cada una de sus nuevas máquinas virtuales, cree un
userdata.yaml
ymetadata.yaml
para las máquinas virtuales. Las máquinas virtuales pueden compartir los mismosuserdata.yaml
ymetadata.yaml
, que deberá completar según cada máquina virtual y a través de los pasos que se indican a continuación. La configuraciónnodeadm
se crea y define en la secciónwrite_files
deluserdata.yaml
. En el siguiente ejemplo, se utilizan las activaciones híbridas de AWS SSM como proveedor de credenciales en las instalaciones para los nodos híbridos. Para obtener más información sobre la configuración denodeadm
, consulte Referencia de nodeadm de nodos híbridos.userdata.yaml:
#cloud-config users: - name: # username for login. Use 'builder' for RHEL or 'ubuntu' for Ubuntu. passwd: # password to login. Default is 'builder' for RHEL. groups: [adm, cdrom, dip, plugdev, lxd, sudo] lock-passwd: false sudo: ALL=(ALL) NOPASSWD:ALL shell: /bin/bash write_files: - path: /usr/local/bin/nodeConfig.yaml permissions: '0644' content: | apiVersion: node.eks.aws/v1alpha1 kind: NodeConfig spec: cluster: name: # Cluster Name region: # AWS region hybrid: ssm: activationCode: # Your ssm activation code activationId: # Your ssm activation id runcmd: - /usr/local/bin/nodeadm init -c file:///usr/local/bin/nodeConfig.yaml >> /var/log/nodeadm-init.log 2>&1
metadata.yaml:
Cree un
metadata.yaml
para el entorno. Mantenga el formato de la variable"$NODE_NAME"
en el archivo, ya que este se completará con valores en un paso posterior.instance-id: "$NODE_NAME" local-hostname: "$NODE_NAME" network: version: 2 ethernets: nics: match: name: ens* dhcp4: yes
-
Agregue los archivos
userdata.yaml
ymetadata.yaml
como cadenasgzip+base64
con los siguientes comandos. Se deben ejecutar los siguientes comandos para cada una de las máquinas virtuales que se van a crear. SustituyaVM_NAME
por el nombre de la máquina virtual que va a actualizar.export NODE_NAME="VM_NAME" export USER_DATA=$(gzip -c9 <userdata.yaml | base64) govc vm.change -dc="YOUR_DATASTORE" -vm "$NODE_NAME" -e guestinfo.userdata="${USER_DATA}" govc vm.change -dc="YOUR_DATASTORE" -vm "$NODE_NAME" -e guestinfo.userdata.encoding=gzip+base64 envsubst '$NODE_NAME' < metadata.yaml > metadata.yaml.tmp export METADATA=$(gzip -c9 <metadata.yaml.tmp | base64) govc vm.change -dc="YOUR_DATASTORE" -vm "$NODE_NAME" -e guestinfo.metadata="${METADATA}" govc vm.change -dc="YOUR_DATASTORE" -vm "$NODE_NAME" -e guestinfo.metadata.encoding=gzip+base64
-
Encienda las nuevas máquinas virtuales, que se conectarán automáticamente al clúster de EKS que configuró.
govc vm.power -on "${NODE_NAME}"