APIs obsoletas de Kubernetes 1.25


En esta página, se explica cómo preparar clústeres para las actualizaciones a la versión 1.25 de GKE. Puedes encontrar clientes de API que realizan llamadas a APIs obsoletas quitadas en la versión 1.25 y actualizar esos clientes para usar las APIs de DG. Para obtener información más detallada, consulta la Guía de migración de la API obsoleta de Kubernetes.

APIs eliminadas en la versión 1.25

La mayoría de las API obsoletas de la versión 1.25 de Kubernetes son APIs que antes estaban en versión Beta (por ejemplo, v1beta1) y de DG (por ejemplo, v1). Las APIs de DG proporcionan garantías de compatibilidad a largo plazo y deben usarse en lugar de las APIs Beta obsoletas.

Todos los objetos existentes para las APIs que se pasaron a Google Analytics pueden interactuar mediante las API de DG.

EndpointSlice

La versión Beta de la API (discovery.k8s.io/v1beta1) de EndpointSlice ya no se entrega a partir de la versión 1.25. Esta API dejó de estar disponible en la versión 1.21.

  • Migra los manifiestos y los clientes de la API para usar la versión de la API de discovery.k8s.io/v1.
  • Consulta la siguiente tabla que describe los cambios notables en la versión de la API de DG:

    Campo Cambiar
    endpoints[*].topology["kubernetes.io/hostname"] Usa endpoints[*].nodeName.
    endpoints[*].topology["topology.kubernetes.io/zone"] Usa endpoints[*].zone.
    endpoints[*].topology Se reemplazó por endpoints[*].deprecatedTopology, que no se puede escribir en la v1.

PodDisruptionBudget

La versión beta de la API (policy/v1beta1) de PodDisruptionBudget ya no se entrega a partir de la versión 1.25. Esta API dejó de estar disponible en la versión 1.21.

  • Migra los manifiestos y los clientes de la API para usar la versión de la API de policy/v1.
  • Consulta la siguiente tabla que describe los cambios notables en la versión de la API de DG:

    Campo Cambiar
    spec.selector Un valor vacío ({}) escrito en un policy/v1 PodDisruptionBudget selecciona todos los Pods en el espacio de nombres. Un valor sin configurar aún no selecciona ningún Pod.

CronJob

La versión beta de la API (batch/v1beta1) de CronJob ya no se entrega a partir de la versión 1.25. Esta API dejó de estar disponible en la versión 1.21. Migra los manifiestos y los clientes de la API para usar la versión de la API de batch/v1.

PodSecurityPolicy

La versión beta de la API (policy/v1beta1) de PodSecurityPolicy ya no se entrega a partir de la versión 1.25. Esta API dejó de estar disponible en la versión 1.21.

Para obtener más información, consulta Baja de PodSecurityPolicy.

RuntimeClass

La versión beta de la API (node.k8s.io/v1beta1) de RuntimeClass ya no se entrega a partir de la versión 1.25. Esta API dejó de estar disponible en la versión 1.20. Migra los manifiestos y los clientes de la API para usar la versión de la API de node.k8s.io/v1.

Eventos

La versión beta de la API (events.k8s.io/v1beta1) de Events ya no se entrega a partir de la versión 1.25. Esta API dejó de estar disponible en la versión 1.19.

  • Migra los manifiestos y los clientes de la API para usar la versión de la API v1 o la versión de la API events.k8s.io/v1.
  • Consulta la siguiente tabla que describe los cambios notables en la versión de la API de DG:

    Campo Cambiar
    type Limitado a Normal y Warning.
    involvedObject Se cambió el nombre a regarding.
    action, reason, reportingController y reportingInstance Estos campos ahora son obligatorios cuando se crean eventos.
    firstTimestamp Se cambió el nombre a deprecatedFirstTimestamp y ya no se permite en los nuevos eventos. Utiliza eventTime en lugar de esta función.
    lastTimestamp Se cambió el nombre a deprecatedLastTimestamp y ya no se permite en los nuevos eventos. Utiliza series.lastObservedTime en lugar de esta función.
    count Se cambió el nombre a deprecatedCount y ya no se permite en los nuevos eventos. Utiliza series.count en lugar de esta función.
    source.component Se cambió el nombre a deprecatedSource.component y ya no se permite en los nuevos eventos. Utiliza reportingController en lugar de esta función.
    source.host Se cambió el nombre a deprecatedSource.host y ya no se permite en los nuevos eventos. Utiliza reportingInstance en lugar de esta función.

HorizontalPodAutoscaler

La versión beta de la API (autoscaling/v2beta1) de HorizontalPodAutoscaler ya no se entrega a partir de la versión 1.25. Esta API dejó de estar disponible en la versión 1.23. Migra los manifiestos y los clientes de la API para usar la versión de la API de autoscaling/v2 HorizontalPodAutoscaler.

Prepárate para actualizar a la versión 1.25

No es necesario que borres ni vuelvas a crear ningún objeto de la API. Todos los objetos de la API persistentes existentes para las APIs que pasaron a la etapa de disponibilidad general ya pueden leerse y actualizarse con las nuevas versiones de API.

Sin embargo, te recomendamos que migres a 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 las APIs obsoletas de Kubernetes.

Puedes ver estadísticas y recomendaciones de baja para determinar si tu clúster usa las APIs obsoletas de Kubernetes 1.25. GKE genera estadísticas de baja cuando los usuarios-agentes llaman a las APIs obsoletas, no a partir de la configuración de tus objetos de Kubernetes.

Busca clústeres con APIs obsoletas

Puedes encontrar los clústeres que usan las APIs obsoletas en las estadísticas de baja. Las estadísticas de baja también proporcionan información como qué clientes de API llaman a las API obsoletas en tu clúster.

También puedes usar los registros de auditoría para encontrar qué clientes realizan llamadas a las APIs obsoletas.

Ubica los clientes de API que realizan llamadas de escritura a las APIs obsoletas

Para los clústeres con Google Cloud Observability habilitada, puedes usar la siguiente consulta del Registro de actividad del administrador a fin de mostrar el uso de APIs obsoletas por parte de los usuarios-agentes que no son administrados 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:")

Reemplaza DEPRECATED_API_MINOR_VERSION por la versión secundaria en la que se quita la API obsoleta, por ejemplo, 1.22.

Los registros de auditoría de actividad del administrador se habilitan de forma automática para los clústeres de GKE. Con esta consulta, los registros muestran a los usuarios-agentes que realizan llamadas de escritura a las APIs obsoletas.

Ubica los clientes de API que realizan llamadas de lectura a las APIs obsoletas

De forma predeterminada, los registros de auditoría muestran solo las llamadas de escritura a las APIs obsoletas. Para mostrar también llamadas de lectura a las APIs obsoletas, configura los registros de auditoría de acceso a los datos.

Sigue las instrucciones para configurar registros de auditoría de acceso a los datos con la consola de Google Cloud. En la consola de Google Cloud, selecciona la API de Kubernetes Engine. En la pestaña Tipos de registro en el panel de información, selecciona Admin Read y Data Read.

Con estos registros habilitados, ahora puedes usar la consulta original para ver las llamadas de lectura y de escritura en las APIs obsoletas.

Actualiza componentes de terceros

Es posible que las estadísticas de baja muestren resultados para agentes de terceros que realizan llamadas a las APIs obsoletas en el clúster.

Para resolver los agentes de terceros que llaman a las APIs obsoletas, sugerimos las siguientes prácticas recomendadas:

  1. Comunícate con tu proveedor de software de terceros para obtener una versión actualizada.
  2. Actualiza el software de terceros a la versión más reciente Si no puedes actualizar el software, debes probar si actualizar GKE a la versión con las APIs obsoletas eliminadas interrumpiría tu servicio.

Recomendamos que realices esta actualización y la actualización de la versión de GKE en un clúster de etapa de pruebas para supervisar las interrupciones antes de actualizar los clústeres de producción.

Actualiza los clústeres afectados por las bajas

Para actualizar los clústeres afectados por las bajas, sigue estos pasos:

  1. Verifica qué usuarios-agentes usan las APIs obsoletas en los registros.
  2. Actualiza los usuarios-agentes que usan las APIs obsoletas para que usen versiones compatibles de las APIs.
  3. Actualiza cualquier software de terceros que llame a las APIs obsoletas a las versiones más recientes.
  4. Actualiza un clúster de prueba y prueba tu aplicación en un entorno de pruebas antes de actualizar el clúster de producción para reducir el riesgo de interrupciones cuando las APIs obsoletas ya no estén disponibles.
  5. Si no puedes actualizar un usuario-agente afectado, actualiza un clúster de prueba separado para verificar si la actualización causa interrupciones. Si la actualización no produce interrupciones, puedes actualizar el clúster de forma manual.
  6. Después de actualizar todos los usuarios-agentes, GKE espera hasta que ya no haya observado el uso de las APIs obsoletas durante 30 días y, luego, desbloquea las actualizaciones automáticas. Las actualizaciones automáticas continúan según el programa de lanzamientos.

Recursos

Puedes encontrar más información en la documentación de Kubernetes de OSS: