Salta al contenuto

Come posso creare più gruppi di nodi per i nodi Amazon EKS utilizzando eksctl?

5 minuti di lettura
0

Desidero creare più gruppi di nodi per i nodi di Amazon Elastic Kubernetes Service (Amazon EKS) utilizzando eksctl.

Risoluzione

Puoi creare un gruppo di nodi con eksctl e parametri predefiniti. Oppure creane uno con parametri personalizzati e un file di configurazione per più gruppi di nodi.

Nota: per installare l'ultima versione di eksctl, consulta Opzioni di installazione per Eksctl.

Per verificare che eksctl sia configurato e installato sul computer locale, apri il terminale o il prompt dei comandi che preferisci ed esegui questo comando:

eksctl version

Quindi scegli una delle seguenti risoluzioni in base al tipo di parametri che desideri utilizzare.

Crea un gruppo di nodi con parametri predefiniti

  1. Per creare un gruppo di nodi aggiuntivo con parametri predefiniti, esegui questo comando:

    eksctl create nodegroup --cluster=CLUSTER_NAME --name=NODEGROUP_NAME --region REGION_NAME

    Nota: sostituisci CLUSTER_NAME con il nome del tuo cluster, NODEGROUP_NAME con il nome del tuo gruppo di nodi e REGION_NAME con la tua Regione AWS.

    Di seguito sono riportati i parametri predefiniti:

    Instance type = m5.largeAMI : latest AWS EKS AMI
    Nodes-desired capacity = 2
    Nodes-min capacity =2
    Nodes-max capacity=2

    Nota: per impostazione predefinita, i nuovi gruppi di nodi ereditano la versione di Kubernetes dal piano di controllo (control-plane). Puoi specificare una versione diversa di Kubernetes (ad esempio, version=1.27). Per utilizzare la versione più recente di Kubernetes, esegui il comando –version=latest.

  2. Per verificare che i nuovi gruppi di nodi siano collegati al cluster e che i nodi si siano uniti al cluster, esegui questo comando:

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

    Nota: sostituisci CLUSTER_NAME con il nome del tuo cluster e REGION_NAME con la tua Regione AWS.

  3. Nell'output, verifica che lo stato del gruppo di nodi sia ATTIVO e che lo stato del nodo sia PRONTO.
    Esempio di stato del gruppo di nodi:

    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

    Esempio di stato del nodo:

    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

Crea un gruppo di nodi con parametri personalizzati

  1. Definisci i parametri per il nuovo gruppo di nodi in un file di configurazione. Ad esempio:

    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'

    Nota: sostituisci CLUSTER_NAME con il nome del tuo cluster, REGION_NAME con la tua Regione AWS, NODEGROUP_NAME con il nome del tuo gruppo di nodi. Sostituisci inoltre SECURITY_GROUP_ID con l'ID del tuo gruppo di sicurezza, KEY_PAIR_NAME con il nome della tua coppia di chiavi e AVAILABILITY_ZONE con la tua zona di disponibilità.

    Per ulteriori informazioni sui parametri supportati e sui tipi di gruppi di nodi, consulta Gruppi di nodi.

  2. Per creare un gruppo di nodi aggiuntivo con il file di configurazione, esegui questo comando:

    eksctl create nodegroup --config-file=CONFIG_FILE

    Nota: sostituisci CONFIG_FILE con il nome del tuo file di configurazione.

  3. (Facoltativo) Il comando nella fase 2 distribuisce uno stack di AWS CloudFormation per creare risorse per il gruppo di nodi EKS. Per verificare lo stato dello stack, accedi alla console CloudFormation e verifica che la Regione AWS sia la stessa del cluster.
    Una volta che lo stack è nello stato CREATE_COMPLETE, il comando eksctl esce correttamente.

  4. Per verificare che i nuovi gruppi di nodi siano collegati al cluster e che i nodi si siano uniti al cluster, esegui questo comando:

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

    Nota: sostituisci CLUSTER_NAME con il nome del tuo cluster e REGION_NAME con la tua Regione AWS.

    Nell'output, verifica che lo stato del gruppo di nodi sia ATTIVO e che lo stato del nodo sia PRONTO.

    Esempio di stato del gruppo di nodi:

    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

    Esempio di stato del nodo:

    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 UFFICIALEAggiornata 7 mesi fa