View a markdown version of this page

Soporte AMI personalizado - Guía del usuario de Eksctl

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.

Soporte AMI personalizado

Configuración del ID de AMI del nodo

La --node-ami marca permite una serie de casos de uso avanzados, como el uso de una AMI personalizada o la consulta a AWS en tiempo real para determinar qué AMI usar. La marca se puede usar tanto para imágenes que no son de GPU como para imágenes que no son de GPU.

La marca puede utilizar el identificador de imagen de la AMI para que una imagen la utilice de forma explícita. También puede usar las siguientes palabras clave «especiales»:

Palabra clave Description (Descripción)

auto

Indica que la AMI que se va a utilizar para los nodos se debe encontrar consultando a AWS EC2. Esto se refiere a la resolución automática.

auto-ssm

Indica que la AMI que se va a utilizar para los nodos se debe encontrar consultando el almacén de parámetros de AWS SSM.

nota

Por el momento, los grupos de nodos gestionados por EKS solo admiten las siguientes familias de AMI cuando se trabaja con AMI personalizadas:AmazonLinux2023,,AmazonLinux2, y Bottlerocket Ubuntu2004 UbuntuPro2004 Ubuntu2204 Ubuntu2404

Al --node-ami establecer una cadena de identificación, eksctl se asumirá que se ha solicitado una AMI personalizada. En el AmazonLinux caso de los nodos 2 y Ubuntu, tanto gestionados por EKS como autogestionados, esto significará que overrideBootstrapCommand es obligatorio. Para AmazonLinux 2023, puede omitirla overrideBootstrapCommand cuando utilice una AMI personalizada, ya que eksctl genera automáticamente la cantidad mínima requerida. NodeConfig Para obtener más información sobre el arranque de nodos, consulte Arranque de nodos en. https://github.com/eksctl-io/eksctl/blob/main/pkg/nodebootstrap/README.md GitHub

Ejemplos de indicadores de CLI:

eksctl create cluster --node-ami=auto # with a custom ami id eksctl create cluster --node-ami=ami-custom1234

Ejemplo de archivo de configuración:

nodeGroups: - name: ng1 instanceType: p2.xlarge amiFamily: AmazonLinux2 ami: auto - name: ng2 instanceType: m5.large amiFamily: AmazonLinux2 ami: ami-custom1234 managedNodeGroups: - name: m-ng-2 amiFamily: AmazonLinux2 ami: ami-custom1234 instanceType: m5.large overrideBootstrapCommand: | #!/bin/bash /etc/eks/bootstrap.sh <cluster-name>

La --node-ami bandera también se puede usar coneksctl create nodegroup.

Configuración de la familia AMI del nodo

--node-ami-familyPueden utilizar las siguientes palabras clave:

Palabra clave Description (Descripción)

AmazonLinux2.

Indica que se debe utilizar la imagen de la AMI de EKS basada en Amazon Linux 2 (opción predeterminada).

AmazonLinux2023

Indica que se debe utilizar la imagen AMI de EKS basada en Amazon Linux 2023.

Ubuntu 2004

Indica que se debe utilizar la imagen de la AMI de EKS basada en Ubuntu 20.04 LTS (Focal) (compatible con EKS 1.29).

UbuntuPro2004

Indica que se debe utilizar la imagen AMI de EKS basada en Ubuntu Pro 20.04 LTS (Focal) (disponible para EKS >= 1.27, 1.29).

Ubuntu 2204

Indica que se debe usar la imagen de AMI de EKS basada en Ubuntu 22.04 LTS (Jammy) (disponible para EKS >= 1.29).

UbuntuPro2204

Indica que se debe utilizar la imagen AMI de EKS basada en Ubuntu Pro 22.04 LTS (Jammy) (disponible para EKS >= 1.29).

Ubuntu 24.04

Indica que se debe usar la imagen AMI de EKS basada en Ubuntu 24.04 LTS (Noble) (disponible para EKS >= 1.31).

UbuntuPro2404

Indica que se debe utilizar la imagen AMI de EKS basada en Ubuntu Pro 24.04 LTS (Noble) (disponible para EKS >= 1.31).

Cohete para botella

Indica que se debe utilizar la imagen EKS AMI basada en Bottlerocket.

WindowsServer2019FullContainer

Indica que se debe utilizar la imagen de la AMI de EKS basada en Windows Server 2019 Full Container.

WindowsServer2019CoreContainer

Indica que se debe usar la imagen de la AMI de EKS basada en Windows Server 2019 Core Container.

WindowsServer2022FullContainer

Indica que se debe usar la imagen de la AMI de EKS basada en Windows Server 2022 Full Container.

WindowsServer2022CoreContainer

Indica que se debe usar la imagen de la AMI de EKS basada en Windows Server 2022 Core Container.

Ejemplo de indicador de CLI:

eksctl create cluster --node-ami-family=AmazonLinux2

Ejemplo de archivo de configuración:

nodeGroups: - name: ng1 instanceType: m5.large amiFamily: AmazonLinux2 managedNodeGroups: - name: m-ng-2 instanceType: m5.large amiFamily: Ubuntu2204

La --node-ami-family bandera también se puede usar coneksctl create nodegroup. eksctlrequiere que la familia AMI se establezca explícitamente mediante un archivo de configuración o mediante un indicador de --node-ami-family CLI, siempre que se trabaje con una AMI personalizada.

nota

Por el momento, los grupos de nodos gestionados por EKS solo admiten las siguientes familias de AMI cuando se trabaja con AMI personalizadas:AmazonLinux2023,AmazonLinux2,, BottlerocketUbuntu2004, y UbuntuPro2004 Ubuntu2204 Ubuntu2404

Compatibilidad con AMI personalizadas de Windows

Solo los grupos de nodos de Windows autogestionados pueden especificar una AMI personalizada. amiFamilydebe configurarse en una familia de AMI de Windows válida.

Las siguientes PowerShell variables estarán disponibles para el script de arranque:

$EKSBootstrapScriptFile
$EKSClusterName
$APIServerEndpoint
$Base64ClusterCA
$ServiceCIDR
$KubeletExtraArgs
$KubeletExtraArgsMap: A hashtable containing arguments for the kubelet, e.g., @{ 'node-labels' = ''; 'register-with-taints' = ''; 'max-pods' = '10'}
$DNSClusterIP
$ContainerRuntime

Ejemplo de archivo de configuración:

nodeGroups: - name: custom-windows amiFamily: WindowsServer2022FullContainer ami: ami-01579b74557facaf7 overrideBootstrapCommand: | & $EKSBootstrapScriptFile -EKSClusterName "$EKSClusterName" -APIServerEndpoint "$APIServerEndpoint" -Base64ClusterCA "$Base64ClusterCA" -ContainerRuntime "containerd" -KubeletExtraArgs "$KubeletExtraArgs" 3>&1 4>&1 5>&1 6>&1

Soporte para AMI personalizadas de Bottlerocket

Para los nodos de Bottlerocket, no se admite. overrideBootstrapCommand En su lugar, para designar su propio contenedor de arranque, se debe usar el bottlerocket campo como parte del archivo de configuración. E.g.

nodeGroups: - name: bottlerocket-ng ami: ami-custom1234 amiFamily: Bottlerocket bottlerocket: enableAdminContainer: true settings: bootstrap-containers: bootstrap: source: <MY-CONTAINER-URI>