En esta página se explica cómo preparar los clústeres para actualizar a la versión 1.25 de GKE. Puede encontrar clientes de API que hagan llamadas a APIs obsoletas eliminadas en la versión 1.25 y actualizar esos clientes para que usen las APIs de GA. Para obtener información más detallada, consulta la guía de migración de APIs obsoletas de Kubernetes.
APIs retiradas en la versión 1.25
La mayoría de las APIs obsoletas de la versión 1.25 de Kubernetes son antiguas APIs beta que han pasado de la fase beta (por ejemplo, v1beta1
) a la de disponibilidad general (por ejemplo, v1
). Las APIs de disponibilidad general ofrecen garantías de compatibilidad a largo plazo y deben usarse en lugar de las APIs beta obsoletas.
Se puede interactuar con todos los objetos de las APIs que han pasado a la versión GA mediante las APIs de GA.
EndpointSlice
La versión beta de la API (discovery.k8s.io/v1beta1
) de EndpointSlice
ya no se ofrece desde la versión 1.25. Esta API se discontinuó en la versión 1.21.
- Migra los manifiestos y los clientes de API para que usen la versión de la API
discovery.k8s.io/v1
. Consulta la siguiente tabla, en la que se describen los cambios significativos de la versión de la API de GA:
Campo Cambiar endpoints[*].topology["kubernetes.io/hostname"]
Usa el valor endpoints[*].nodeName
.endpoints[*].topology["topology.kubernetes.io/zone"]
Usa el valor endpoints[*].zone
.endpoints[*].topology
Se ha sustituido por endpoints[*].deprecatedTopology
, que no se puede escribir en la versión 1.
PodDisruptionBudget
La versión beta de la API (policy/v1beta1
) de PodDisruptionBudget
ya no se ofrece desde la versión 1.25. Esta API se discontinuó en la versión 1.21.
- Migra los manifiestos y los clientes de API para que usen la versión
policy/v1
de la API. Consulta la siguiente tabla, en la que se describen los cambios significativos de la versión de la API de GA:
Campo Cambiar spec.selector
Si se escribe un valor vacío ( {}
) en unpolicy/v1 PodDisruptionBudget
, se seleccionarán todos los pods del espacio de nombres. Si no se define ningún valor, no se seleccionará ningún pod.
CronJob
La versión beta de la API (batch/v1beta1
) de CronJob
ya no se ofrece desde la versión 1.25. Esta API se discontinuó en la versión 1.21. Migra los manifiestos y los clientes de API para que usen la versión batch/v1
de la API.
PodSecurityPolicy
La versión beta de la API (policy/v1beta1
) de PodSecurityPolicy
ya no se ofrece desde la versión 1.25. Esta API se discontinuó en la versión 1.21.
Para obtener más información, consulta la página sobre la discontinuación de PodSecurityPolicy.
RuntimeClass
La versión beta de la API (node.k8s.io/v1beta1
) de RuntimeClass
ya no se ofrece desde la versión 1.25. Esta API se ha retirado en la versión 1.20. Migra los manifiestos y los clientes de API para que usen la versión de la API node.k8s.io/v1
.
Eventos
La versión beta de la API (events.k8s.io/v1beta1
) de Events
ya no se ofrece desde la versión 1.25. Esta API se ha retirado en la versión 1.19.
- Migra los manifiestos y los clientes de API para que usen la versión
v1
o laevents.k8s.io/v1
de la API. Consulta la siguiente tabla, en la que se describen los cambios significativos de la versión de la API de GA:
Campo Cambiar type
Limitado a Normal
yWarning
.involvedObject
Se ha cambiado el nombre a regarding
.action
,reason
,reportingController
yreportingInstance
Ahora, estos campos son obligatorios al crear eventos. firstTimestamp
Se ha cambiado el nombre a deprecatedFirstTimestamp
y ya no se permite en los eventos nuevos. En su lugar, usaeventTime
.lastTimestamp
Se ha cambiado el nombre a deprecatedLastTimestamp
y ya no se permite en los eventos nuevos. En su lugar, usaseries.lastObservedTime
.count
Se ha cambiado el nombre a deprecatedCount
y ya no se permite en los eventos nuevos. En su lugar, usaseries.count
.source.component
Se ha cambiado el nombre a deprecatedSource.component
y ya no se permite en los eventos nuevos. En su lugar, usareportingController
.source.host
Se ha cambiado el nombre a deprecatedSource.host
y ya no se permite en los eventos nuevos. En su lugar, usareportingInstance
.
HorizontalPodAutoscaler
La versión beta de la API (autoscaling/v2beta1
) de HorizontalPodAutoscaler
ya no se ofrece desde la versión 1.25. Esta API se discontinuó en la versión 1.23.
Migra los manifiestos y los clientes de API para que usen la versión autoscaling/v2 HorizontalPodAutoscaler
de la API.
Prepararse para actualizar a la versión 1.25
No es necesario que elimines ni vuelvas a crear ninguno de tus objetos de API. Todos los objetos de API persistentes de las APIs que han pasado a estar disponibles de forma general se pueden leer y actualizar con las nuevas versiones de la API.
Sin embargo, te recomendamos que migres tus clientes y manifiestos antes de actualizar a Kubernetes 1.25. Para obtener más información, consulta la guía de migración de APIs obsoletas de Kubernetes.
Puedes consultar estadísticas y recomendaciones sobre las APIs obsoletas para determinar si tu clúster está usando APIs obsoletas de Kubernetes 1.25. GKE genera estadísticas de obsolescencia cuando los agentes de usuario llaman a APIs obsoletas, no a partir de la configuración de tus objetos de Kubernetes.
Buscar clústeres que usen APIs obsoletas
Puedes consultar qué clústeres usan APIs obsoletas en Estadísticas de obsolescencia. Las estadísticas de las APIs obsoletas también proporcionan información, como qué clientes de API llaman a las APIs obsoletas de tu clúster.
También puedes usar los registros de auditoría para saber qué clientes están haciendo llamadas a APIs obsoletas.
Localizar clientes de API que hacen llamadas de escritura a APIs obsoletas
En los clústeres en los que Google Cloud Observability esté habilitado, puedes usar la siguiente consulta del registro de auditoría de actividad de administrador para mostrar el uso de APIs obsoletas por parte de agentes de usuario que no estén gestionados por Google:
resource.type="k8s_cluster"
labels."k8s.io/removed-release"="DEPRECATED_API_MINOR_VERSION"
protoPayload.authenticationInfo.principalEmail:("system:serviceaccount" OR "@")
protoPayload.authenticationInfo.principalEmail!~("system:serviceaccount:kube-system:")
Sustituye DEPRECATED_API_MINOR_VERSION
por la versión secundaria en la que se ha retirado la API obsoleta (por ejemplo, 1.22
).
Los registros de auditoría de actividad de administración se habilitan automáticamente en los clústeres de GKE. Con esta consulta, los registros muestran agentes de usuario que hacen llamadas de escritura a las APIs obsoletas.
Localizar clientes de API que hagan llamadas de lectura a APIs obsoletas
De forma predeterminada, los registros de auditoría solo muestran las llamadas de escritura a las APIs obsoletas. Para mostrar también las llamadas de lectura a APIs obsoletas, configura los registros de auditoría de acceso a datos.
Sigue las instrucciones para configurar registros de auditoría de acceso a datos con la consola Google Cloud . En la Google Cloud consola,
selecciona la API de Kubernetes Engine. En la pestaña Tipos de registro del panel de información, selecciona Admin Read
y Data Read
.
Con estos registros habilitados, ahora puede usar la consulta original para ver tanto las llamadas de lectura como las de escritura a las APIs obsoletas.
Actualizar componentes de terceros
Estadísticas de obsolescencia: puede que se muestren resultados de agentes de terceros que hagan llamadas a APIs obsoletas en tu clúster.
Para resolver el problema de los agentes de terceros que llaman a APIs obsoletas, te recomendamos que sigas estas prácticas recomendadas:
- Ponte en contacto con el proveedor del software de terceros para obtener una versión actualizada.
- Actualiza el software de terceros a la versión más reciente. Si no puedes actualizar el software, debes probar si la actualización de GKE a la versión con las APIs obsoletas eliminadas afectaría a tu servicio.
Te recomendamos que realices esta actualización y la de la versión de GKE en un clúster de staging para monitorizar las interrupciones antes de actualizar tus clústeres de producción.
Actualizar clústeres afectados por las obsolescencias
Para actualizar los clústeres afectados por las obsolescencias, sigue estos pasos:
- Consulta qué user-agents usan las APIs obsoletas en los registros.
- Actualiza los user-agents que usan las APIs obsoletas para que usen versiones de la API compatibles.
- Actualiza a las versiones más recientes el software de terceros que llame a APIs obsoletas.
- Actualiza un clúster de prueba y prueba tu aplicación en un entorno de pruebas antes de actualizar tu clúster de producción para reducir el riesgo de interrupciones cuando las APIs obsoletas ya no estén disponibles.
- Si no puedes actualizar un user-agent afectado, actualiza un clúster de prueba independiente para comprobar si la actualización provoca interrupciones. Si la actualización no provoca interrupciones, puedes actualizar tu clúster manualmente.
- Una vez que hayas actualizado todos los user-agents, GKE esperará hasta que no se haya observado el uso de APIs obsoletas durante 30 días y, a continuación, desbloqueará las actualizaciones automáticas. Las actualizaciones automáticas se realizan según la programación de lanzamientos.
Recursos
Puede consultar más información en la documentación de Kubernetes de software libre:
- Blog de Kubernetes: Kubernetes Removals and Major Changes In 1.25
- Notas de la versión 1.25 de Kubernetes
- Guía de migración de APIs obsoletas de Kubernetes