Ayude a mejorar esta página
Para contribuir a esta guía del usuario, elija el enlace Edit this page on GitHub que se encuentra en el panel derecho de cada página.
Actualización del clúster existente a la nueva versión de Kubernetes
Cuando hay una nueva versión de Kubernetes disponible en Amazon EKS, puede actualizar el clúster de Amazon EKS a la versión más reciente.
importante
Una vez que actualice un clúster, no podrá cambiarlo a una versión anterior. Antes de actualizar a una nueva versión de Kubernetes, recomendamos que revise la información en eks/latest/userguide/kubernetes-versions.html[Understand the Kubernetes version lifecycle on EKS,type="documentation"] y los pasos de actualización en este tema.
Las nuevas versiones de Kubernetes suelen presentar cambios significativos. Por ende, recomendamos que pruebe el comportamiento de las aplicaciones en la nueva versión de Kubernetes antes de realizar la actualización en los clústeres de producción. Para ello, puede crear un flujo de trabajo de integración continua con el fin de probar el comportamiento de la aplicación antes de pasar a una nueva versión de Kubernetes.
El proceso de actualización consiste en que Amazon EKS lance nodos de servidor de API nuevos con la versión actualizada de Kubernetes para sustituir a los existentes. Amazon EKS lleva a cabo una infraestructura estándar y una comprobación de estado de la disponibilidad del tráfico de red en estos nodos nuevos para verificar que funcionan según lo esperado. Sin embargo, una vez que haya iniciado la actualización del clúster, no podrá pausarla ni detenerla. Si cualquiera de estas comprobaciones falla, Amazon EKS revierte la implementación de la infraestructura y su clúster se mantiene en la versión anterior de Kubernetes. Las aplicaciones en ejecución no se ven afectadas y su clúster nunca queda en un estado no determinista o irrecuperable. Si fuese necesario, Amazon EKS realiza copias de seguridad de forma habitual a todos los clústeres administrados y existe un mecanismo de recuperación de clústeres. Evaluamos y mejoramos de forma constante nuestros procesos de administración de la infraestructura de Kubernetes.
Para actualizar el clúster, Amazon EKS requiere hasta cinco direcciones IP disponibles de las subredes que se especificaron cuando creó el clúster. Amazon EKS crea nuevas interfaces de red elástica de clúster (interfaces de red) en cualquiera de las subredes especificadas. Las interfaces de red se pueden crear en subredes diferentes a las que están las interfaces de red existentes, así que asegúrese de que las reglas del grupo de seguridad permitan la comunicación de clúster necesaria para cualquiera de las subredes que especificó al crear su clúster. Si alguna de las subredes especificadas al crear el clúster no existe, no tiene suficientes direcciones IP disponibles o no tiene reglas de grupo de seguridad que permitan la comunicación del clúster necesaria, la actualización puede tener errores.
Para garantizar que el punto de conexión del servidor de API de su clúster esté siempre accesible, Amazon EKS ofrece un plano de control de Kubernetes y lleva a cabo actualizaciones sucesivas de las instancias del servidor de API durante las operaciones de actualización. Para tener en cuenta los cambios en las direcciones IP de las instancias del servidor de API que admiten su punto de conexión del servidor de API de Kubernetes, debe asegurarse de que los clientes de su servidor de API gestionen las reconexiones de manera eficaz. Versiones recientes de kubectl
y las bibliotecas
nota
Para obtener más información sobre lo que implica una actualización de clúster, consulte Best Practices for Cluster Upgrades en la Guía de prácticas recomendadas de EKS. Este recurso le ayuda a planificar una actualización y a comprender la estrategia de actualización de un clúster.
Consideraciones para el modo automático de Amazon EKS
-
La capacidad de computación del modo automático de Amazon EKS controla la versión de Kubernetes de los nodos. Después de actualizar el plano de control, el modo automático de EKS comenzará a actualizar de forma incremental los nodos administrados. El modo automático de EKS respeta los presupuestos de interrupción de pods.
-
No es necesario actualizar manualmente las capacidades del modo automático de Amazon EKS, incluidas las capacidades de escalado automático de computación, almacenamiento en bloque y equilibrio de carga.
Resumen
A continuación, se ofrece un resumen general del proceso de la actualización del clúster de Amazon EKS:
-
Asegúrese de que el clúster tenga un estado que se pueda actualizar. Esto incluye comprobar las API de Kubernetes que utilizan los recursos implementados en el clúster, a fin de garantizar que el clúster no presente ningún problema de estado. Debe utilizar la información sobre actualizaciones de Amazon EKS al evaluar si su clúster está preparado para la actualización.
-
Actualice el plano de control a la siguiente versión secundaria (por ejemplo, de la 1.32 a la 1.33).
-
Actualice los nodos del plano de datos para que coincidan con los del plano de control.
-
Actualice cualquier aplicación adicional que se ejecute en el clúster (por ejemplo,
cluster-autoscaler
). -
Actualice los complementos proporcionados por Amazon EKS, como los que se incluyen de forma predeterminada:
-
Actualice todos los clientes que se comuniquen con el clúster (por ejemplo,
kubectl
).
Paso 1: preparación para la actualización
Compare la versión de Kubernetes de su plano de control de clúster con la versión de Kubernetes de sus nodos.
-
Obtenga la versión de Kubernetes del plano de control de clúster.
kubectl version
-
Obtenga la versión de Kubernetes de sus nodos. Este comando devuelve todos los nodos autoadministrados y administrados de Amazon EC2, Fargate e híbridos. Cada pod de Fargate aparece como su propio nodo.
kubectl get nodes
Antes de actualizar un plano de control a una nueva versión de Kubernetes, asegúrese de que la versión secundaria de Kubernetes de ambos notos administrados y de Fargate en el clúster debe ser la misma que la de la versión actual del plano de control. Por ejemplo, si el plano de control se ejecuta con la versión 1.29
y uno de los nodos con la versión 1.28
, debe actualizar los nodos a la versión 1.29
antes de actualizar el plano de control a la 1.30. Además, recomendamos actualizar los nodos autoadministrados y los nodos híbridos a la misma versión que el plano de control antes de actualizar el plano de control. Para obtener más información, consulte Actualización de un grupo de nodos administrados para un clúster, Actualización de los nodos autoadministrados para un clúster y Actualización de nodos híbridos para el clúster. Si tiene nodos de Fargate con una versión secundaria inferior a la versión del plano de control, elimine primero el pod que representa el nodo. Luego, actualice su plano de control. Los pods restantes se actualizarán a la nueva versión después de volver a implementarlos.
Paso 2: revisión de las consideraciones de actualización
La información proporcionada por el clúster de Amazon EKS analiza automáticamente los clústeres en función de una lista de posibles problemas que afectan a la actualización de la versión de Kubernetes, como el uso obsoleto de la API de Kubernetes. Amazon EKS actualiza periódicamente la lista de comprobaciones de información que se deben realizar en función de las evaluaciones de los cambios en el proyecto de Kubernetes. Amazon EKS también actualiza la lista de verificación de información a medida que se introducen cambios en el servicio Amazon EKS junto con las nuevas versiones. Para obtener más información, consulte Preparación para las actualizaciones de las versiones de Kubernetes y solución de problemas de configuración incorrecta con información sobre clústeres.
Consulte Deprecated API Migration Guide
Revisión de la información sobre actualizaciones
Utilice la información sobre actualizaciones de Amazon EKS para identificar problemas. Para obtener más información, consulte Consulta de la información de actualización (consola).
Consideraciones detalladas
-
Puesto que Amazon EKS ejecuta un plano de control de alta disponibilidad, puede actualizar solo una versión secundaria a la vez. Para obtener más información acerca de este requisito, consulte Política de compatibilidad de versiones y diferencia de versiones de Kubernetes
. Supongamos que la versión del clúster actual es la 1.28
y quiere actualizarla a la1.30
. Primero debe actualizar su clúster de versión1.28
a la versión1.29
y, a continuación, actualizar su clúster de versión1.29
a la versión1.30
. -
Revise la compatibilidad de versiones entre
kube-apiserver
de Kubernetes y elkubelet
en sus nodos.-
A partir de la versión de Kubernetes
1.28
, enkubelet
puede haber hasta tres versiones secundarias anteriores akube-apiserver
. Consulte Política de compatibilidad de escalado entre versiones de Kubernetes. -
Si el
kubelet
de sus nodos administrados y de Fargate corresponde a la versión de Kubernetes1.25
o una más reciente, puede actualizar su clúster hasta tres versiones más avanzadas sin necesidad de actualizar la versión dekubelet
. Por ejemplo, sikubelet
está en la versión1.25
, puede actualizar la versión del clúster de Amazon EKS de1.25
a1.26
a1.27
y a1.28
, mientras quekubelet
permanezca en la versión1.25
.
-
-
Como práctica recomendada antes de iniciar una actualización, asegúrese de que el
kubelet
de sus nodos esté en la misma versión de Kubernetes que la de su plano de control. -
Si el clúster está configurado con una versión del complemento CNI de Amazon VPC para Kubernetes anterior a la
1.8.0
, le recomendamos actualizar el complemento a la versión más reciente antes de actualizar el clúster. Para actualizar el complemento, consulte Asignación de direcciones IP a pods con CNI de Amazon VPC.
Paso 3: actualización del plano de control del clúster
importante
Amazon EKS ha revertido temporalmente una característica que obligaba a utilizar una marca --force
para actualizar el clúster cuando se producían determinados problemas de conocimiento del clúster. Para obtener más información, consulte Temporary rollback of enforcing upgrade insights on update cluster version
Amazon EKS actualiza la información de un clúster 24 horas después de la “hora de la última actualización”. Puede comparar la hora en que se ha abordado un problema con la “hora de la última actualización” de la información del clúster.
Además, el estado de la información puede tardar hasta 30 días en actualizarse después de abordar el uso obsoleto de la API. La información sobre actualizaciones siempre busca el uso obsoleto de la API durante un periodo continuo de 30 días.
Puede enviar la solicitud para actualizar la versión de su plano de control de Amazon EKS mediante:
Actualizar clúster: eksctl
En este procedimiento, se requiere la versión 0.210.0
o posterior de eksctl
. Puede verificar la versión con el siguiente comando:
eksctl version
Para obtener instrucciones sobre cómo instalar y actualizar eksctl
, consulte Instalacióneksctl
.
Actualice la versión de Kubernetes de su plano de control de Amazon EKS. Reemplace <cluster-name>
por el nombre del clúster. Reemplace <version-number>
por el número de versión compatible con Amazon EKS al que desea actualizar el clúster. Para obtener una lista de los números de versión compatibles, consulte eks/latest/userguide/kubernetes-versions.html[Amazon EKS supported versions,type="documentation"].
eksctl upgrade cluster --name <cluster-name> --version <version-number> --approve
La actualización puede tardar varios minutos en completarse.
Siga en Paso 4: actualización de los componentes del clúster.
Actualizar clúster: consola de AWS
-
Abra la consola de Amazon EKS
. -
Seleccione Actualizar ahora para el clúster que desee actualizar.
-
Seleccione la versión a la que desea actualizar el clúster y elija Actualizar.
-
La actualización puede tardar varios minutos en completarse. Siga en Paso 4: actualización de los componentes del clúster.
Actualizar clúster: AWS CLI
-
Compruebe que la CLI de AWS esté instalada y que haya iniciado sesión. Para obtener más información, consulte Instalación o actualización de la versión más reciente de la CLI de AWS.
-
Actualice el clúster de Amazon EKS con el siguiente comando de la AWS CLI. Reemplace
<cluster-name>
y<region-code>
del clúster que desee actualizar. Reemplace<version-number>
por el número de versión compatible con Amazon EKS al que desea actualizar el clúster. Para obtener una lista de los números de versión compatibles, consulte eks/latest/userguide/kubernetes-versions.html[Amazon EKS supported versions,type="documentation"].aws eks update-cluster-version --name <cluster-name> \ --kubernetes-version <verion-number> --region <region-code>
Un ejemplo de salida sería el siguiente.
{ "update": { "id": "<update-id>", "status": "InProgress", "type": "VersionUpdate", "params": [ { "type": "Version", "value": "<version-number>" }, { "type": "PlatformVersion", "value": "eks.1" } ], [...] "errors": [] }
-
La actualización puede tardar varios minutos en completarse. Monitoree el estado de la actualización del clúster con el siguiente comando. Además de usar el mismo
<cluster-name>
y<region-code>
, use el<update-id>
que devolvió el comando anterior.aws eks describe-update --name <cluster-name> \ --region <region-code> --update-id <update-id>
Cuando se muestra el estado
Successful
, la actualización se ha completado. -
Siga en Paso 4: actualización de los componentes del clúster.
Paso 4: actualización de los componentes del clúster
-
Una vez que se complete la actualización del clúster, actualice los nodos a la misma versión secundaria de Kubernetes de su clúster actualizado. Para obtener más información, consulte Actualización de los nodos autoadministrados para un clúster, Actualización de un grupo de nodos administrados para un clúster y Actualización de nodos híbridos para el clúster. Los pods nuevos que se lancen en Fargate tienen una versión de
kubelet
que coinciden con la versión del clúster. Los pods de Fargate existentes no cambian. -
(Opcional) Si implementó el Cluster Autoscaler de Kubernetes en el clúster antes de actualizar este último, actualice dicho Cluster Autoscaler a la versión más reciente que coincida con la versión principal y secundaria de Kubernetes a las que actualizó.
-
Abra la página de versiones
del Escalador automático de clústeres en un navegador web y busque la versión más reciente del Escalador automático de clústeres que coincida con la versión principal y secundaria de Kubernetes de su clúster. Por ejemplo, si la versión de Kubernetes del clúster es 1.30
, busque la última versión del escalador automático del clúster que comience por1.30
. Registre el número de versión semántica (1.30.n
, por ejemplo) de esa versión para usarlo en el siguiente paso. -
Establezca la etiqueta de la imagen del Escalador automático de clústeres en la versión que ha registrado en el paso anterior con el siguiente comando. Si es necesario, reemplace
X.XX.X
por su propio valor.kubectl -n kube-system set image deployment.apps/cluster-autoscaler cluster-autoscaler=registry.k8s.io/autoscaling/cluster-autoscaler:vX.XX.X
-
-
(Solo para clústeres con nodos de GPU) Si el clúster tiene grupos de nodos compatibles con GPU (por ejemplo,
p3.2xlarge
), debe actualizar el DaemonSet del complemento del dispositivo NVIDIA para Kubernetesde su clúster. Reemplace <vX.X.X>
con la versión Plugin de dispositivo NVidia/K8Sdeseada antes de ejecutar el siguiente comando. kubectl apply -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/<vX.X.X>/deployments/static/nvidia-device-plugin.yml
-
Actualice los complementos CNI de Amazon VPC para Kubernetes, CoreDNS y
kube-proxy
. Recomendamos actualizar los complementos a las versiones mínimas que figuran en los tokens de las cuentas de servicio.-
Si está usando complementos de Amazon EKS, seleccione Clústeres en la consola de Amazon EKS y, a continuación, seleccione el nombre del clúster que actualizó en el panel de navegación izquierdo. Las notificaciones aparecen en la consola. Le informan que hay una versión nueva disponible para cada complemento que tenga una actualización disponible. Para actualizar un complemento, seleccione la pestaña Complementos. En uno de los cuadros de un complemento que tenga una actualización disponible, seleccione Actualizar ahora, seleccione una versión disponible y, a continuación, seleccione Actualizar.
-
Como alternativa, puede utilizar la AWS CLI o
eksctl
para actualizar los complementos. Para obtener más información, consulte Actualización de un complemento de Amazon EKS.
-
-
De ser necesario, actualice su versión de
kubectl
. Debe utilizar una versión dekubectl
con una diferencia de versión de menos de un número que el plano del control del clúster de Amazon EKS.
Actualización a una versión anterior de Kubernetes en un clúster de Amazon EKS
No puede actualizar a una versión anterior de Kubernetes en un clúster de Amazon EKS. En su lugar, cree un clúster nuevo en una versión anterior de Amazon EKS y migre las cargas de trabajo.