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