Passer au contenu

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

Lecture de 5 minute(s)
0

Je souhaite créer plusieurs groupes de nœuds pour les nœuds Amazon Elastic Kubernetes Service (Amazon EKS) avec eksctl.

Résolution

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.

Remarque : pour installer la dernière version d’eksctl, consultez la page Options d’installation pour Eksctl.

Pour vérifier qu'eksctl est configuré et installé sur votre machine locale, ouvrez le terminal ou l'invite de commande de votre choix et 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.

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=CLUSTER_NAME --name=NODEGROUP_NAME --region REGION_NAME

    Remarque : remplacez CLUSTER_NAME par le nom de votre cluster, NODEGROUP_NAME par le groupe de nœuds et REGION_NAME par votre région AWS.

    Les paramètres par défaut sont les suivants :

    Instance type = m5.largeAMI : latest 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. 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.

  2. Pour confirmer que les nouveaux groupes de nœuds sont attachés au cluster et vérifier que les nœuds ont rejoint le cluster, exécutez la commande suivante :

    kubectl get nodes
    eksctl get nodegroups --cluster CLUSTER_NAME --region REGION_NAME

    Remarque : remplacez CLUSTER_NAME par le nom de votre cluster et REGION_NAME par votre région AWS.

  3. Dans la sortie, confirmez que le statut du groupe de nœuds est ACTIF et que le statut du nœud est PRÊT.
    Exemple de 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 example-workers ACTIVE  2023-10-28T14:30:00Z  2         2         2                 m5.large      AL2_x86_64   eks-example-workers-11223344  managed

    Exemple de statut du nœud :

    kubectl get nodes
    NAME                                          STATUS  ROLES  AGE  VERSION
    ip-192-168-100-101.us-west-2.compute.internal Ready   <none> 4h   v1.27.1-eks-1
    ip-192-168-100-102.us-west-2.compute.internal Ready   <none> 4h   v1.27.1-eks-1

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: CLUSTER_NAME
        region: REGION_NAME
    nodeGroups:
      - name: NODEGROUP_NAME
        availabilityZones: ["AVAILABILITY_ZONE"]
        desiredCapacity: 3
        instanceType: m5.large
        iam:
          instanceProfileARN: "arn:aws:iam::444455556666:instance-profile/eks-nodes-base-role" #Attaching IAM role
          instanceRoleARN: "arn:aws:iam::444455556666:role/eks-nodes-base-role"
        privateNetworking: true
        securityGroups:
          withShared: true
          withLocal: true
          attachIDs: ['SECURITY_GROUP_ID']
        ssh:
          publicKeyName: 'KEY-PAIR-NAME'
        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'

    Remarque : remplacez CLUSTER_NAME par le nom de votre cluster, REGION_NAME par votre région AWS, NODEGROUP_NAME par le nom de votre groupe de nœuds. SECURITY_GROUP_ID par l’ID du groupe de sécurité, KEY_PAIR_NAME par le nom de votre paire de clés et AVAILABILITY_ZONE par votre zone de disponibilité.

    Pour plus d'informations sur les paramètres et les types de groupes de nœuds pris en charge, consultez la section Groupes de nœuds.

  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=CONFIG_FILE

    Remarque : remplacez CONFIG_FILE par le nom de votre fichier de configuration.

  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 attachés au cluster et que les nœuds ont rejoint le cluster, exécutez la commande suivante :

    kubectl get nodes
    eksctl get nodegroups --cluster CLUSTER_NAME --region REGION_NAME

    Remarque : remplacez CLUSTER_NAME par le nom de votre cluster et REGION_NAME par votre région AWS.

    Dans la sortie, confirmez que le statut du groupe de nœuds est ACTIF et que le statut du nœud est PRÊT.

    Exemple de 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 example-workers ACTIVE  2023-10-28T14:30:00Z  2         2         3                 m5.large      AL2_x86_64   eks-example-workers-11223344  managed

    Exemple de statut du nœud :

    kubectl get nodes
    NAME                                          STATUS  ROLES  AGE  VERSION
    ip-192-168-100-101.us-west-2.compute.internal Ready   <none> 4h   v1.27.1-eks-1
    ip-192-168-100-102.us-west-2.compute.internal Ready   <none> 4h   v1.27.1-eks-1
    ip-192-168-100-103.us-west-2.compute.internal Ready   <none> 4h   v1.27.1-eks-1
AWS OFFICIELA mis à jour il y a 7 mois