Como faço para criar vários grupos de nós para os nós do Amazon EKS usando eksctl?

4 minuto de leitura
0

Quero criar vários grupos de nós para os nós do Amazon Elastic Kubernetes Service (Amazon EKS) usando eksctl.

Breve descrição

Você pode criar um grupo de nós com o eksctl e parâmetros padrão. Ou crie um com parâmetros personalizados e um arquivo de configuração para vários grupos de nós.

Para instalar a versão mais recente do eksctl, consulte Instalação no site eksctl.

Para confirmar se o eksctl está configurado e instalado no terminal com as permissões corretas, execute este comando:

$ eksctl version

Em seguida, escolha uma das seguintes soluções com base no tipo de parâmetros que você deseja usar.

Solução

Crie um grupo de nós com parâmetros padrão

  1. Para criar um grupo de nós adicional com parâmetros padrão, execute este comando:

    $ eksctl create nodegroup --cluster=yourClusterName --name=yourNodeGroupName --region yourRegionName
  2. A seguir estão os parâmetros padrão:

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

    Observação:Por padrão, novos grupos de nós herdam a versão do Kubernetes do ambiente de gerenciamento (—version=auto). Você pode especificar uma versão diferente do Kubernetes (por exemplo, version=1.27). Para usar a versão mais recente do Kubernetes, execute o comando –version=latest.

  3. Para confirmar se os novos grupos de nós estão anexados ao cluster e verificar se os nós se juntaram ao cluster, execute estes comandos:

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

    Na saída, confirme se o status do nó é READY e se o status do grupo de nós é ACTIVE. Por exemplo:

    Status do grupo de nós

    $ 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
    

    ****Status do nó


    $ 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
    
    

Crie um grupo de nós com parâmetros personalizados

  1. Defina os parâmetros para o novo grupo de nós em um arquivo de configuração. Por exemplo:

    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 obter mais informações sobre parâmetros compatíveis e tipos de grupos de nós, consulte Nodegroups no site eksctl.

  2. Para criar um grupo de nós adicional com o arquivo de configuração, execute o seguinte comando:

    $ eksctl create nodegroup --config-file=yourConfigFileName
  3. (Opcional) O comando na etapa 2 implanta uma pilha do AWS CloudFormation para criar recursos para o grupo de nós EKS. Para verificar o status da pilha, acesse o console do CloudFormation e confirme se a região da AWS é a mesma do cluster. 
    Depois que a pilha estiver no estado CREATE\ _COMPLETE, o comando eksctl será encerrado com êxito.

  4. Para confirmar se os novos grupos de nós estão anexados ao cluster e verificar se os nós se juntaram ao cluster, execute estes comandos:

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

    Na saída, confirme se o status do nó é READY e se o status do grupo de nós é ACTIVE. Por exemplo:
    Status do grupo de nós

    $ 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

    Status do nó

    $ 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 OFICIAL
AWS OFICIALAtualizada há um ano