Support personnalisé pour les AMI - 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 personnalisé pour les AMI

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 sans GPU et pour les images avec GPU.

L'indicateur peut prendre l'identifiant de l'image AMI d'une image à utiliser explicitement. Il peut également utiliser 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.

auto-ssm

Indique que l'AMI à utiliser pour les nœuds doit être trouvée en interrogeant le magasin de paramètres AWS SSM.

Note

Lorsque vous définissez une chaîne --node-ami d'identification, cela eksctl supposera qu'une AMI personnalisée a été demandée. Pour les nœuds AmazonLinux 2 et Ubuntu, gérés ou autogérés par EKS, cela signifie que cela overrideBootstrapCommand est nécessaire. Pour AmazonLinux 2023, puisqu'il cesse d'utiliser le /etc/eks/bootstrap.sh script pour le démarrage des nœuds, au profit d'un processus d'initialisation de nodeadm (pour plus d'informations, reportez-vous à la documentation sur le démarrage des nœuds), n'est pas pris en charge. overrideBootstrapCommand

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 utiliser les mots clés suivants :

Mot clé Description

AmazonLinux2

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

AmazonLinux2023

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

Ubuntu 2004

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

UbuntuPro2004

Indique que l'image de l'AMI EKS 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 AMI EKS basée sur Ubuntu 22.04 LTS (Jammy) doit être utilisée (disponible pour EKS >= 1.29).

UbuntuPro2204

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

Ubuntu 2404

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

UbuntuPro2404

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

Bottlerocket

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

WindowsServer2019 FullContainer

Indique que l'image AMI EKS basée sur le conteneur complet de Windows Server 2019 doit être utilisée.

WindowsServer2019 CoreContainer

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

WindowsServer2022 FullContainer

Indique que l'image AMI EKS basée sur le conteneur complet Windows Server 2022 doit être utilisée.

WindowsServer2022 CoreContainer

Indique que l'image AMI EKS 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. eksctlnécessite que la famille d'AMI soit explicitement définie via un fichier de configuration ou via un indicateur --node-ami-family CLI, chaque fois que vous travaillez avec une AMI personnalisée.

Note

À l'heure actuelle, les groupes de nœuds gérés par EKS ne prennent en charge que les familles d'AMI suivantes lorsque vous travaillez avec des fonctionnalités personnalisées AMIs :AmazonLinux2023,AmazonLinux2, et Ubuntu1804 Ubuntu2004 Ubuntu2204

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éfini 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 d'AMI personnalisé Bottlerocket

Pour les nœuds Bottlerocket, le overrideBootstrapCommand n'est pas pris en charge. Au lieu de cela, pour désigner leur propre conteneur bootstrap, il faut utiliser le bottlerocket champ dans le cadre du fichier de configuration. P. ex.

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