View a markdown version of this page

Support AMI personnalisé - Guide de l'utilisateur d'Eksctl

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Support AMI personnalisé

Configuration de l'ID AMI du nœud

L'--node-amiindicateur permet un certain nombre de cas d'utilisation avancés, tels que l'utilisation d'une AMI personnalisée ou l'interrogation d'AWS en temps réel pour déterminer l'AMI à utiliser. Le drapeau peut être utilisé à la fois pour les images non GPU et GPU.

Le drapeau peut prendre l'identifiant d'image AMI pour une image à utiliser explicitement. Il peut également prendre les mots clés « spéciaux » suivants :

Mot clé Description

auto

Indique que l'AMI à utiliser pour les nœuds doit être trouvée en interrogeant AWS EC2. Cela concerne le résolveur automatique.

SMS automatique

Indique que l'AMI à utiliser pour les nœuds doit être trouvée en interrogeant AWS SSM Parameter Store.

Note

Pour le moment, les groupes de nœuds gérés par EKS ne prennent en charge que les familles d'AMI suivantes lorsqu'ils travaillent avec des AMI personnalisées : AmazonLinux2023AmazonLinux2,Bottlerocket,Ubuntu2004, et UbuntuPro2004 Ubuntu2204 Ubuntu2404

Lors --node-ami de la définition d'une chaîne d'ID, eksctl supposera qu'une AMI personnalisée a été demandée. Pour les nœuds AmazonLinux 2 et Ubuntu, gérés par EKS et autogérés, cela signifie que cela overrideBootstrapCommand est obligatoire. Pour AmazonLinux 2023, vous pouvez omettre cette option overrideBootstrapCommand lorsque vous utilisez une AMI personnalisée, car eksctl génère automatiquement le minimum requis. NodeConfig Pour plus d'informations sur l'amorçage des nœuds, consultez la section Démarrage des nœuds activé. GitHub

Exemples d'indicateurs CLI :

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

Exemple de fichier de configuration :

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>

Le --node-ami drapeau peut également être utilisé aveceksctl create nodegroup.

Configuration de la famille AMI du nœud

Ils --node-ami-family peuvent prendre les mots clés suivants :

Mot clé Description

AmazonLinux2

Indique que l'image EKS AMI basée sur Amazon Linux 2 doit être utilisée (par défaut).

AmazonLinux2023

Indique que l'image EKS AMI basée sur Amazon Linux 2023 doit être utilisée.

Ubuntu 2004

Indique que l'image EKS AMI basée sur Ubuntu 20.04 LTS (Focal) doit être utilisée (prise en charge pour EKS et 1.29).

UbuntuPro2004

Indique que l'image EKS AMI basée sur Ubuntu Pro 20.04 LTS (Focal) doit être utilisée (disponible pour EKS >= 1.27 et 1.29).

Ubuntu 2204

Indique que l'image EKS AMI basée sur Ubuntu 22.04 LTS (Jammy) doit être utilisée (disponible pour EKS >= 1.29).

UbuntuPro2204

Indique que l'image EKS AMI basée sur Ubuntu Pro 22.04 LTS (Jammy) doit être utilisée (disponible pour EKS >= 1.29).

Ubuntu 2404

Indique que l'image EKS AMI basée sur Ubuntu 24.04 LTS (Noble) doit être utilisée (disponible pour EKS >= 1.31).

UbuntuPro2404

Indique que l'image EKS AMI basée sur Ubuntu Pro 24.04 LTS (Noble) doit être utilisée (disponible pour EKS >= 1.31).

Fusée à bouteilles

Indique que l'image EKS AMI basée sur Bottlerocket doit être utilisée.

WindowsServer2019FullContainer

Indique que l'image EKS AMI basée sur Windows Server 2019 Full Container doit être utilisée.

WindowsServer2019CoreContainer

Indique que l'image EKS AMI basée sur Windows Server 2019 Core Container doit être utilisée.

WindowsServer2022FullContainer

Indique que l'image EKS AMI basée sur Windows Server 2022 Full Container doit être utilisée.

WindowsServer2022CoreContainer

Indique que l'image EKS AMI basée sur Windows Server 2022 Core Container doit être utilisée.

Exemple d'indicateur CLI :

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

Exemple de fichier de configuration :

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

Le --node-ami-family drapeau peut également être utilisé aveceksctl create nodegroup. eksctlexige que la famille AMI soit définie explicitement via un fichier de configuration ou via un indicateur --node-ami-family CLI, chaque fois que vous travaillez avec une AMI personnalisée.

Note

Pour le moment, les groupes de nœuds gérés par EKS ne prennent en charge que les familles d'AMI suivantes lorsqu'ils travaillent avec des AMI personnalisées : AmazonLinux2023AmazonLinux2,Bottlerocket,Ubuntu2004, et UbuntuPro2004 Ubuntu2204 Ubuntu2404

Prise en charge des AMI personnalisées pour Windows

Seuls les groupes de nœuds Windows autogérés peuvent spécifier une AMI personnalisée. amiFamilydoit être définie sur une famille d'AMI Windows valide.

Les PowerShell variables suivantes seront disponibles pour le script bootstrap :

$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

Exemple de fichier de configuration :

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

Support AMI personnalisé pour Bottlerocket

Pour les nœuds Bottlerocket, ce overrideBootstrapCommand n'est pas pris en charge. Au lieu de cela, pour désigner leur propre conteneur d'amorçage, il convient d'utiliser le bottlerocket champ dans le fichier de configuration. E.g.

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