Escalado automático CoreDNS - Amazon EKS

Ayude a mejorar esta página

¿Quiere contribuir a esta guía del usuario? Desplácese hasta el final de esta página y seleccione Editar esta página en GitHub. Sus contribuciones ayudarán a que nuestra guía del usuario sea mejor para todos.

Escalado automático CoreDNS

Al lanzar un clúster de Amazon EKS con al menos un nodo, se implementa un Deployment de dos réplicas de la imagen de CoreDNS de forma predeterminada, independientemente del número de nodos implementados en el clúster. Los pods de CoreDNS proporcionan resolución de nombres para todos los pods del clúster. Las aplicaciones utilizan la resolución de nombres para conectarse a los pods y los servicios del clúster, así como para conectarse a los servicios fuera del clúster. A medida que aumenta el número de solicitudes de resolución de nombres (consultas) procedentes de los pods, los pods de CoreDNS se sobrecargan y se ralentizan, y se rechazan las solicitudes que los pods no pueden gestionar.

Para gestionar la mayor carga de los pods de CoreDNS, considere la posibilidad de utilizar un sistema de escalado automático para CoreDNS. Amazon EKS puede administrar el escalado automático de la implementación de CoreDNS en la versión CoreDNS del complemento de EKS. Este escalador automático CoreDNS monitorea continuamente el estado del clúster, incluida la cantidad de nodos y núcleos de CPU. En función de esa información, el controlador adaptará dinámicamente el número de réplicas de la implementación de CoreDNSen un clúster de EKS. Esta característica funciona en CoreDNS v1.9 y en la versión de lanzamiento de EKS 1.25 y versiones superiores. Para obtener más información acerca de qué versiones son compatibles con el escalado automático CoreDNS, consulte la siguiente sección.

Recomendamos utilizar esta característica junto con otras prácticas recomendadas de escalado automático de clústeres de EKS para mejorar la disponibilidad general de las aplicaciones y la escalabilidad de los clústeres.

Requisitos previos

Para que Amazon EKS escale la implementación de CoreDNS, se deben cumplir tres requisitos previos:

  • Debe utilizar la versión de CoreDNS del complemento de EKS.

  • El clúster debe ejecutar al menos las versiones de clúster y plataforma mínimas.

  • El clúster debe ejecutar al menos la versión mínima del complemento de EKS de CoreDNS.

Versión mínima del clúster

El escalado automático de CoreDNS se realiza mediante un nuevo componente en el plano de control del clúster, administrado por Amazon EKS. Por este motivo, debe actualizar el clúster a una versión de EKS que sea compatible con la versión de la plataforma mínima que incluya el nuevo componente.

Un nuevo clúster de Amazon EKS. Para implementar uno, consulte Introducción a Amazon EKS. El clúster debe ser la versión 1.25 de Kubernetes o posterior. El clúster debe estar ejecutando una de las versiones de Kubernetes y versiones de la plataforma que se enumeran en la siguiente tabla o una versión superior. Tenga en cuenta que también se admite cualquier versión de Kubernetes y de la plataforma posterior a las enumeradas. Puede comprobar la versión actual de Kubernetes reemplazando my-cluster en el siguiente comando por el nombre del clúster y luego ejecutando el comando modificado:

aws eks describe-cluster --name my-cluster --query cluster.version --output text

Versión de Kubernetes

Versión de la plataforma

1.29.3

eks.7

1.28.8

eks.13

1.27.12

eks.17

1.26.15

eks.18

1.25.16

eks.19

nota

También se admiten todas las versiones de plataforma de las versiones de Kubernetes posteriores, por ejemplo, versión Kubernetes 1.30 de eks.1 y posterior.

Versión mínima del complemento de EKS

Versión de Kubernetes 1.29 1.28 1.27 1.26 1.25
v1.11.1-eksbuild.9 v1.10.1-eksbuild.11 v1.10.1-eksbuild.11 v1.9.3-eksbuild.15 v1.9.3-eksbuild.15

Configuración del CoreDNS escalado automático de en AWS Management Console

  1. Asegúrese de que el clúster sea igual o superior a la versión mínima del clúster.

    Amazon EKS actualiza automáticamente los clústeres entre versiones de la plataforma de la misma versión de Kubernetes y no puede iniciar este proceso usted mismo. En su lugar, puede actualizar el clúster a la siguiente versión de Kubernetes, y el clúster se actualizará a esa versión de K8s y a la versión de la plataforma más reciente. Por ejemplo, si actualiza de 1.25 a 1.26, el clúster se actualizará a 1.26.15 eks.18.

    Las nuevas versiones de Kubernetes suelen presentar cambios significativos. Por ende, recomendamos que pruebe el comportamiento de las aplicaciones con un clúster separado de la nueva versión de Kubernetes antes de realizar la actualización en los clústeres de producción.

    Para actualizar un clúster a una nueva versión de Kubernetes, siga el procedimiento descrito en Actualización del clúster existente a la nueva versión de Kubernetes.

  2. Asegúrese de tener el complemento de EKS para CoreDNS, no la implementación autoadministrada de CoreDNS.

    Según la herramienta con la que haya creado el clúster, es posible que actualmente no tenga instalado el tipo de complemento Amazon EKS en el clúster. Para ver qué tipo de complemento está instalado en el clúster, puede ejecutar el siguiente comando. Reemplace my-cluster por el nombre del clúster.

    aws eks describe-addon --cluster-name my-cluster --addon-name coredns --query addon.addonVersion --output text

    Si se devuelve el número de versión, tiene el tipo de complemento de Amazon EKS instalado en el clúster y puede continuar con el siguiente paso. Si se devuelve un error, no tiene el tipo de complemento de Amazon EKS instalado en el clúster. Complete los pasos restantes del procedimiento Creación del complemento de Amazon EKS para reemplazar la versión autoadministrada por el complemento de Amazon EKS.

  3. Asegúrese de que la versión del complemento de EKS para CoreDNS sea igual o superior a la versión mínima del complemento de EKS.

    Consulte qué versión del complemento está instalada en el clúster. Puede verificarlo en la AWS Management Console o ejecutar el siguiente comando:

    kubectl describe deployment coredns --namespace kube-system | grep coredns: | cut -d : -f 3

    Un ejemplo de salida sería el siguiente.

    v1.10.1-eksbuild.11

    Compare esta versión con la versión mínima del complemento de EKS de la sección anterior. Si es necesario, actualice el complemento de EKS a una versión superior; para ello, siga el procedimiento Actualizar el complemento de Amazon EKS.

  4. Agregue la configuración de escalado automático a los ajustes de configuración opcionales del complemento de EKS.

    1. Abra la consola de Amazon EKS en https://console.aws.amazon.com/eks/home#/clusters.

    2. En el panel de navegación izquierdo, seleccione Clusters (Clústeres) y, a continuación, seleccione el nombre del clúster para el que desea configurar el complemento.

    3. Elija la pestaña Complementos.

    4. Seleccione la casilla situada en la parte superior derecha del cuadro del complemento CoreDNS y, a continuación, elija Editar.

    5. En la página Configuración de CoreDNS, haga lo siguiente:

      1. Seleccione la Version (Versión) que desea utilizar. Le recomendamos que mantenga la misma versión que en el paso anterior y que actualice la versión y la configuración en acciones separadas.

      2. Seleccione Ajustes de configuración opcionales.

      3. Introduzca la clave JSON "autoscaling": y el valor de un objeto JSON anidado con una clave "enabled": y un valor true en Valores de configuración. El texto resultante debe ser un objeto JSON válido. Si esta clave y este valor son los únicos datos del cuadro de texto, rodee la clave y el valor entre corchetes {}. En el siguiente ejemplo, se muestra que el escalado automático está activado:

        { "autoScaling": { "enabled": true } }
      4. (Opcional) Puede proporcionar valores mínimos y máximos a los que el escalado automático pueda escalar la cantidad de pods de CoreDNS.

        En el siguiente ejemplo, se muestra que el escalado automático está activado y que todas las claves opcionales tienen valores. Recomendamos que la cantidad mínima de pods de CoreDNS sea siempre superior a 2 para proporcionar resiliencia al servicio DNS del clúster.

        { "autoScaling": { "enabled": true, "minReplicas": 2, "maxReplicas": 10 } }
    6. Para aplicar la nueva configuración mediante la sustitución de los pods de CoreDNS, seleccione Guardar cambios.

      Amazon EKS aplica los cambios a los complementos de EKS mediante la implementación de Kubernetes para CoreDNS. Puede hacer un seguimiento del estado del lanzamiento en el historial de actualizaciones en la AWS Management Console y con kubectl rollout status deployment/coredns --namespace kube-system.

      kubectl rollout tiene los siguientes comandos:

      $ kubectl rollout history -- View rollout history pause -- Mark the provided resource as paused restart -- Restart a resource resume -- Resume a paused resource status -- Show the status of the rollout undo -- Undo a previous rollout

      Si la implementación lleva demasiado tiempo, Amazon EKS la anulará y se agregará al historial de actualizaciones del complemento un mensaje con el tipo de actualización del complemento y el estado Fallido. Para investigar cualquier problema, comience por el historial de la implementación y ejecute kubectl logs en un pod de CoreDNS para ver los registros de CoreDNS.

  5. Si la nueva entrada en el historial de actualizaciones tiene el estado Correcto, esto significa que la implementación se ha completado y que el complemento está utilizando la nueva configuración en todos los pods de CoreDNS. A medida que cambia la cantidad de nodos y los núcleos de CPU de los nodos del clúster, Amazon EKS escala la cantidad de réplicas de la implementación de CoreDNS.

Configuración del CoreDNS escalado automático de en AWS Command Line Interface

  1. Asegúrese de que el clúster sea igual o superior a la versión mínima del clúster.

    Amazon EKS actualiza automáticamente los clústeres entre versiones de la plataforma de la misma versión de Kubernetes y no puede iniciar este proceso usted mismo. En su lugar, puede actualizar el clúster a la siguiente versión de Kubernetes, y el clúster se actualizará a esa versión de K8s y a la versión de la plataforma más reciente. Por ejemplo, si actualiza de 1.25 a 1.26, el clúster se actualizará a 1.26.15 eks.18.

    Las nuevas versiones de Kubernetes suelen presentar cambios significativos. Por ende, recomendamos que pruebe el comportamiento de las aplicaciones con un clúster separado de la nueva versión de Kubernetes antes de realizar la actualización en los clústeres de producción.

    Para actualizar un clúster a una nueva versión de Kubernetes, siga el procedimiento descrito en Actualización del clúster existente a la nueva versión de Kubernetes.

  2. Asegúrese de tener el complemento de EKS para CoreDNS, no la implementación autoadministrada de CoreDNS.

    Según la herramienta con la que haya creado el clúster, es posible que actualmente no tenga instalado el tipo de complemento Amazon EKS en el clúster. Para ver qué tipo de complemento está instalado en el clúster, puede ejecutar el siguiente comando. Reemplace my-cluster por el nombre del clúster.

    aws eks describe-addon --cluster-name my-cluster --addon-name coredns --query addon.addonVersion --output text

    Si se devuelve el número de versión, tiene el tipo de complemento de Amazon EKS instalado en el clúster. Si se devuelve un error, no tiene el tipo de complemento de Amazon EKS instalado en el clúster. Complete los pasos restantes del procedimiento Creación del complemento de Amazon EKS para reemplazar la versión autoadministrada por el complemento de Amazon EKS.

  3. Asegúrese de que la versión del complemento de EKS para CoreDNS sea igual o superior a la versión mínima del complemento de EKS.

    Consulte qué versión del complemento está instalada en el clúster. Puede verificarlo en la AWS Management Console o ejecutar el siguiente comando:

    kubectl describe deployment coredns --namespace kube-system | grep coredns: | cut -d : -f 3

    Un ejemplo de salida sería el siguiente.

    v1.10.1-eksbuild.11

    Compare esta versión con la versión mínima del complemento de EKS de la sección anterior. Si es necesario, actualice el complemento de EKS a una versión superior; para ello, siga el procedimiento Actualizar el complemento de Amazon EKS.

  4. Agregue la configuración de escalado automático a los ajustes de configuración opcionales del complemento de EKS.

    Ejecute el siguiente comando de la AWS CLI. Reemplace my-cluster por el nombre del clúster y el ARN del rol de IAM por el rol que va a usar.

    aws eks update-addon --cluster-name my-cluster --addon-name coredns \ --resolve-conflicts PRESERVE --configuration-values '{"autoScaling":{"enabled":true}}'

    Amazon EKS aplica los cambios a los complementos de EKS mediante la implementación de Kubernetes para CoreDNS. Puede hacer un seguimiento del estado del lanzamiento en el historial de actualizaciones en la AWS Management Console y con kubectl rollout status deployment/coredns --namespace kube-system.

    kubectl rollout tiene los siguientes comandos:

    kubectl rollout history -- View rollout history pause -- Mark the provided resource as paused restart -- Restart a resource resume -- Resume a paused resource status -- Show the status of the rollout undo -- Undo a previous rollout

    Si la implementación lleva demasiado tiempo, Amazon EKS la anulará y se agregará al historial de actualizaciones del complemento un mensaje con el tipo de actualización del complemento y el estado Fallido. Para investigar cualquier problema, comience por el historial de la implementación y ejecute kubectl logs en un pod de CoreDNS para ver los registros de CoreDNS.

  5. (Opcional) Puede proporcionar valores mínimos y máximos a los que el escalado automático pueda escalar la cantidad de pods de CoreDNS.

    En el siguiente ejemplo, se muestra que el escalado automático está activado y que todas las claves opcionales tienen valores. Recomendamos que la cantidad mínima de pods de CoreDNS sea siempre superior a 2 para proporcionar resiliencia al servicio DNS del clúster.

    aws eks update-addon --cluster-name my-cluster --addon-name coredns \ --resolve-conflicts PRESERVE --configuration-values '{"autoScaling":{"enabled":true,"minReplicas":2,"maxReplicas":10}}'
  6. Consulte el estado de la actualización del complemento mediante la ejecución del siguiente comando:

    aws eks describe-addon --cluster-name my-cluster --addon-name coredns \

    Si ve esta línea: "status": "ACTIVE", significa que la implementación se ha completado y que el complemento está usando la nueva configuración en todos los pods de CoreDNS. A medida que cambia la cantidad de nodos y los núcleos de CPU de los nodos del clúster, Amazon EKS escala la cantidad de réplicas de la implementación de CoreDNS.