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
-
Para crear un grupo de nodos adicional con parámetros predeterminados, ejecute este comando:
$ eksctl create nodegroup --cluster=yourClusterName --name=yourNodeGroupName --region yourRegionName
-
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.
-
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
-
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.
-
Para crear un grupo de nodos adicional con el archivo de configuración, ejecute el siguiente comando:
$ eksctl create nodegroup --config-file=yourConfigFileName
-
(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.
-
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