Problemas conocidos de GKE

En esta página, se enumeran los problemas conocidos de GKE. Esta página está destinada a administradores y arquitectos que administran el ciclo de vida de la infraestructura tecnológica subyacente y responden a alertas y páginas cuando no se cumplen los objetivos de nivel de servicio (SLO) o fallan las aplicaciones.

En esta página, se enumeran los problemas conocidos para todas las versiones compatibles y para las dos versiones secundarias que preceden inmediatamente a la versión más antigua en el soporte extendido. Después de que una versión alcanza el final de la asistencia extendida, se quitan todos los problemas de N-2. Por ejemplo, cuando la versión 1.30 llega al final de la asistencia extendida, se quitan los problemas conocidos específicos de las versiones 1.28 y anteriores.

Si formas parte del Programa para desarrolladores de Google, guarda esta página para recibir notificaciones cuando se publique una nota de la versión relacionada con ella. Para obtener más información, consulta Páginas guardadas.

Para filtrar los problemas conocidos por versión o categoría del producto, selecciona los filtros en los siguientes menús desplegables.

Selecciona tu versión de GKE:

Selecciona la categoría de tu problema:

O bien, busca tu problema:

Categoría Versiones identificadas Versiones corregidas Problema y solución
Operación Versiones 1.33 anteriores a la 1.33.4-gke.1036000 1.33.4-gke.1036000 y versiones posteriores

Nivel de rendimiento incorrecto para las instancias de Lustre aprovisionadas de forma dinámica

Cuando se aprovisiona de forma dinámica una instancia de Lustre, falla la creación de la instancia con un error InvalidArgument para PerUnitStorageThroughput, independientemente del valor de perUnitStorageThroughput especificado en la solicitud de API.

Solución alternativa:

Actualiza el clúster de GKE a la versión 1.33.4-gke.1036000 o posterior. Si usas el canal estable, es posible que aún no esté disponible una versión más reciente. En este caso, puedes seleccionar manualmente una versión de los canales Regular o Rapid que incluya la corrección.

Operación
  • 1.32.3-gke.1099000 y versiones posteriores
  • 1.33
1.33.3-gke.1266000 y versiones posteriores

Error de entrada/salida al cambiar el nombre o mover archivos con el controlador de CSI de Cloud Storage FUSE

Cuando se usa una versión afectada del controlador de CSI de Cloud Storage FUSE, es posible que se produzca un error de E/S al cambiar el nombre o mover archivos en buckets de Cloud Storage.

Solución alternativa:

Agrega temporalmente una definición de imagen de sidecar específica a tu manifiesto del Pod. En la sección spec.containers del manifiesto del Pod, agrega la siguiente definición del contenedor con la imagen: gcr.io/gke-release/gcs-fuse-csi-driver-sidecar-mounter:v1.8.9-gke.2.

    # Add the following block to use the fixed sidecar image
    - name: gke-gcsfuse-sidecar
      image: gcr.io/gke-release/gcs-fuse-csi-driver-sidecar-mounter:v1.8.9-gke.2
    

Para obtener más información, consulta el manifiesto del Pod en Configura una imagen privada para el contenedor del archivo adicional.

Después de actualizar el clúster a una versión fija de GKE o posterior, debes quitar todo el bloque gke-gcsfuse-sidecar de tu manifiesto. Después de quitar este bloqueo, GKE reanudará la inserción y administración automáticas de la imagen de sidecar correcta para la versión actualizada del clúster.

Registro y supervisión Todas las versiones Por definir

Condición de carrera en DaemonSets de gke-metrics-agent

Cuando agregas la etiqueta cloud.google.com/gke-metrics-agent-scaling-level a un grupo de nodos para aumentar de forma manual la asignación de memoria del DaemonSet gke-metrics-agent, se produce una condición de carrera en el DaemonSet durante la creación de nodos nuevos. Esta condición de carrera genera reinicios intermitentes y podría provocar la pérdida de métricas.

Este problema se produce porque hay un retraso antes de que se agregue la etiqueta a un nodo nuevo en el grupo de nodos. Durante este retraso, el DaemonSet crea un Pod con la asignación de memoria original en ese nodo. Después de aplicar la etiqueta, el DaemonSet crea un Pod que tiene la nueva asignación de memoria. El Pod existente no se borra por completo cuando se inicia el Pod actualizado. Ambos Pods intentan vincularse al mismo número de puerto.

Solución alternativa:

Después de agregar la etiqueta cloud.google.com/gke-metrics-agent-scaling-level a un grupo de nodos, reinicia el DaemonSet gke-metrics-agent:

kubectl -n kube-system rollout restart daemonset gke-metrics-agent
Actualizaciones 1.33 1.33.2-gke.1043000

Se redujo el límite de archivos abiertos con containerd 2.0

Para los grupos de nodos que ejecutan la versión 1.33 de GKE, que usa containerd 2.0, el límite flexible predeterminado para los archivos abiertos (ulimit -n) de los contenedores se reduce a 1,024.

Este es un cambio en containerd (consulta la PR #8924 de containerd) en el que se quitó LimitNOFILE de containerd.service como práctica recomendada, lo que hace que se aplique el límite flexible predeterminado del sistema.

Las cargas de trabajo que esperan un límite flexible predeterminado más alto (por ejemplo, las que dependen de forma implícita del límite predeterminado anterior más alto) pueden experimentar fallas, como errores de Too many open files.

Solution:

Actualiza desde una versión de parche anterior de 1.33 a 1.33.2-gke.1043000 o una versión posterior.

Solución alternativa:

Aumenta el límite de archivos abiertos para tus cargas de trabajo con uno de los siguientes métodos:

  • Ajuste a nivel de la aplicación: Modifica el código o la configuración de la aplicación para establecer de forma explícita ulimit -n o prlimit --nofile=524288.
  • Complemento Containerd NRI Ulimit Adjuster Usa el complemento containerd/nri ulimit-adjuster para ajustar el límite de ulimit.
  • Cambia a una versión anterior del grupo de nodos (solo para Standard): En el caso de los clústeres de GKE Standard, puedes cambiar temporalmente a una versión anterior del grupo de nodos a la versión 1.32 para evitar este problema hasta que haya una solución permanente disponible.
Para obtener más información sobre la migración a containerd 2, consulta Migra nodos a containerd 2.
Actualizaciones 1.31.5-gke.1169000 y 1.32.1-gke.1376000 1.31.7-gke.1164000 y 1.32.3-gke.1512000

El campo status.storedVersions de la CRD no es válido para las CRD administradas

Es posible que algunos CRD administrados por GKE tengan un campo status.storedVersions no válido, lo que genera el riesgo de interrumpir el acceso a los objetos CRD después de una actualización.

Este problema afecta a los clústeres que cumplen con las siguientes condiciones:

  • Clústeres que usaron una versión de GKE afectada en algún momento.
  • Clústeres que tenían versiones no compatibles (served=false) de objetos CRD almacenados en etcd.

Solución alternativa:

La solución alternativa recomendada es retrasar las actualizaciones del clúster hasta que se resuelva el problema.

Como alternativa, si sabes que tu clúster contiene versiones no compatibles de objetos CRD, puedes agregar estas versiones al campo status.storedVersions con el comando kubectl patch.

Operación, registro y supervisión 1.32.2-gke.1652000, 1.31.6-gke.1221000, 1.30.10-gke.1227000
  • 1.32.2-gke.1652003 o versiones posteriores
  • 1.31.6-gke.1221001 o versiones posteriores
  • 1.30.10-gke.1227001 o versiones posteriores

Faltan métricas o el escalador automático de cargas de trabajo no ajusta la escala

Es posible que observes vacíos en los datos de las métricas en las versiones afectadas después de que el tamaño del clúster aumente en más de cinco nodos. Este problema también puede afectar las operaciones de ajuste de escala automático.

Este problema solo afecta a los clústeres que se actualizaron a las versiones afectadas. Los clústeres creados recientemente deberían funcionar según lo previsto.

Solución alternativa:

Si te ves afectado, puedes cambiar a una versión anterior del parche o actualizar a las versiones corregidas más recientes.

Operación

Límites de tamaño y conexión de Google Cloud Hyperdisk

Por lo general, un Pod que no se puede programar correctamente debido a los límites de adjuntos de volúmenes de un nodo activa el aprovisionamiento automático de un nodo nuevo. Cuando se programan cargas de trabajo que usan un producto de hiperdisco para un nodo que ejecuta una VM C3, no se produce el aprovisionamiento automático de nodos y el pod se programa en el nodo que ya está completo.

La carga de trabajo se programa en el nodo a pesar de la falta de una conexión de disco disponible. La carga de trabajo tampoco se inicia debido a un error como el siguiente:

 AttachVolume.Attach failed for volume "[VOLUME NAME]" : rpc error: code = InvalidArgument desc = Failed to Attach: failed when waiting for zonal op: rpc error: code = InvalidArgument desc = operation operation-[OPERATION NUMBERS] failed (UNSUPPORTED_OPERATION): Maximum hyperdisk-balanced disks count should be less than or equal to [16], Requested : [17]

El problema está presente en todos los productos de Hyperdisk en máquinas C3.

Los límites de conexión de Hyperdisk varían según la cantidad de CPU virtuales de la VM y el producto de Hyperdisk. Para obtener más información, consulta Límites de rendimiento de Hyperdisk.

Solución alternativa:

Los productos de Hyperdisk activan el aprovisionamiento automático en otras formas de VM. Recomendamos una forma que solo admita Hyperdisk.

Operación 1.32.3-gke.1927000, 1.32.3-gke.1785000, 1.32.3-gke.1717000, 1.32.3-gke.1440000, 1.32.3-gke.1170000, 1.32.3-gke.1250000, 1.32.3-gke.1671000, 1.32.3-gke.1596000, 1.32.3-gke.1298000

gke-metadata-server se cierra por falta de memoria en los nodos de TPU o GPU

En los nodos de TPU de GKE (por ejemplo, ct4p-hightpu-4t) y los nodos de GPU (por ejemplo, a3-highgpu-8g), es posible que el kernel finalice el gke-metadata-server con un OOMKilled cuando el uso de memoria del servidor supere los 100 MB.

Solución alternativa:

Si observas eventos de OOMKilled para gke-metadata-server en nodos de TPU o GPU, comunícate con el equipo de guardia de identidad de GKE (ID de componente: 395450) para conocer las opciones de mitigación.

Operación
  • 1.32.0-gke.1358000 a 1.32.4-gke.1106006, 1.32.4-gke.1236007, 1.32.4-gke.1353001, 1.32.4-gke.1415001, 1.32.4-gke.1533000
  • De 1.33.0-gke.0 a 1.33.0-gke.1552000
  • 1.32.4-gke.1353003 y versiones posteriores
  • 1.33.0-gke.1552000 y versiones posteriores

Es posible que los cambios de tamaño de volúmenes se bloqueen debido al estado NodePendingResize pendiente en los PVC.

Los clústeres de la versión 1.32 que tienen nodos en las versiones 1.31 o anteriores no podrán actualizar el estado de PersistentVolumeClaim durante el cambio de tamaño. Este estado incorrecto impide que comiencen las operaciones de cambio de tamaño posteriores, lo que evita que se realicen más cambios de tamaño.

Un PVC en este estado tiene un campo status.allocatedResourceStatuses que contiene NodePendingResize o ambos campos status.allocatedResources y status.conditions.type: FileSystemResizePending.

Si se creó un PVC mientras el clúster estaba en una versión afectada, es posible que este problema persista después de que el clúster se actualice a una versión corregida conocida. En esta situación, tu PVC debe parchearse para quitar el campo status.allocatedResources con una solución alternativa única.

Solución alternativa:

Las PVC atascadas debido a un estado pendiente se pueden parchear para quitar ese estado. Puedes usar un comando de parche como el siguiente para quitar el estado pendiente:

kubectl patch pvc $PVC_NAME --subresource='status' --type='merge' -p '{"status":{"allocatedResourceStatuses":null}}'
kubectl patch pvc $PVC_NAME --subresource='status' --type='merge' -p '{"status":{"allocatedResources":null}}'
Operación
  • 1.32.4-gke.1236007 y 1.32.4-gke.1353001
  • 1.32.4-gke.1353003 y versiones posteriores

Es posible que el controlador de PDCSI registre datos en exceso

Los clústeres de GKE en versiones específicas de 1.32 pueden emitir mensajes de registro excesivos desde el controlador de PDCSI. Este exceso de registros consumiría la cuota de la API de Cloud Logging Write.

Solución alternativa:

Puedes reducir este registro excesivo agregando un filtro de exclusión. Para excluir los mensajes de registro de la transferencia a Cloud Logging, usa la siguiente consulta:

      resource.type="k8s_container"
      resource.labels.container_name="gce-pd-driver"
      (sourceLocation.file="cache.go" OR "Cannot process volume group")
    
Operaciones
  • 1.27.16-gke.2440000 y versiones posteriores
  • 1.28.15-gke.1673000 y versiones posteriores
  • 1.29.13-gke.1038000 y versiones posteriores
  • 1.30.9 y versiones posteriores
  • 1.31.7 y versiones posteriores
  • 1.32.1-gke.1357001 y versiones posteriores
  • 1.27.16-gke.2691000 y versiones posteriores
  • 1.28.15-gke.2152000 y versiones posteriores
  • 1.29.15-gke.1218000 y versiones posteriores
  • 1.30.11-gke.1190000 y versiones posteriores
  • 1.31.7-gke.1363000 y versiones posteriores
  • 1.32.4-gke.1106000 y versiones posteriores
  • 1.33.0-gke.1552000 y versiones posteriores

Los Pods que intenten activar volúmenes persistentes de NFS en nodos de COS que anteriormente tenían una activación de solo lectura (RO) solo se activarán en modo RO.

En la versión 1.27 y posteriores de GKE, los volúmenes de NFS que usan el controlador de CSI integrado en Kubernetes solo pueden activar volúmenes persistentes en modo RO después de una activación RO anterior en el mismo nodo.

Solución alternativa:

Cambia a una versión inferior de los grupos de nodos a una versión anterior a las versiones afectadas.

Operaciones
  • Versiones 1.32 desde la 1.32.1-gke.1357001 hasta la 1.32.4-gke.1106000, sin incluirla
  • Todas las versiones 1.33 anteriores a la 1.33.0-gke.1552000
  • Versión 1.32: 1.32.4-gke.1106000 y versiones posteriores
  • Versión 1.33: 1.33.0-gke.1552000 y versiones posteriores

Los Pods que intenten activar volúmenes persistentes de NFS en nodos de Ubuntu no podrán ejecutarse.

En la versión 1.32 y posteriores de GKE, los volúmenes de NFS que usen el controlador de CSI integrado de Kubernetes no podrán activar volúmenes persistentes en nodos de Ubuntu. Cuando esto sucede, es posible que veas los siguientes mensajes de error:

"MountVolume.SetUp failed for volume 'nfs-storage' : mount failed: exit status 1"
Output: Mount failed: mount failed: exit status 127
"Output: chroot: failed to run command 'mount': No such file or directory failed to run command mount on Ubuntu nodes"
Además de ver estos mensajes de error, los Pods que usen estos volúmenes no podrán iniciarse.

Solución alternativa:

Cambia a una versión inferior de los grupos de nodos a la versión 1.31.

Operación >= 1.28.15-gke.1436000, < 1.28.15-gke.1668000, >= 1.29.12-gke.1040000, < 1.29.13-gke.1028000, >= 1.30.8-gke.1053000, < 1.30.8-gke.1287000, >= 1.31.4-gke.1057000, < 1.31.6-gke.1020000, >= 1.32.0-gke.1281000, < 1.32.1-gke.1302000
  • 1.28.15-gke.1668000 o versiones posteriores
  • 1.29.13-gke.1028000 o versiones posteriores
  • 1.30.8-gke.1287000 o versiones posteriores
  • 1.31.6-gke.1020000 o versiones posteriores
  • 1.32.1-gke.1302000 o versiones posteriores

Los Pods que usan llamadas al sistema relacionadas con io_uring pueden ingresar al estado D (suspensión de disco), también llamado TASK_UNINTERRUPTIBLE, debido a un error en el kernel de Linux. Los procesos en estado D no se pueden activar con señales, incluida SIGKILL.

Cuando un Pod se ve afectado por este problema conocido, es posible que sus contenedores no finalicen correctamente. En los registros de containerd, es posible que observes mensajes repetidos similares al siguiente: Kill container [container-id], que indica que el sistema intenta detener un contenedor de forma repetida.
De forma simultánea, los registros de kubelet muestran mensajes de error, como los siguientes:

"Kill container failed" err="rpc error: code = DeadlineExceeded desc = context deadline exceeded"

o

"Error syncing pod, skipping" err="[failed to \"KillContainer\" for \"container-name\" with KillContainerError: \"rpc error: code = DeadlineExceeded desc = an error occurs during waiting for container \\\"container-id\\\" to be killed: wait container \\\"container-id\\\": context deadline exceeded\", failed to \"KillPodSandbox\" for \"pod-uuid\" with KillPodSandboxError: \"rpc error: code = DeadlineExceeded desc = context deadline exceeded\"]" pod="pod-name" podUID="pod-uuid"

Estos síntomas apuntan a procesos dentro del contenedor que están atascados en un estado de suspensión ininterrumpible (estado D), lo que impide la finalización adecuada del Pod.

Las cargas de trabajo que usan io_uring directamente o que lo usan de forma indirecta a través de un tiempo de ejecución de lenguaje como NodeJS podrían verse afectadas por este problema conocido. Las cargas de trabajo afectadas tienen un proceso en el estado D (suspensión de disco) en el archivo /proc/<pid>/state y muestran la cadena io_uring como parte del contenido de /proc/<pid>/stack. Es posible que las cargas de trabajo de NodeJS puedan inhabilitar el uso de io_uring a través de UV_USE_IO_URING=0.

Solución alternativa:

Actualiza los nodos del clúster a una versión corregida o posterior.

Operación 1.28, 1.29, 1.30 y 1.31
  • 1.30.8-gke.1261000 y versiones posteriores
  • 1.31.4-gke.1183000 y versiones posteriores
  • 1.32.0-gke.1448000 y versiones posteriores

Las cargas de trabajo que usan la transmisión de imágenes fallan con errores de autenticación

Un error en la función de transmisión de imágenes puede provocar que las cargas de trabajo fallen cuando se cumple un conjunto de condiciones específicas mientras el contenedor lee archivos. Es posible que los mensajes de error relacionados con las fallas de autenticación se muestren en el registro de gcfsd.

Para verificar si te afecta, busca en los registros con esta consulta de búsqueda: resource.type="k8s_node" resource.labels.project_id="[project_id]" resource.labels.cluster_name="[cluster_name]" logName="projects/[project_id]/logs/gcfsd" "backend.FileContent failed" "Request is missing required authentication credential."

La presencia de estos errores indica que los nodos se ven afectados.

Si este problema te afecta, puedes actualizar tus grupos de nodos a una versión de GKE con parche.

Operación
  • 1.30.0 a 1.30.5-gke.1443001
  • 1.31.0 a 1.31.1-gke.1678000
  • 1.30.5-gke.1628000 y versiones posteriores
  • 1.31.1-gke.1846000 y versiones posteriores

Aumento de las tasas de expulsión de Pods en las versiones 1.30 y 1.31 de GKE

Algunas versiones de GKE 1.30 y GKE 1.31 que usan COS 113 y COS 117, respectivamente, tienen kernels que se compilaron con la opción CONFIG_LRU_GEN_ENABLED=y. Esta opción habilita la función del kernel LRU multigeneracional, lo que hace que kubelet calcule mal el uso de memoria y podría provocar que kubelet expulse Pods.

La opción de configuración CONFIG_LRU_GEN_ENABLED está inhabilitada en cos-113-18244-151-96 y cos-117-18613-0-76.

Es posible que no siempre veas una tasa de desalojo de Pods inusual, ya que este problema depende del patrón de uso de memoria de la carga de trabajo. Existe un mayor riesgo de que kubelet expulse Pods para cargas de trabajo que no hayan establecido un límite de memoria en el campo de recursos. Esto se debe a que las cargas de trabajo pueden solicitar más memoria de la que kubelet informa como disponible.

Si observas un mayor uso de memoria de una aplicación después de actualizar a las versiones de GKE mencionadas sin ningún otro cambio, es posible que te afecte la opción del kernel.

Para verificar si hay tasas de desalojo de Pods inusuales, analiza las siguientes métricas con el Explorador de métricas: kubernetes.io/container_memory_used_bytes y kubernetes.io/container_memory_request_bytes

Puedes usar las siguientes consultas de PromQL. Reemplaza los valores de cluster_name, namespace_name, metadata_system_top_level_controller_type y metadata_system_top_level_controller_name por el nombre y el tipo de carga de trabajo que deseas analizar:

max by (pod_name)(max_over_time(kubernetes_io:container_memory_used_bytes{monitored_resource="k8s_container",memory_type="non-evictable",cluster_name="REPLACE_cluster_name",namespace_name="REPLACE_namespace",metadata_system_top_level_controller_type="REPLACE_controller_type",metadata_system_top_level_controller_name="REPLACE_controller_name"}[${__interval}]))

sum by (pod_name)(avg_over_time(kubernetes_io:container_memory_request_bytes{monitored_resource="k8s_container",cluster_name="REPLACE_cluster_name",namespace_name="REPLACE_namespace",metadata_system_top_level_controller_type="REPLACE_controller_type",metadata_system_top_level_controller_name="REPLACE_controller_name"}[${__interval}]))

Si ves picos inusuales en el uso de memoria que superan la memoria solicitada, es posible que la carga de trabajo se expulse con mayor frecuencia.

Solución alternativa

Si no puedes actualizar a las versiones corregidas y ejecutas en un entorno de GKE en el que puedes implementar Pods con privilegios, puedes inhabilitar la opción LRU multigeneracional con un DaemonSet.

  1. Actualiza los grupos de nodos de GKE desde los que deseas ejecutar el DaemonSet con una anotación para inhabilitar la opción LRU multigeneracional. Por ejemplo, disable-mglru: "true".
  2. Actualiza el parámetro nodeSelector en el manifiesto de DaemonSet con la misma anotación que usaste en el paso anterior. Por ejemplo, consulta el archivo disable-mglru.yaml en el repositorio GoogleCloudPlatform/k8s-node-tools.
  3. Implementa el DaemonSet en tu clúster.

Después de que el DaemonSet se ejecute en todos los grupos de nodos seleccionados, el cambio entrará en vigencia de inmediato y el cálculo del uso de memoria de kubelet volverá a la normalidad.

Operación 1.28, 1.29, 1.30 y 1.31
  • 1.28.14-gke.1175000 y versiones posteriores
  • 1.29.9-gke.1341000 y versiones posteriores
  • 1.30.5-gke.1355000 y versiones posteriores
  • 1.31.1-gke.1621000 y versiones posteriores

Los pods están atascados en el estado de finalización

Un error en el entorno de ejecución del contenedor (containerd) podría hacer que los Pods y los contenedores se queden atascados en el estado Terminating con errores similares a los siguientes:

OCI runtime exec failed: exec failed: cannot exec in a stopped container: unknown

Si te afecta este problema, puedes actualizar tus nodos a una versión de GKE con una versión corregida de containerd.

Operación 1.28 y 1.29
  • 1.28.9-gke.1103000 y versiones posteriores
  • 1.29.4-gke.1202000 y versiones posteriores
  • 1.30: Todas las versiones

Un error en la función de transmisión de imágenes puede provocar que los contenedores no se inicien.

Es posible que no se puedan crear contenedores que se ejecuten en un nodo con la transmisión de imágenes habilitada en versiones específicas de GKE con el siguiente error:

"CreateContainer in sandbox from runtime service failed" err="rpc error: code = Unknown desc = failed to create containerd container: failed to mount [PATH]: too many levels of symbolic links"

Si este problema te afecta, puedes comprobar si hay capas vacías o duplicadas. Si no puedes quitar las capas vacías o duplicadas, inhabilita la transmisión de imágenes.

Operación 1.27, 1.28 y 1.29
  • 1.28.9-gke.1103000 y versiones posteriores
  • 1.29.4-gke.1202000 y versiones posteriores
  • 1.30: Todas las versiones

La transmisión de imágenes falla porque faltan archivos

Un error en la función de transmisión de imágenes puede provocar que los contenedores fallen debido a la falta de uno o más archivos.

Es posible que los contenedores que se ejecutan en un nodo con la transmisión de imágenes habilitada en las versiones siguientes no se inicien o se ejecuten con errores que informan que no existen ciertos archivos. A continuación, se muestran ejemplos de estos errores:

  • No such file or directory
  • Executable file not found in $PATH

Si te afecta este problema, puedes inhabilitar la transmisión de imágenes.

Herramientas de redes,actualizaciones y revisiones 1.28

Error de configuración de TLS de la puerta de enlace

Identificamos un problema con la configuración de TLS para las puertas de enlace en clústeres que ejecutan la versión 1.28.4-gke.1083000 de GKE. Esto afecta las configuraciones de TLS que usan un SSLCertificate o un CertificateMap. Si actualizas un clúster con Gateways existentes, fallarán las actualizaciones realizadas en el Gateway. En el caso de las puertas de enlace nuevas, no se aprovisionarán los balanceadores de cargas. Este problema se solucionará en una próxima versión de parche de GKE 1.28.

Revisiones y actualizaciones 1.27 1.27.8 o una versión posterior

Problema con el complemento del dispositivo GPU

Es posible que los clústeres que ejecutan GPUs y se actualizaron de la versión 1.26 a una versión de parche 1.27 anterior a la 1.27.8 experimenten problemas con los complementos de dispositivos de GPU (nvidia-gpu-device-plugin) de sus nodos. Realiza los siguientes pasos según el estado de tu clúster:

  • Si tu clúster ejecuta la versión 1.26 y tiene GPUs, no lo actualices manualmente hasta que la versión 1.27.8 esté disponible en el canal de versiones del clúster.
  • Si tu clúster ejecuta una versión de parche anterior a la 1.27 y los nodos se ven afectados, reinicia los nodos o borra manualmente el Pod nvidia-gpu-device-plugin en los nodos (el administrador de complementos creará un nuevo complemento en funcionamiento).
  • Si tu clúster usa actualizaciones automáticas, esto no te afectará, ya que las actualizaciones automáticas solo trasladarán los clústeres a versiones de parche con la corrección.
Operación 1.27 y 1.28
  • 1.27.5-gke.1300 y versiones posteriores
  • 1.28.1-gke.1400 y versiones posteriores

Se detiene el ajuste de escala automático para todas las cargas de trabajo

HorizontalPodAutoscaler (HPA) y VerticalPodAutoscaler (VPA) podrían detener el ajuste de escala automático de todas las cargas de trabajo en un clúster si contiene objetos autoscaling/v2 de HPA mal configurados. El problema afecta a los clústeres que ejecutan versiones de parche anteriores de las versiones 1.27 y 1.28 de GKE (por ejemplo, 1.27.3-gke.100).

Solución alternativa:

Corrige los objetos autoscaling/v2 del HPA mal configurados. Para ello, asegúrate de que los campos de spec.metrics.resource.target coincidan, por ejemplo:

  • Cuando spec.metrics.resource.target.type es Utilization, el objetivo debe ser averageUtilization.
  • Cuando spec.metrics.resource.target.type es AverageValue, el objetivo debe ser averageValue.

Para obtener más detalles sobre cómo configurar objetos autoscaling/v2 de HPA, consulta la documentación de HorizontalPodAutoscaler de Kubernetes.

Operación 1.28 y 1.29
  • 1.28.7-gke.1026000
  • 1.29.2-gke.1060000

No se puede implementar la detección de amenazas de contenedores

Es posible que Container Threat Detection no se pueda implementar en clústeres de Autopilot que ejecuten las siguientes versiones de GKE:

  • 1.28.6-gke.1095000 a 1.28.7-gke.1025000
  • 1.29.1-gke.1016000 a 1.29.1-gke.1781000
Redes, actualizaciones 1.27, 1.28, 1.29 y 1.30
  • 1.30.4-gke.1282000 o versiones posteriores
  • 1.29.8-gke.1157000 o versiones posteriores
  • 1.28.13-gke.1078000 o versiones posteriores
  • 1.27.16-gke.1342000 o versiones posteriores

Problemas de conectividad para los Pods hostPort después de la actualización del plano de control

Los clústeres con la política de red habilitada pueden experimentar problemas de conectividad con los Pods de hostPort. Además, los Pods recién creados pueden tardar entre 30 y 60 segundos adicionales en estar listos.

El problema se activa cuando el plano de control de GKE de un clúster se actualiza a una de las siguientes versiones de GKE

  • 1.30 a 1.30.4-gke.1281999
  • 1.29.1-gke.1545000 a 1.29.8-gke.1156999
  • 1.28.7-gke.1042000 a 1.28.13-gke.1077999
  • 1.27.12-gke.1107000 a 1.27.16-gke.1341999

Solución alternativa:

Actualiza o vuelve a crear los nodos inmediatamente después de la actualización del plano de control de GKE.

Redes 1.31 y 1.32
  • 1.32.1-gke.1729000 o versiones posteriores
  • 1.31.6-gke.1020000 o versiones posteriores

Tráfico UDP interrumpido entre Pods que se ejecutan en el mismo nodo

Es posible que los clústeres con la visibilidad dentro de los nodos habilitada experimenten problemas con el tráfico UDP entre los Pods que se ejecutan en el mismo nodo.

El problema se activa cuando el nodo del clúster de GKE se actualiza o se crea con una de las siguientes versiones de GKE:

  • 1.32.1-gke.1729000 o versiones posteriores
  • 1.31.6-gke.1020000 o versiones posteriores

La ruta afectada es el tráfico UDP de Pod a Pod en el mismo nodo a través de Hostport o Service.

Solución

Actualiza el clúster a una de las siguientes versiones corregidas:

  • 1.32.3-gke.1927000 o versiones posteriores
  • 1.31.7-gke.1390000 o versiones posteriores
Operación 1.29, 1.30 y 1.31
  • 1.29.10-gke.1071000 o versiones posteriores
  • 1.30.5-gke.1723000 o versiones posteriores
  • 1.31.2-gke.1115000 o versiones posteriores

Incompatibilidad entre el operador de Ray y la encriptación de la base de datos de Cloud KMS

Algunas versiones del operador de Ray son incompatibles con la encriptación de la base de datos de Cloud KMS.

Soluciones alternativas:

Actualiza el plano de control del clúster a una versión corregida o posterior.

Revisiones y actualizaciones 1.30 y 1.31
  • 1.30.8-gke.1051000 o versiones posteriores
  • 1.31.1-gke.2008000 y versiones posteriores

El Pod del controlador de mantenimiento de la GPU está atascado en el estado CrashLoopBackOff

Con este problema, los Pods de gpu-maintenance-handler quedan atascados en un estado "CrashLoopBackOff" en sus respectivos nodos. Este estado evita que se aplique la etiqueta "mantenimiento próximo" a los nodos de GKE, lo que puede afectar los procesos de vaciado de nodos y desalojo de Pods para las cargas de trabajo.

"Node upcoming maintenance label not applied due to error: Node "gke-yyy-yyy" is invalid: metadata.labels: Invalid value: "-62135596800": a valid label must be an empty string or consist of alphanumeric characters, '-','' or '.', and must start and end with an alphanumeric character (e.g.'MyValue', or 'my_value', or '12345', regex used for validation is '(([A-Za-z0-9][-A-Za-z0-9.]*)?[A-Za-z0-9])?')"

Si este problema te afecta, puedes resolverlo actualizando tu plano de control a una versión de GKE que incluya la corrección.

Operación 1.33.1-gke.1522000 y versiones posteriores 1.33.4-gke.1142000 y versiones posteriores

Los Pods no se inician en los nodos con la transmisión de imágenes habilitada

En los nodos con la transmisión de imágenes habilitada, es posible que las cargas de trabajo no se inicien con la siguiente firma de error: Failed to create pod sandbox ... context deadline exceeded

Los registros del puerto serie de un nodo afectado también contienen la siguiente firma de error: task gcfsd ... blocked for more than X seconds

La presencia de estas dos firmas de error indica un bloqueo en uno de los componentes de transmisión de imágenes. Este bloqueo impide que los Pods se inicien correctamente.

Mitigación:

Reinicia el nodo para mitigar el problema rápidamente. Ten en cuenta que es posible que el nodo reiniciado vuelva a experimentar el bloqueo. Para una mitigación más sólida, inhabilita la transmisión de imágenes en el grupo de nodos ejecutando el siguiente comando:

gcloud container node-pools update NODE_POOL_NAME --cluster CLUSTER_NAME --no-enable-image-streaming
Nota: Si inhabilitas la transmisión de imágenes, se volverán a crear todos los nodos dentro de un grupo de nodos.

¿Qué sigue?