Todos los productos
Search
Centro de documentos

Container Service for Kubernetes:[Cambio de producto] Resolución de problemas de caducidad de tokens de ServiceAccount en Kubernetes 1.22+

Última actualización: Sep 04, 2026

Este tema describe el impacto, los detalles y las soluciones para la caducidad de tokens de ServiceAccount en clústeres con Kubernetes 1.22 o superior. En Kubernetes 1.22 y versiones posteriores, los tokens de ServiceAccount tienen un periodo de validez de un año y el componente kubelet los renueva periódicamente. Sin embargo, si una aplicación usa una versión de client-go anterior a v11.0.0 o v0.15.0, el cliente no recarga automáticamente el token renovado. Esto puede provocar errores de autenticación cuando el token caduca.

Para mejorar la seguridad, Kubernetes 1.21 habilitó de forma predeterminada la función BoundServiceAccountTokenVolume, que impone un tiempo de caducidad para los tokens, implementa un mecanismo de renovación automática e invalida los tokens después de eliminar el Pod asociado. Cuando una aplicación usa client-go v11.0.0, v0.15.0 o superior, kubelet renueva el token periódicamente y el cliente lo recarga desde el volumen montado. Para mantener la compatibilidad con versiones anteriores, Kubernetes proporciona un periodo de gracia de un año durante el cual aún se pueden usar los tokens caducados. No obstante, tras este periodo de gracia, los clientes que usen una versión de client-go anterior a v11.0.0 o v0.15.0 no recargarán el token automáticamente. Cuando el token caduca, se producen los siguientes errores:

# The component log.
Error listing resources error=Unauthorized
# The access log of the Kubernetes API server of the cluster.
"Unable to authenticate the request" err="[invalid bearer token, Token has expired.]"

Reinicie el Pod del componente para forzar a client-go a leer el nuevo token.

Alcance del impacto

Este problema afecta a las aplicaciones que usan una versión de client-go anterior a v11.0.0 o v0.15.0 en clústeres con Kubernetes 1.22 o superior.

Impacto de la caducidad

  • En clústeres con Kubernetes 1.22 o superior, las aplicaciones que usan una versión de client-go anterior a v11.0.0 o v0.15.0 experimentarán fallos de autenticación después de que expire el periodo de gracia de un año, ya que no pueden recargar el token automáticamente.

  • Al actualizar un clúster a Kubernetes 1.22 o posterior, las aplicaciones existentes con versiones de client-go anteriores a v11.0.0 o v0.15.0 dejarán de autenticarse tras un año si no se reinician.

Soluciones

Para aplicaciones que usan complementos de ACK

Los complementos de Container Service for Kubernetes (ACK) incluyen versiones más recientes de client-go. Si su aplicación usa un complemento de ACK, actualícelo para resolver este problema.

  1. Inicie sesión en la consola de ACK. En el panel de navegación izquierdo, haga clic en Clusters.

  2. En la página Clusters, haga clic en el nombre de su clúster. En el panel de navegación izquierdo, haga clic en Components and Add-ons .

  3. En la página Add-ons, localice el componente que desea actualizar y haga clic en Upgrade.

Para otras aplicaciones

Como solución a corto plazo, reinicie el Pod de la aplicación para restaurar el servicio rápidamente. Como solución definitiva, actualice la biblioteca client-go de su aplicación a la versión v11.0.0, v0.15.0 o superior. Esto permite que la aplicación recargue automáticamente el token de ServiceAccount.