Actualización de Amazon Linux 2 a Amazon Linux 2023 - Amazon EKS

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.

Actualización de Amazon Linux 2 a Amazon Linux 2023

aviso

Amazon EKS dejó de publicar las AMI optimizadas para EKS de Amazon Linux 2 (AL2) el 26 de noviembre de 2025. Las AMI basadas en AL2023 y Bottlerocket para Amazon EKS están disponibles para todas las versiones de Kubernetes compatibles, lo que incluye la versión 1.33 y posteriores.

AL2023 es un sistema operativo basado en Linux diseñado para proporcionar un entorno seguro, estable y de alto rendimiento para las aplicaciones en la nube. Es la próxima generación de Amazon Linux de Amazon Web Services y está disponible en todas las versiones compatibles de Amazon EKS.

AL2023 ofrece varias mejoras con respecto al AL2. Para obtener una comparación completa, consulte Comparación de AL2 y Amazon Linux 2023 en la Guía del usuario de Amazon Linux 2023. Se han añadido, actualizado y eliminado varios paquetes de AL2. Se recomienda encarecidamente probar las aplicaciones con AL2023 antes de realizar la actualización. Para ver una lista de todos los cambios de paquetes en AL2023, consulte Cambios de paquetes en Amazon Linux 2023 en las Notas de la versión de Amazon Linux 2023.

Además de estos cambios, debe tener en cuenta lo siguiente:

  • AL2023 presenta un nuevo proceso de inicialización de nodos nodeadm que utiliza un esquema de configuración YAML. Si utiliza grupos de nodos autoadministrados o una AMI con una plantilla de lanzamiento, ahora tendrá que proporcionar metadatos del clúster adicionales de forma explícita cuando cree un nuevo grupo de nodos. A continuación, se muestra un ejemplo de los parámetros mínimos necesarios, en los que ahora se necesitan apiServerEndpoint, certificateAuthority y el servicio de cidr:

    --- apiVersion: node.eks.aws/v1alpha1 kind: NodeConfig spec: cluster: name: my-cluster apiServerEndpoint: https://example.com certificateAuthority: Y2VydGlmaWNhdGVBdXRob3JpdHk= cidr: 10.100.0.0/16

    En AL2, los metadatos de estos parámetros se descubrieron a partir de la llamada a la API DescribeCluster de Amazon EKS. Con AL2023, este comportamiento ha cambiado, ya que la llamada a la API adicional corre el riesgo de limitarse durante los escalados verticales de nodos a gran escala. Este cambio no le afecta si utiliza grupos de nodos administrados sin una plantilla de lanzamiento o si utiliza Karpenter. Para obtener más información sobre certificateAuthority y el servicio cidr, consulte DescribeCluster en la Referencia de la API de Amazon EKS.

  • En el caso de AL2023, nodeadm también cambia el formato para aplicar los parámetros al kubelet para cada nodo que utilice NodeConfigSpec. En AL2, esto se hizo con el parámetro --kubelet-extra-args. Se suele utilizar para agregar etiquetas y taints a los nodos. En el siguiente ejemplo, se muestra cómo aplicar maxPods y --node-labels al nodo.

    --- apiVersion: node.eks.aws/v1alpha1 kind: NodeConfig spec: cluster: name: test-cluster apiServerEndpoint: https://example.com certificateAuthority: Y2VydGlmaWNhdGVBdXRob3JpdHk= cidr: 10.100.0.0/16 kubelet: config: maxPods: 110 flags: - --node-labels=karpenter.sh/capacity-type=on-demand,karpenter.sh/nodepool=test
  • Se requiere la versión 1.16.2 o posterior de CNI de Amazon VPC para AL2023.

  • De forma predeterminada, AL2023 requiere IMDSv2. IMDSv2 tiene varios beneficios que ayudan a mejorar la postura de seguridad. Utiliza un método de autenticación orientado a la sesión que requiere la creación de un token secreto en una solicitud sencilla de HTTP PUT para iniciar la sesión. El tiempo de validez de un token de sesión puede oscilar entre 1 segundo y 6 horas. Para obtener más información sobre cómo realizar la transición de IMDSv1 a IMDSv2, consulte Transición a la versión 2 del servicio de metadatos de instancias y Cómo aprovechar todos los beneficios de IMDSv2 e inhabilitar IMDSv1 en toda la infraestructura de AWS. Si desea utilizar IMDSv1, puede hacerlo si anula de manera manual la configuración mediante las propiedades de inicio de la opción de metadatos de la instancia.

    nota

    Para el IMDSv2 con AL2023, el recuento de saltos predeterminado para los grupos de nodos administrados puede variar:

    • Cuando no se utiliza una plantilla de lanzamiento, el valor predeterminado es 1. Esto significa que los contenedores no tendrán acceso a las credenciales del nodo mediante IMDS. Si necesita acceso del contenedor a las credenciales del nodo, puede hacerlo usando una plantilla de lanzamiento personalizada de Amazon EC2.

    • Cuando se utiliza una AMI personalizada en una plantilla de lanzamiento, el valor predeterminado de HttpPutResponseHopLimit es 2. Puede anular manualmente el HttpPutResponseHopLimit en la plantilla de lanzamiento.

    Como alternativa, puede utilizar Pod Identity de Amazon EKS para proporcionar credenciales en lugar de IMDSv2.

  • AL2023 presenta la siguiente generación de jerarquías de grupos de control unificados (cgroupv2). cgroupv2 se utiliza para implementar un tiempo de ejecución de contenedores y por systemd. Si bien AL2023 sigue incluyendo un código que puede hacer que el sistema funcione mediante cgroupv1, esta configuración no se recomienda ni se admite. Esta configuración se eliminará por completo en una futura versión importante de Amazon Linux.

  • Se requiere una versión de eksctl 0.176.0 o superior para que eksctl sea compatible con AL2023.

En el caso de los grupos de nodos administrados que existían con anterioridad, puede realizar una actualización local o una actualización azul/verde, según cómo utilice la plantilla de lanzamiento:

  • Si utiliza una AMI personalizada con un grupo de nodos administrado, puede realizar una actualización local si intercambia el ID de la AMI en la plantilla de lanzamiento. Debe asegurarse de que las aplicaciones y cualquier dato de usuario se transfieran primero a AL2023 antes de llevar a cabo esta estrategia de actualización.

  • Si utiliza grupos de nodos administrados con la plantilla de lanzamiento estándar o con una plantilla de lanzamiento personalizada que no especifica el ID de la AMI, deberá actualizar mediante una estrategia azul/verde. Una actualización azul/verde suele ser más compleja e implica la creación de un grupo de nodos completamente nuevo en el que se especificará AL2023 como tipo de AMI. Luego, será necesario configurar con cuidado el nuevo grupo de nodos para garantizar que todos los datos personalizados del grupo de nodos de AL2 sean compatibles con el nuevo sistema operativo. Una vez que el nuevo grupo de nodos se haya probado y validado con sus aplicaciones, podrá migrar pods del grupo de nodos anterior al nuevo grupo de nodos. Una vez completada la migración, puede eliminar el grupo de nodos anterior.

Si utiliza Karpenter y quiere utilizar AL2023, deberá modificar el campo de EC2NodeClass amiFamily con AL2023. De forma predeterminada, la desviación está habilitada en Karpenter. Esto significa que, una vez que se haya cambiado el campo amiFamily, Karpenter actualizará automáticamente los nodos de trabajo a la AMI más reciente cuando esté disponible.

Información adicional sobre nodeadm

Al utilizar una AMI optimizada para EKS basada en Amazon Linux 2023 o al crear una AMI personalizada de EKS basada en Amazon Linux 2023 mediante los scripts de Packer proporcionados en el repositorio oficial de GitHub amazon-eks-ami, debe evitar ejecutar explícitamente nodeadm init dentro de los datos de usuario de EC2 o como parte de la AMI personalizada.

Si desea generar un NodeConfig dinámico en los datos de usuario, puede escribir esa configuración en un archivo yaml o json de configuración complementario en /etc/eks/nodeadm.d. Estos archivos de configuración se combinarán y se aplicarán al nodo cuando nodeadm init se inicie automáticamente más adelante en el proceso de arranque. Por ejemplo:

cat > /etc/eks/nodeadm.d/additional-node-labels.yaml << EOF apiVersion: node.eks.aws/v1alpha1 kind: NodeConfig spec: kubelet: flags: - --node-labels=foo=bar EOF

Las AMI optimizadas para EKS basadas en Amazon Linux 2023 ejecutan automáticamente nodeadm init en dos fases mediante servicios de systemd independientes: nodeadm-config se ejecuta antes de la ejecución de los datos de usuario, mientras que nodeadm-run se ejecuta después. El servicio nodeadm-config establece las configuraciones básicas de containerd y kubelet antes de que se ejecuten los datos de usuario. El servicio nodeadm-run ejecuta determinados daemons del sistema y completa cualquier configuración final después de la ejecución de los datos de usuario. Si el comando nodeadm init se ejecuta una vez adicional, mediante los datos de usuario o una AMI personalizada, puede alterar el orden previsto de ejecución, lo que podría generar resultados inesperados, incluida una configuración incorrecta de las interfaces de red elásticas.