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
-
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
-
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.
-
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
-
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.
-
Para criar um grupo de nós adicional com o arquivo de configuração, execute o seguinte comando:
$ eksctl create nodegroup --config-file=yourConfigFileName
-
(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.
-
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