Ir para o conteúdo

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

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

Resolução

É possível 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.

Observação: para instalar a versão mais recente do eksctl, consulte Opções de instalação para Eksctl.

Para confirmar se o eksctl está configurado e instalado em sua máquina local, abra seu terminal ou prompt de comando preferido e execute o seguinte comando:

eksctl version

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

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

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

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

    Observação: substitua CLUSTER_NAME pelo nome do seu cluster, NODEGROUP_NAME pelo nome do seu grupo de nós e REGION_NAME pela sua região da AWS.

    A seguir estão os parâmetros padrão:

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

  2. 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 CLUSTER_NAME --region REGION_NAME

    Observação: substitua CLUSTER_NAME pelo nome do seu cluster e REGION_NAME pela sua região da AWS.

  3. Na saída, confirme se o status do nó é PRONTO e se o status do grupo de nós é ATIVO.
    Exemplo de 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 example-workers ACTIVE  2023-10-28T14:30:00Z  2         2         2                 m5.large      AL2_x86_64   eks-example-workers-11223344  managed

    Exemplo de status do nó:

    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

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: 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'

    Observação: substitua CLUSTER_NAME pelo nome do seu cluster, REGION_NAME pela sua região da AWS, NODEGROUP_NAME pelo nome do seu grupo de nós. SECURITY_GROUP_ID pelo ID do seu grupo de segurança, KEY_PAIR_NAME pelo nome do seu par de chaves e AVAILABILITY_ZONE pela sua zona de disponibilidade.

    Para obter mais informações sobre parâmetros compatíveis e tipos de grupos de nós, consulte Grupos de nós.

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

    eksctl create nodegroup --config-file=CONFIG_FILE

    Observação: substitua CONFIG_FILE pelo nome do seu arquivo de configuração.

  3. (Opcional) O comando na etapa 2 implanta uma pilha do AWS CloudFormation para criar recursos para o grupo de nós do 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 é 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 o seguinte comandos:

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

    Observação: substitua CLUSTER_NAME pelo nome do seu cluster e REGION_NAME pela sua região da AWS.

    Na saída, confirme se o status do nó é PRONTO e se o status do grupo de nós é ATIVO.

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

    Exemplo de status do nó:

    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 OFICIALAtualizada há 6 meses