Comment puis-je créer plusieurs groupes de nœuds pour les nœuds Amazon EKS avec eksctl ?

Lecture de 4 minute(s)
0

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

  1. 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
  2. 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.

  3. 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

  1. 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.

  2. 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
  3. (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.

  4. 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
AWS OFFICIEL
AWS OFFICIELA mis à jour il y a un an