

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Grupos de nodos gestionados por EKS
<a name="nodegroup-managed"></a>

 [Los grupos de nodos gestionados por Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/managed-node-groups.html) son una función que automatiza el aprovisionamiento y la administración del ciclo de vida de los nodos (instancias EC2) para los clústeres de Kubernetes de Amazon EKS. Los clientes pueden aprovisionar grupos de nodos optimizados para sus clústeres y EKS los mantendrá actualizados con las versiones más recientes de Kubernetes y del sistema operativo host.

Un grupo de nodos gestionado por EKS es un grupo de escalado automático e instancias EC2 asociadas que AWS administra para un clúster de Amazon EKS. Cada grupo de nodos usa la AMI de EKS-optimized Amazon Linux 2. Amazon EKS facilita la aplicación de correcciones de errores y parches de seguridad a los nodos, así como su actualización a las versiones más recientes de Kubernetes. Cada grupo de nodos lanza un grupo de escalado automático para el clúster, que puede abarcar varias subredes y zonas de disponibilidad de VPC de AWS para lograr una alta disponibilidad.

 **NUEVA plantilla de** [lanzamiento](launch-template-support.md): compatibilidad con grupos de nodos administrados 

**nota**  
El término «grupos de nodos no gestionados» se ha utilizado para referirse a los grupos de nodos que eksctl ha admitido desde el principio (representados mediante el campo). `nodeGroups` El `ClusterConfig` archivo sigue utilizando el `nodeGroups` campo para definir los grupos de nodos no gestionados, y los grupos de nodos gestionados se definen con el campo. `managedNodeGroups`

## Creación de grupos de nodos gestionados
<a name="_creating_managed_nodegroups"></a>

```
$ eksctl create nodegroup
```

### Nuevos clústeres
<a name="_new_clusters"></a>

Para crear un clúster nuevo con un grupo de nodos gestionado, ejecute

```
eksctl create cluster
```

Para crear varios grupos de nodos gestionados y tener más control sobre la configuración, se puede utilizar un archivo de configuración.

**nota**  
Los grupos de nodos administrados no tienen una paridad de funciones completa con los grupos de nodos no administrados.

```
# cluster.yaml
# A cluster with two managed nodegroups
---
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig

metadata:
  name: managed-cluster
  region: us-west-2

managedNodeGroups:
  - name: managed-ng-1
    minSize: 2
    maxSize: 4
    desiredCapacity: 3
    volumeSize: 20
    ssh:
      allow: true
      publicKeyPath: ~/.ssh/ec2_id_rsa.pub
      # new feature for restricting SSH access to certain AWS security group IDs
      sourceSecurityGroupIds: ["sg-00241fbb12c607007"]
    labels: {role: worker}
    tags:
      nodegroup-role: worker
    iam:
      withAddonPolicies:
        externalDNS: true
        certManager: true

  - name: managed-ng-2
    instanceType: t2.large
    minSize: 2
    maxSize: 3
```

[Puedes encontrar otro ejemplo de un archivo de configuración para crear un grupo de nodos gestionado aquí.](https://github.com/eksctl-io/eksctl/blob/main/examples/15-managed-nodes.yaml)

Es posible tener un clúster con grupos de nodos gestionados y no gestionados. Los grupos de nodos no administrados no aparecen en la consola EKS de AWS, pero `eksctl get nodegroup` muestran ambos tipos de grupos de nodos.

```
# cluster.yaml
# A cluster with an unmanaged nodegroup and two managed nodegroups.
---
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig

metadata:
  name: managed-cluster
  region: us-west-2

nodeGroups:
  - name: ng-1
    minSize: 2

managedNodeGroups:
  - name: managed-ng-1
    minSize: 2
    maxSize: 4
    desiredCapacity: 3
    volumeSize: 20
    ssh:
      allow: true
      publicKeyPath: ~/.ssh/ec2_id_rsa.pub
      # new feature for restricting SSH access to certain AWS security group IDs
      sourceSecurityGroupIds: ["sg-00241fbb12c607007"]
    labels: {role: worker}
    tags:
      nodegroup-role: worker
    iam:
      withAddonPolicies:
        externalDNS: true
        certManager: true

  - name: managed-ng-2
    instanceType: t2.large
    privateNetworking: true
    minSize: 2
    maxSize: 3
```

 **NEW** Support para AMI personalizadas, grupos de seguridad`instancePrefix`,`instanceName`,`ebsOptimized`,`volumeType`,`volumeName`,`volumeEncrypted`,`volumeKmsKeyID`,`volumeIOPS`,`maxPodsPerNode`,`preBootstrapCommands`,`overrideBootstrapCommand`, y `disableIMDSv1` 

```
# cluster.yaml
# A cluster with a managed nodegroup with customization.
---
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig

metadata:
  name: managed-cluster
  region: us-west-2

managedNodeGroups:
  - name: custom-ng
    ami: ami-0e124de4755b2734d
    securityGroups:
      attachIDs: ["sg-1234"]
    maxPodsPerNode: 80
    ssh:
      allow: true
    volumeSize: 100
    volumeName: /dev/xvda
    volumeEncrypted: true
    # defaults to true, which enforces the use of IMDSv2 tokens
    disableIMDSv1: false
    overrideBootstrapCommand: |
      #!/bin/bash
      /etc/eks/bootstrap.sh managed-cluster --kubelet-extra-args '--node-labels=eks.amazonaws.com/nodegroup=custom-ng,eks.amazonaws.com/nodegroup-image=ami-0e124de4755b2734d'
```

Si solicitas un tipo de instancia que solo está disponible en una zona (y la configuración de eksctl requiere la especificación de dos), asegúrate de añadir la zona de disponibilidad a tu solicitud de grupo de nodos:

```
# cluster.yaml
# A cluster with a managed nodegroup with "availabilityZones"
---

apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig

metadata:
  name: flux-cluster
  region: us-east-2
  version: "1.23"

availabilityZones: ["us-east-2b", "us-east-2c"]
managedNodeGroups:
  - name: workers
    instanceType: hpc6a.48xlarge
    minSize: 64
    maxSize: 64
    labels: { "fluxoperator": "true" }
    availabilityZones: ["us-east-2b"]
    efaEnabled: true
    placement:
      groupName: eks-efa-testing
```

Esto puede ocurrir con tipos de instancias como [la familia Hpc6](https://aws.amazon.com/ec2/instance-types/hpc6/), que solo están disponibles en una zona.

### Clústeres existentes
<a name="_existing_clusters"></a>

```
eksctl create nodegroup --managed
```

Consejo: si utilizas un `ClusterConfig` archivo para describir todo el clúster, describe el nuevo grupo de nodos gestionado en el `managedNodeGroups` campo y ejecuta:

```
eksctl create nodegroup --config-file=YOUR_CLUSTER.yaml
```

## Actualización de los grupos de nodos gestionados
<a name="_upgrading_managed_nodegroups"></a>

Puede actualizar un grupo de nodos a la última versión de la EKS-optimized AMI para el tipo de AMI que esté utilizando en cualquier momento.

Si su grupo de nodos es de la misma versión de Kubernetes que el clúster, puede actualizar a la última versión de AMI para esa versión de Kubernetes del tipo de AMI que esté utilizando. Si su grupo de nodos es la versión de Kubernetes anterior a la versión de Kubernetes del clúster, puede actualizar el grupo de nodos a la última versión de AMI que coincida con la versión de Kubernetes del grupo de nodos, o actualizar a la última versión de AMI que coincida con la versión de Kubernetes del clúster. No puedes revertir un grupo de nodos a una versión anterior de Kubernetes.

Para actualizar un grupo de nodos gestionado a la última versión de la AMI:

```
eksctl upgrade nodegroup --name=managed-ng-1 --cluster=managed-cluster
```

El grupo de nodos se puede actualizar a la última versión de AMI para una versión específica de Kubernetes mediante:

```
eksctl upgrade nodegroup --name=managed-ng-1 --cluster=managed-cluster --kubernetes-version=<kubernetes-version>
```

Para actualizar a una versión de lanzamiento de AMI específica en lugar de a la última versión, pase`--release-version`:

```
eksctl upgrade nodegroup --name=managed-ng-1 --cluster=managed-cluster --release-version=1.19.6-20210310
```

**nota**  
Si los nodos gestionados se implementan mediante AMI personalizadas, se debe seguir el siguiente flujo de trabajo para implementar una nueva versión de la AMI personalizada.
+ El despliegue inicial del grupo de nodos debe realizarse mediante una plantilla de lanzamiento. p. ej.

  ```
  managedNodeGroups:
    - name: launch-template-ng
      launchTemplate:
        id: lt-1234
        version: "2" #optional (uses the default version of the launch template if unspecified)
  ```
+ cree una nueva versión de la AMI personalizada (mediante la consola AWS EKS).
+ cree una nueva versión de la plantilla de lanzamiento con el nuevo ID de AMI (mediante la consola AWS EKS).
+ actualice los nodos a la nueva versión de la plantilla de lanzamiento, p. ej.

  ```
  eksctl upgrade nodegroup --name nodegroup-name --cluster cluster-name --launch-template-version new-template-version
  ```

## Gestión de actualizaciones paralelas para nodos
<a name="_handling_parallel_upgrades_for_nodes"></a>

Se pueden actualizar varios nodos gestionados simultáneamente. Para configurar las actualizaciones paralelas, defina el grupo `updateConfig` de nodos al crear el grupo de nodos. [Puede encontrar un ejemplo `updateConfig` aquí.](https://github.com/eksctl-io/eksctl/blob/main/examples/15-managed-nodes.yaml)

Para evitar que sus cargas de trabajo se pierdan debido a la actualización de varios nodos a la vez, puede limitar el número de nodos que pueden dejar de estar disponibles durante una actualización especificándolo en el `maxUnavailable` campo de una`updateConfig`. Como alternativa, utilice`maxUnavailablePercentage`, que define el número máximo de nodos no disponibles como un porcentaje del número total de nodos.

Tenga en cuenta que `maxUnavailable` no puede ser superior a`maxSize`. Además, `maxUnavailable` `maxUnavailablePercentage` no se puede usar simultáneamente.

Esta función solo está disponible para los nodos gestionados.

## Actualización de grupos de nodos gestionados
<a name="_updating_managed_nodegroups"></a>

 `eksctl`permite actualizar la [UpdateConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-eks-nodegroup-updateconfig.html)sección de un grupo de nodos gestionado. En esta sección se definen dos campos. `MaxUnavailable`y`MaxUnavailablePercentage`. Tus grupos de nodos no se ven afectados durante la actualización, por lo que no es de esperar un tiempo de inactividad.

El comando `update nodegroup` debe usarse con un archivo de configuración que use la bandera. `--config-file` El grupo de nodos debe contener una `nodeGroup.updateConfig` sección. [Puede encontrar más información aquí.](https://geoffcline.github.io/eksctl-schema-demo/#nodeGroups-updateConfig)

## Problemas de salud de Nodegroup
<a name="_nodegroup_health_issues"></a>

Los grupos de nodos gestionados por EKS comprueban automáticamente la configuración del grupo de nodos y los nodos para detectar problemas de estado y los notifican a través de la API y la consola de EKS. Para ver los problemas de estado de un grupo de nodos:

```
eksctl utils nodegroup-health --name=managed-ng-1 --cluster=managed-cluster
```

## Administrar etiquetas
<a name="_managing_labels"></a>

EKS Managed Nodegroups permite adjuntar etiquetas que se aplican a los nodos de Kubernetes del grupo de nodos. Esto se especifica mediante el `labels` campo de eksctl durante la creación del clúster o grupo de nodos.

Para establecer etiquetas nuevas o actualizar las etiquetas existentes en un grupo de nodos:

```
eksctl set labels --cluster managed-cluster --nodegroup managed-ng-1 --labels kubernetes.io/managed-by=eks,kubernetes.io/role=worker
```

Para desconfigurar o eliminar etiquetas de un grupo de nodos:

```
eksctl unset labels --cluster managed-cluster --nodegroup managed-ng-1 --labels kubernetes.io/managed-by,kubernetes.io/role
```

Para ver todas las etiquetas configuradas en un grupo de nodos:

```
eksctl get labels --cluster managed-cluster --nodegroup managed-ng-1
```

## Escalar los grupos de nodos gestionados
<a name="_scaling_managed_nodegroups"></a>

 `eksctl scale nodegroup`también admite grupos de nodos gestionados. La sintaxis para escalar un grupo de nodos administrado o no administrado es la misma.

```
eksctl scale nodegroup --name=managed-ng-1 --cluster=managed-cluster --nodes=4 --nodes-min=3 --nodes-max=5
```

## Más información
<a name="_further_information"></a>
+  [Grupos de nodos gestionados por EKS](https://docs.aws.amazon.com/eks/latest/userguide/managed-node-groups.html) 