¿Cómo creo varios grupos de nodos para los nodos de Amazon EKS mediante eksctl?

4 minutos de lectura
0

Quiero crear varios grupos de nodos para los nodos de Amazon Elastic Kubernetes Service (Amazon EKS) mediante eksctl.

Breve descripción

Puede crear un grupo de nodos mediante eksctl con parámetros predeterminados o con parámetros personalizados y un archivo de configuración para varios grupos de nodos.

Para instalar la versión más reciente de eksctl, consulte Installation en el sitio web de eksctl.

Para confirmar que eksctl está configurado e instalado en el terminal con los permisos correctos, ejecute el siguiente comando:

$ eksctl version

A continuación, elija una de las siguientes resoluciones según el tipo de parámetros que desee utilizar.

Resolución

Crear un grupo de nodos con parámetros predeterminados

  1. Para crear un grupo de nodos adicional con parámetros predeterminados, ejecute este comando:

    $ eksctl create nodegroup --cluster=yourClusterName --name=yourNodeGroupName --region yourRegionName
  2. Los parámetros predeterminados son los siguientes:

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

    Nota: De forma predeterminada, los nuevos grupos de nodos heredan la versión de Kubernetes del plano de control (–version=auto). Puede especificar una versión diferente de Kubernetes (por ejemplo, version=1.27). Para usar la versión más reciente de Kubernetes, ejecute el comando –version=latest.

  3. Para confirmar que los nuevos grupos de nodos están asociados al clúster y comprobar que los nodos se han unido al clúster, ejecute estos comandos:

    $ kubectl get nodes
    $ eksctl get nodegroups --cluster yourClusterName --region yourRegionName

    En el resultado, confirme que el estado del nodo es READY y que el estado del grupo de nodos es ACTIVE. Por ejemplo:

    Estado de Nodegroup

    $ 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
    

    ****Estado del nodo


    $ 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
    
    

Crear un grupo de nodos con parámetros personalizados

  1. Defina los parámetros del nuevo grupo de nodos en un archivo de configuración. Por ejemplo:

    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'

    Para obtener más información sobre los parámetros y los tipos de grupos de nodos compatibles, consulte Nodegroups en el sitio web de eksctl.

  2. Para crear un grupo de nodos adicional con el archivo de configuración, ejecute el siguiente comando:

    $ eksctl create nodegroup --config-file=yourConfigFileName
  3. (Opcional) El comando del paso 2 implementa una pila de AWS CloudFormation para crear recursos para el grupo de nodos de EKS. Para comprobar el estado de la pila, acceda a la consola de CloudFormation y confirme que la región de AWS es la misma que la del clúster. 
    Cuando la pila esté en estado CREATE_COMPLETE, el comando eksctl se cierra correctamente.

  4. Para confirmar que los nuevos grupos de nodos están asociados al clúster y comprobar que los nodos se han unido al clúster, ejecute estos comandos:

    $ kubectl get nodes
    $ eksctl get nodegroups --cluster yourClusterName --region yourRegionName

    En el resultado, confirme que el estado del nodo es READY y que el estado del grupo de nodos es ACTIVE. Por ejemplo:
    Estado de Nodegroup

    $ 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

    Estado del nodo

    $ 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
OFICIAL DE AWS
OFICIAL DE AWSActualizada hace un año