View a markdown version of this page

Mejores prácticas para la reversión de versiones de clústeres - Amazon EKS

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.

Mejores prácticas para la reversión de versiones de clústeres

Con la reversión de la versión de Amazon Elastic Kubernetes Service (Amazon EKS), puede revertir el plano de control de Kubernetes del clúster a la versión secundaria anterior en un plazo de 7 días a partir de la actualización local. En esta página se describen las prácticas recomendadas para planificar, ejecutar y poner en funcionamiento la reversión como parte del flujo de trabajo de actualización.

Para obtener detalles sobre los requisitos previos, los procedimientos paso a paso y una referencia de la API, consulta Cómo restaurar el clúster a la versión anterior de Kubernetes.

Comprenda cómo se aplica el modelo de responsabilidad compartida a la reversión

Al iniciar una reversión de una versión de clúster, Amazon EKS gestiona la reversión del plano de control. Usted es responsable del plano de datos, los complementos y la compatibilidad de las aplicaciones. A continuación se describen las responsabilidades:

  • Amazon EKS gestiona: deshacer los componentes del plano de control y el servidor de API de Kubernetes. En el caso de los clústeres en modo automático, Amazon EKS también gestiona la reversión de los nodos de trabajo.

  • Usted es responsable de: deshacer los grupos de nodos gestionados, los nodos autogestionados y los nodos híbridos. También debes validar la compatibilidad de los complementos y asegurarte de que tus aplicaciones, controladores personalizados y herramientas de terceros funcionen correctamente con la versión anterior.

Para obtener más información sobre el modelo de responsabilidad compartida para las actualizaciones, consulte Comprender cómo se aplica el modelo de responsabilidad compartida a las actualizaciones de clústeres.

Planifique las actualizaciones teniendo en cuenta la reversión

La reversión de versiones funciona mejor cuando el flujo de trabajo de actualización está diseñado para mantener abierta la ventana de reversión.

  • Actualizaciones independientes del plano de control y del plano de datos (clústeres que no están en modo automático). En el caso de los clústeres que utilizan grupos de nodos administrados o nodos autogestionados, considera actualizar primero el plano de control y permitir un período de inactividad antes de actualizar los nodos de trabajo. Mientras los nodos permanecen activados N-1, la información sesgada de la versión de kubelet permanece en estado pasajero. Esto mantiene despejada la ruta de reversión sin necesidad de deshacer primero los nodos.

  • Actualice los complementos a versiones compatibles entre sí. Antes de actualizar el plano de control, asegúrese de que todos los complementos (administrados y autogestionados) sean compatibles con las versiones actuales y de destino de Kubernetes. De este modo, la información sobre la compatibilidad de los complementos es clara tanto para la actualización como para la reversión.

    • Utilice los complementos gestionados de Amazon EKS para aprovechar la información sobre la preparación para la reversión, que comprueba automáticamente la compatibilidad de las versiones de los complementos.

    • Evite la autoadministración de un complemento administrado (por ejemplo, anular la versión fuera del ciclo de vida del complemento de EKS). Durante la reversión, Insights considera que la configuración del complemento gestionado es la fuente de la verdad y no detectará ningún cambio de versión que hayas introducido.

  • Evita usar API específicas para cada versión durante el período de preparación. Si creas recursos que usan API o funciones disponibles solo en la nueva versión durante el período de 7 días, debes eliminarlos antes de revertirlos. Limite la adopción de API exclusivas para la nueva versión hasta que esté seguro de que la actualización es estable.

  • Actualice lo antes posible, no más tarde. Con la reversión disponible, puede actualizar con confianza poco después del lanzamiento de una nueva versión en lugar de esperar a que se amplíen los plazos de soporte. La actualización anterior le da más tiempo para validarla y reduce los cargos por soporte extendido.

  • Tenga en cuenta las restricciones de anulación del soporte extendido. Si el clúster se actualizó automáticamente al finalizar el soporte extendido, no podrás volver a la versión anterior. Si se actualizó automáticamente al finalizar el soporte estándar, puede revertirlo, pero primero debe cambiar la política de actualización aEXTENDED.

Para obtener información general sobre la planificación de las actualizaciones, incluidas las políticas de obsolescencia, las notas de la versión y la compatibilidad de los complementos, consulta las prácticas recomendadas para las actualizaciones de clústeres.

Revise la información sobre la preparación para la reversión antes de revertirla

Amazon EKS muestra información puntual sobre la preparación para la reversión en la ROLLBACK_READINESS categoría Perspectivas sobre clústeres. Estas comprobaciones son su herramienta principal para evaluar la seguridad de la reversión.

  • Revise la información inmediatamente después de la actualización. No esperes a que algo vaya mal. Después de la actualización, comprueba las estadísticas de preparación para la reversión para conocer tu postura actual.

  • Aborde la información sobre los errores de forma proactiva. Si la información muestra el estado de ERROR poco después de una actualización, resuélvala cuanto antes mientras el plazo de 7 días siga abierto. Cuanto más espere, es más probable que el estado de su clúster difiera y aparezcan nuevos bloqueadores.

  • Entiende lo que la información abarca y lo que no cubre. Las estadísticas comprueban las versiones de los complementos gestionados por Amazon EKS, el uso de las API, el sesgo de versiones y el estado de los clústeres. No comprueban los complementos autogestionados, los controladores personalizados ni la compatibilidad a nivel de aplicación. Mantén tu propia validación de compatibilidad para los complementos autogestionados (por ejemplo, el escalador automático de clústeres, los controladores de ingreso, los operadores personalizados y los agentes de supervisión).

Para ver la lista completa de las comprobaciones de información y el comportamiento del estado, consulta Revertir un clúster a la versión anterior de Kubernetes.

Prepara los nodos que no estén en modo automático para la reversión

En el caso de los clústeres que utilizan grupos de nodos gestionados, nodos autogestionados o AWS Fargate, es responsable de garantizar que los nodos de trabajo sean compatibles con la versión de reversión de destino.

  • Grupos de nodos administrados. Debes revertir los grupos de nodos administrados a la versión anterior antes de revertir el plano de control. Usa la UpdateNodegroupVersion operación con la versión anterior de Kubernetes. La reversión respeta los ajustes de actualización configurados (maxUnavailablela estrategia de actualización).

  • Self-managed y nodos híbridos. Actualice las AMI o configuraciones de sus nodos para usar la versión anterior de Kubernetes antes de revertir el plano de control.

  • Fargate. La reversión de versiones no es compatible con los nodos de trabajo de Fargate. Elimine los pods de Fargate que ejecuten la misma versión que el plano de control antes de iniciar la reversión, o utilícelos --force para evitar el sesgo de la versión (lo que puede provocar un comportamiento inesperado hasta que se reemplacen los pods).

Para obtener información sobre la configuración de la distribución de la topología PodDisruptionBudget y garantizar la disponibilidad de la carga de trabajo durante las actualizaciones de los nodos, consulta las prácticas recomendadas para las actualizaciones de clústeres.

Gestione los controles de interrupción del modo automático de Amazon EKS para su reversión

En el caso de los clústeres que utilizan el modo automático de Amazon EKS, la fase de reversión de los nodos puede ser la parte más larga de la operación. Sus controles de interrupción determinan directamente la rapidez con la que se completa la reversión.

  • Revise los presupuestos de disrupción antes de iniciar la reversión. Amazon EKS proporciona información sobre la preparación para la reversión para los presupuestos de NodePool disrupción. Los presupuestos configurados en 0 generan un error, que bloquea la reversión de forma indefinida. Los presupuestos y los PodDisruptionBudgets PDB restrictivos generan información de ADVERTENCIA, que puede retrasar la reversión, pero permitir el progreso. Aborde los errores antes de iniciar la reversión.

  • Prepárate para ajustar los presupuestos durante la reversión. Si la reversión tarda más de lo esperado, puede ajustar los presupuestos de NodePool disrupción y los PDB kubectl mientras la reversión esté en curso. Aumentar el presupuesto permite más reemplazos simultáneos de nodos.

  • Elimine las anotaciones que no interrumpan de los nodos de bloqueo. La karpenter.sh/do-not-disrupt anotación en los nodos bloquea la reversión indefinidamente. Elimínelo de los nodos que se deben reemplazar.

  • Realice un seguimiento del progreso de la reversión de los nodos. Se utiliza kubectl get nodes -l karpenter.sh/nodepool=<nodepool-name> -o wide para supervisar qué nodos se han reemplazado por la AMI de la versión anterior.

  • Úselo CancelUpdate si es necesario. Si la reversión tarda demasiado o causa más problemas de los que resuelve, cancele la reversión. Tras la cancelación, los nodos vuelven a la versión actual y puedes adoptar un enfoque diferente.

  • Establece un tiempo de espera adecuado. Utilice el timeoutMinutes parámetro rollbackConfig para alinearlo con sus expectativas operativas. El valor predeterminado es de 720 minutos (12 horas). Para los clústeres con presupuestos conservadores, considera la posibilidad de aumentarlo. En el caso de IaC-managed los clústeres, alinéalo con el tiempo de espera de la herramienta.

Para ver los procedimientos completos de reversión del modo automático y la CancelUpdate operación, consulte Reversión de los clústeres del modo automático de Amazon EKS.

Supervise el progreso de la reversión

Durante una reversión, utilice lo siguiente para realizar un seguimiento del estado y detectar problemas:

  • DescribeUpdate operación. Se utiliza describe-update para comprobar el estado actual de la operación de reversión (InProgress,, SuccessfulFailed,Cancelled). Para realizar un seguimiento del progreso de la cancelación, compruebe el cancellation objeto de la respuesta.

  • Información sobre el clúster. Amazon EKS vuelve a comprobar la información antes de continuar con la reversión del plano de control (una vez finalizada la reversión de los nodos para el modo automático). Supervise los nuevos errores que puedan haber aparecido.

  • Estado del clúster. En el caso de los clústeres en modo automático, el estado del clúster permanece ACTIVE durante la reversión de los nodos y cambia a UPDATING solo durante la reversión del plano de control. No te fíes únicamente del estado del clúster para saber si hay una reversión en curso: úsalo. DescribeUpdate

  • Versiones de nodos. Para el modo automático, comprueba las versiones de Kubernetes de los nodos para realizar un seguimiento del progreso del reemplazo de nodos. En el caso de los grupos de nodos gestionados, supervisa el estado de actualización de los grupos de nodos.

Gestione la infraestructura como clústeres gestionados por código (IaC)

Las herramientas de infraestructura como código (IaC) tienen limitaciones de tiempo de espera que pueden entrar en conflicto con la duración de la reversión del modo automático.

  • AWS CloudFormation admite hasta 36 horas por recurso. Si la reversión supera este límite, CloudFormation la considera no operativa, lo que puede dejar al clúster en un estado de deriva en el que la plantilla no refleja la versión real del clúster. El tiempo de espera de reversión predeterminado es de 720 minutos (12 horas).

  • Terraform Enterprise/Cloud tiene tiempos de espera de aproximadamente 24 horas, aunque los tiempos de espera del lado del cliente varían.

  • timeoutMinutesAlinéelo con el tiempo de espera de la herramienta iAC para evitar que se agote el tiempo de espera antes de que Amazon EKS complete la reversión.

  • Considere la posibilidad de iniciar la reversión CLI/API para los clústeres en modo automático con presupuestos restrictivos, en lugar de hacerlo mediante IaC. CancelUpdateUtilízalo directamente si se agota el tiempo de espera de la capa iAC.

  • La reversión de AWS CloudFormation Stack no activa la reversión de la versión. Si se produce un error en la actualización de una CloudFormation pila de AWS, la reversión automática de la pila a una versión anterior de la plantilla no inicia una reversión de la versión del clúster. Debe iniciar de forma explícita una reversión de la versión.

Utilice la reversión como una red de seguridad, no como un flujo de trabajo rutinario

La reversión de versiones está diseñada para ayudarlo a recuperarse de los problemas posteriores a la actualización. Funciona mejor cuando se combina con sus prácticas de actualización actuales.

  • La reversión complementa las pruebas, no las reemplaza. Siga utilizando la información sobre clústeres, las pruebas previas a la actualización en entornos que no son de producción y las implementaciones por etapas. La reversión se ocupa de los casos que las pruebas no pueden detectar, es decir, los problemas que solo surgen en la producción.

  • La reversión reduce la necesidad de utilizar procedimientos manuales de copia de seguridad e instantáneas como mecanismo de seguridad principal. Con la reversión nativa disponible, ya no es necesario confiar únicamente en las instantáneas de etcd o en los scripts de reversión personalizados para la recuperación ante desastres durante las actualizaciones.

  • Los conocimientos son el máximo esfuerzo y son puntuales. Amazon EKS los evalúa cuando se activa la reversión. Los cambios realizados después de esa comprobación (por ejemplo, la creación de recursos con nuevas API) no se capturan y pueden provocar problemas una vez finalizada la reversión.

  • La reversión no garantiza la recuperación de las aplicaciones. Amazon EKS revierte el plano de control de forma segura, pero es su responsabilidad validarlas con respecto a la versión anterior de sus aplicaciones, configuraciones y dependencias.

La reversión reduce la necesidad de actualizaciones de color azul y verde

Las organizaciones que anteriormente utilizaban las actualizaciones de clústeres azul-verdes principalmente para tener una «ruta de retroceso» ahora pueden considerar la posibilidad de realizar actualizaciones in situ con la reversión de versiones como alternativa. In-place Las actualizaciones con la reversión ofrecen un costo de infraestructura más bajo (sin clústeres duplicados), una identidad de clúster uniforme (el mismo punto final de API, el mismo proveedor de OpenID Connect (OIDC) e interfaces de red elásticas (ENI)) y operaciones más sencillas.

Blue-green puede seguir siendo la opción preferida cuando necesite cambiar varias versiones a la vez, probar exhaustivamente las migraciones de cargas de trabajo o mantener un aislamiento total del tráfico durante la validación. Para obtener más información, consulte Evaluar Blue/Green los clústeres en las prácticas recomendadas sobre las actualizaciones de clústeres.