Je souhaite utiliser eksctl pour lancer Amazon Machine Image Bottlerocket (AMI Bottlerocket) afin de créer un groupe de nœuds géré dans Amazon Elastic Kubernetes Service (Amazon EKS).
Résolution
Préalable
1. Assurez-vous que vous avez eksctl version 0.124.0 ou ultérieure.
2. Exécutez la commande suivante pour vérifier votre version :
$ eksctl version
Créez un fichier bottlerocket.yaml
1. Ouvrez le terminal sur lequel vous avez installé eksctl. Ensuite, suivez les étapes suivantes pour créer un nouveau fichier.
2. Remplacez mybottlerocket-cluster par le nom de votre cluster. Le nom ne peut contenir que des caractères alphanumériques (sensibles à la casse) et des traits d'union. Il doit commencer par un caractère alphabétique et ne doit pas dépasser 100 caractères.
3. Remplacez bottlerocket-nodegroup par le nom de votre groupe de nœuds. Le nom ne peut contenir que des caractères alphanumériques (sensibles à la casse) et des traits d'union. Il doit commencer par un caractère alphabétique et ne doit pas dépasser 100 caractères.
4. Indiquez ensuite le type d'instance. Par exemple, pour déployer sur une instance ARM, remplacez m5.xlarge par un type d'instance ARM.
5. Remplacez eks_bottlerocket par le nom d'une paire de clés SSH Amazon Elastic Compute Cloud (Amazon EC2). Une fois qu'ils sont lancés, utilisez SSH pour vous connecter aux nœuds.
Remarque : Si vous ne possédez pas de paire de clés SSH Amazon EC2, créez-en une dans la console de gestion AWS. Pour plus d'informations, consultez les Paires de clés Amazon EC2 et instances Linux.
6. Remplacez toutes les valeurs restantes de l'exemple par vos propres valeurs. Après avoir effectué les remplacements, enregistrez le fichier bottlerocket.yaml.
---
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig
metadata:
name: mybottlerocket-cluster
region: us-west-2
version: '1.23'
managedNodeGroups:
- name: bottlerocket-nodegroup
instanceType: m5.xlarge
minSize: 2
maxSize: 4
desiredCapacity: 3
amiFamily: Bottlerocket
labels: { role: br-worker }
tags:
nodegroup-type: Bottlerocket
ssh:
allow: true
publicKeyName: eks_bottlerocket
Remarque : Vous pouvez créer des groupes de nœuds gérés par BottleRocket pour tous les types d'instances par défaut. Il s'agit de la mise à l'échelle statique (série T), de la mise à l'échelle à usage général (série M), de l'optimisation du calcul (série C), de l'optimisation de la mémoire (série R) et des types d'instance basés sur Graviton2 ARM. L'AMI Bottlerocket ne prend pas en charge les types d'instance de calcul accéléré (P, G, Inf1).
Pour plus d'informations sur l'AMI Bottlerocket, consultez les AMI Bottlerocket optimisées pour Amazon EKS.
Créez le groupe de nœuds et répertoriez ses nœuds dans le cluster EKS
1. Exécutez la commande eksctl suivante pour créer un groupe de nœuds :
$ eksctl create nodegroup -f bottlerocket.yaml
[✔] created 1 nodegroup(s) in cluster "mybottlerocket-cluster"
2. Répertoriez les nœuds du cluster EKS ainsi que vos attributs :
$ kubectl get nodes -o=custom-columns=NODE:.metadata.name,ARCH:.status.nodeInfo.architecture,OS-Image:.status.nodeInfo.osImage,OS:.status.nodeInfo.operatingSystem
NODE ARCH OS-Image OS
ip-192-168-xx-xx.us-west-2.compute.internal amd64 Bottlerocket OS 1.11.1 (aws-k8s-1.23) linux
ip-192-168-xx-xx.us-west-2.compute.internal amd64 Bottlerocket OS 1.11.1 (aws-k8s-1.23) linux
ip-192-168-xx-xx.us-west-2.compute.internal amd64 Bottlerocket OS 1.11.1 (aws-k8s-1.23) linux
Connectez-vous aux nœuds AMI Bottlerocket (facultatif)
Connectez-vous aux nouveaux nœuds Bottlerocket via une session AWS Systems Manager (AWS SSM). L'agent AWS SSM s'exécute sur le nœud car vous avez déjà activé l'autorisation AWS SSM pour le rôle d'instance de nœud. Pour plus d'informations sur AWS SSM, consultez Qu'est-ce qu'AWS Systems Manager ?
1. Exécutez la commande suivante pour trouver les ID de l'instance :
$ kubectl get nodes -o=custom-columns=NODE:.metadata.name,ARCH:.status.nodeInfo.architecture,OS-Image:.status.nodeInfo.osImage,OS:.status.nodeInfo.operatingSystem,InstanceId:.spec.providerID
NODE ARCH OS-Image OS InstanceId
ip-192-168-xx-xx.us-west-2.compute.internal amd64 Bottlerocket OS 1.11.1 (aws-k8s-1.23) linux aws:///us-west-2b/i-0cf32f13f60c2f501
ip-192-168-xx-xx.us-west-2.compute.internal amd64 Bottlerocket OS 1.11.1 (aws-k8s-1.23) linux aws:///us-west-2b/i-0f31328a5d21cb092
ip-192-168-xx-xx.us-west-2.compute.internal amd64 Bottlerocket OS 1.11.1 (aws-k8s-1.23) linux aws:///us-west-2b/i-08c218b729ecf9b5d
Démarrer une session SSM
Par défaut, Bottlerocket possède un conteneur de contrôle qui s'exécute sur une instance distincte de containerd. Ce conteneur exécute l'agent AWS SSM et vous permet d'exécuter des commandes ou de démarrer des sessions shell interactives sur les nœuds Bottlerocket.
1. Choisissez l'une des instances que vous avez identifiées précédemment et lancez une session SSM. L'exemple suivant montre une commande de session SSM pour l'instance i-0cf32f13f60c2f501 :
$ aws ssm start-session --target i-0cf32f13f60c2f501 --region us-west-2
Starting session with SessionId: EKS-Test-User-0077e4c89ad2bc888
Welcome to Bottlerocket's control container!
Informations connexes
Lancement de nœuds Bottlerocket autogérés
Définition d'Amazon EKS