Je souhaite créer plusieurs groupes de nœuds pour les nœuds Amazon Elastic Kubernetes Service (Amazon EKS) avec eksctl.
Brève description
Vous pouvez créer un groupe de nœuds avec eksctl et les paramètres par défaut. Vous pouvez aussi en créer un avec des paramètres personnalisés et un fichier de configuration pour plusieurs groupes de nœuds.
Pour installer la dernière version d’eksctl, consultez la section Installation sur le site Web d’eksctl.
Pour vérifier qu’eksctl est bien configuré et installé sur le terminal avec les autorisations appropriées, exécutez la commande suivante :
$ eksctl version
Choisissez ensuite l’une des résolutions suivantes en fonction du type de paramètres que vous souhaitez utiliser.
Résolution
Créer un groupe de nœuds avec des paramètres par défaut
-
Pour créer un groupe de nœuds supplémentaire avec des paramètres par défaut, exécutez la commande suivante :
$ eksctl create nodegroup --cluster=yourClusterName --name=yourNodeGroupName --region yourRegionName
-
Les paramètres par défaut sont les suivants :
Instance type = m5.largeAMI : lastest AWS EKS AMI
Nodes-desired capacity = 2
Nodes-min capacity =2
Nodes-max capacity=2
Remarque : par défaut, les nouveaux groupes de nœuds héritent de la version de Kubernetes depuis le plan de contrôle(–version=auto). Vous pouvez spécifier une version différente de Kubernetes (par exemple, version=1.27). Pour utiliser la dernière version de Kubernetes, exécutez la commande –version=latest.
-
Pour confirmer que les nouveaux groupes de nœuds sont bien attachés au cluster et vérifier que les nœuds ont rejoint le cluster, exécutez les commandes suivantes :
$ kubectl get nodes
$ eksctl get nodegroups --cluster yourClusterName --region yourRegionName
Dans la sortie, confirmez que le statut du nœud est bien READY et que le statut du groupe de nœuds est bien ACTIVE. Exemple :
Statut du groupe de nœuds
$ eksctl get nodegroups --cluster yourClusterName --region yourRegionName
CLUSTER NODEGROUP STATUS CREATED MIN SIZE MAX SIZE DESIRED CAPACITY INSTANCE TYPE IMAGE ID ASG NAME TYPE
clusterName ngWorkers ACTIVE Date&Time * * * m5.large AL2_x86_64 ASGNAME managed
****Statut du nœud
$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
ip-***-**-**-***.region.compute.internal Ready <none> 4h v1.2x.x-eks-xx
ip-***-**-***-**.region.compute.internal Ready <none> 4h v1.2x.x-eks-xx
Create a node group with custom parameters
Créer un groupe de nœuds avec des paramètres personnalisés
-
Définissez les paramètres du nouveau groupe de nœuds dans un fichier de configuration. Exemple :
kind: ClusterConfig
apiVersion: eksctl.io/v1alpha5
metadata:
name: clusterName
region: region
nodeGroups:
- name: ngWorkers
availabilityZones: ["az-name"]
desiredCapacity: 3
instanceType: m5.large
iam:
instanceProfileARN: "arn:aws:iam::11111:instance-profile/eks-nodes-base-role" #Attaching IAM role
instanceRoleARN: "arn:aws:iam::1111:role/eks-nodes-base-role"
privateNetworking: true
securityGroups:
withShared: true
withLocal: true
attachIDs: ['sg-11111', 'sg-11112']
ssh:
publicKeyName: 'my-instance-key'
kubeletExtraConfig:
kubeReserved:
cpu: "300m"
memory: "300Mi"
ephemeral-storage: "1Gi"
kubeReservedCgroup: "/kube-reserved"
systemReserved:
cpu: "300m"
memory: "300Mi"
ephemeral-storage: "1Gi"
tags:
'environment': 'development'
- name: ng-2-builders #example of a nodegroup that uses 50% spot instances and 50% on demand instances:
minSize: 2
maxSize: 5
instancesDistribution:
maxPrice: 0.017
instanceTypes: ["t3.small", "t3.medium"] # At least two instance types should be specified
onDemandBaseCapacity: 0
onDemandPercentageAboveBaseCapacity: 50
spotInstancePools: 2
tags:
'environment': 'production'
Pour plus d’informations sur les paramètres pris en charge et les types de groupes de nœuds, consultez la section Nodegroups sur le site Web d’eksctl.
-
Pour créer un groupe de nœuds supplémentaire avec le fichier de configuration, exécutez la commande suivante :
$ eksctl create nodegroup --config-file=yourConfigFileName
-
(Facultatif) La commande de l’étape 2 déploie une pile AWS CloudFormation afin de créer des ressources pour le groupe de nœuds EKS. Pour vérifier l’état de la pile, accédez à la console CloudFormation et vérifiez que la région AWS est bien la même que celle du cluster.
Une fois que la pile est dans l’état CREATE_COMPLETE, la commande eksctl se ferme correctement.
-
Pour confirmer que les nouveaux groupes de nœuds sont bien attachés au cluster et que les nœuds ont bien rejoint le cluster, exécutez les commandes suivantes :
$ kubectl get nodes
$ eksctl get nodegroups --cluster yourClusterName --region yourRegionName
Dans la sortie, confirmez que le statut du nœud est bien READY et que le statut du groupe de nœuds est bien ACTIVE. Exemple :
Statut du groupe de nœuds
$ eksctl get nodegroups --cluster yourClusterName --region yourRegionName
CLUSTER NODEGROUP STATUS CREATED MIN SIZE MAX SIZE DESIRED CAPACITY INSTANCE TYPE IMAGE ID ASG NAME TYPE
clusterName ngWorkers ACTIVE Date&Time * * * m5.large AL2_x86_64 ASGNAME managed
Statut du nœud
$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
ip-***-**-**-***.region.compute.internal Ready <none> 4h v1.2x.x-eks-xx
ip-***-**-***-**.region.compute.internal Ready <none> 4h v1.2x.x-eks-xx