View a markdown version of this page

Amazon EKS optimizó la administración de las AMI de Windows - Amazon EKS

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Amazon EKS optimizó la administración de las AMI de Windows

Las AMI de Windows optimizadas para Amazon EKS se basan en Windows Server 2019 y Windows Server 2022. Están configuradas de modo que sirvan de imagen base para los nodos de Amazon EKS. De forma predeterminada, las AMI incluyen los siguientes componentes:

Puede recuperar mediante programación el ID de Amazon Machine Image (AMI) de las AMI optimizadas para Amazon EKS consultando la API del almacén de parámetros de AWS Systems Manager. Este parámetro elimina la necesidad de buscar de manera manual los ID de la AMI optimizada para Amazon EKS. Para obtener más información sobre la API de almacén de parámetros de Systems Manager, consulte. GetParameter Su cuenta de usuario debe tener el permiso ssm: GetParameter IAM para recuperar los metadatos de la AMI optimizados para Amazon EKS.

En el siguiente ejemplo, se recupera el ID de AMI de la última AMI optimizada de Amazon EKS para Windows Server 2019 LTSC Core. El número de versión que aparece en el nombre de la AMI se refiere a la compilación de Kubernetes correspondiente para la que está preparada.

aws ssm get-parameter --name /aws/service/ami-windows-latest/Windows_Server-2019-English-Core-EKS_Optimized-1.21/image_id --region us-east-1 --query "Parameter.Value" --output text

Ejemplo de código de salida:

ami-09770b3eec4552d4e

Administrar su propia AMI de Windows optimizada para Amazon EKS

Un paso esencial hacia los entornos de producción es mantener la misma versión de kubelet y AMI de Windows optimizadas para Amazon EKS en todo el clúster de Amazon EKS.

El uso de la misma versión en todo el clúster de Amazon EKS reduce el tiempo necesario para solucionar problemas y aumenta la coherencia del clúster. Amazon EC2 Image Builder ayuda a crear y mantener AMI de Windows personalizadas y optimizadas para Amazon EKS para utilizarlas en un clúster de Amazon EKS.

Utilice Amazon EC2 Image Builder para seleccionar entre las versiones de Windows Server, las fechas de lanzamiento de las AMI de AWS Windows Server y la versión de compilación del and/or sistema operativo. El paso de compilación de los componentes le permite seleccionar entre los artefactos de Windows optimizados para EKS existentes y las versiones de kubelet. Para obtener más información: https://docs.aws.amazon.com/eks/latest/userguide/eks-custom-ami-windows.html

componentes de construcción

NOTA: Antes de seleccionar una imagen base, consulte la sección Versión y licencia de Windows Server para obtener información importante sobre las actualizaciones de los canales de lanzamiento.

Configurar un inicio más rápido para AMI personalizadas optimizadas para EKS

Cuando se utiliza una AMI personalizada optimizada para Amazon EKS para Windows, los nodos de trabajo de Windows se pueden lanzar hasta un 65% más rápido si se habilita la función de inicio rápido. Esta función mantiene un conjunto de instantáneas previamente aprovisionadas que incluyen la especialización de Sysprep, los pasos de Windows Out of Box Experience (OOBE) y los reinicios necesarios que ya se han completado. Estas instantáneas se utilizan luego en lanzamientos posteriores, lo que reduce el tiempo necesario para escalar o reemplazar los nodos. Fast Launch solo se puede habilitar para las AMI que posea a través de la consola EC2 o en la CLI de AWS, y la cantidad de instantáneas que se mantienen es configurable.

NOTA: Fast Launch no es compatible con la AMI optimizada para Amazon-provided EKS predeterminada. Cree una AMI personalizada como se indica anteriormente antes de intentar habilitarla.

Para obtener más información: AMI de AWS para Windows: configure su AMI para un lanzamiento más rápido

Almacenamiento en caché de las capas base de Windows en AMI personalizadas

Las imágenes de los contenedores de Windows son más grandes que las de las de Linux. Si ejecuta una Framework-based aplicación .NET en contenedores, el tamaño medio de la imagen es de unos 8,24 GB. Durante la programación del pod, la imagen del contenedor debe estar completamente extraída y extraída en el disco antes de que el pod alcance el estado de ejecución.

Durante este proceso, el motor de ejecución del contenedor (containerd) extrae y extrae toda la imagen del contenedor del disco. La operación de extracción es un proceso paralelo, lo que significa que el tiempo de ejecución del contenedor extrae las capas de la imagen del contenedor en paralelo. Por el contrario, la operación de extracción se produce en un proceso secuencial y es I/O intensiva. Por eso, la imagen del contenedor puede tardar más de 8 minutos en extraerse por completo y estar lista para ser utilizada por el equipo de ejecución del contenedor (containerd), por lo que el tiempo de inicio del pod puede tardar varios minutos.

Como se menciona en el tema Cómo aplicar parches a servidores y contenedores de Windows, existe la opción de crear una AMI personalizada con EKS. Durante la preparación de la AMI, puede añadir un componente adicional de creación de imágenes de EC2 para extraer localmente todas las imágenes de contenedor de Windows necesarias y, a continuación, generar la AMI. Esta estrategia reducirá drásticamente el tiempo en que un pod alcanza el estado En ejecución.

En Amazon EC2 Image Builder, cree un componente para descargar las imágenes necesarias y adjúntelo a la receta de imágenes. El siguiente ejemplo extrae una imagen específica de un repositorio de ECR.

name: ContainerdPull
description: This component pulls the necessary containers images for a cache strategy.
schemaVersion: 1.0

phases:
  - name: build
    steps:
      - name: containerdpull
        action: ExecutePowerShell
        inputs:
          commands:
            - Set-ExecutionPolicy Unrestricted -Force
            - (Get-ECRLoginCommand).Password | docker login --username AWS --password-stdin 111000111000.dkr.ecr.us-east-1.amazonaws.com
            - ctr image pull mcr.microsoft.com/dotnet/framework/aspnet:latest
            - ctr image pull 111000111000.dkr.ecr.us-east-1.amazonaws.com/myappcontainerimage:latest

Para asegurarse de que el siguiente componente funciona según lo previsto, compruebe si la función de IAM utilizada por EC2 Image builder (EC2InstanceProfileForImageBuilder) tiene las políticas adjuntas:

políticas de permisos

Publicación de blog.

En la siguiente entrada del blog, encontrará información paso a paso sobre cómo implementar una estrategia de almacenamiento en caché para las AMI personalizadas de Amazon EKS para Windows:

Agilizar los tiempos de lanzamiento de los contenedores de Windows con el generador de imágenes de EC2 y la estrategia de caché de imágenes