Cuando el ajuste de escala automático vertical de Pods no funciona como se espera en Google Kubernetes Engine (GKE), es posible que tus cargas de trabajo no se escalen correctamente. Estos problemas pueden impedir que las aplicaciones controlen la carga, lo que podría causar problemas de rendimiento o interrupciones. Es posible que veas que los Pods no se reinician con las nuevas recomendaciones de recursos o que las recomendaciones no coincidan con el uso real.
Usa este documento para resolver problemas habituales con la configuración de VerticalPodAutoscaler o las recomendaciones inesperadas. Seguir estos pasos para solucionar problemas puede ayudar a que tus aplicaciones se escale de manera eficiente y confiable según la demanda.
Esta información es importante para los desarrolladores de aplicaciones que configuran recursos de VerticalPodAutoscaler y necesitan asegurarse de que sus aplicaciones se ajusten correctamente. También ayuda a los administradores y operadores de la plataforma a solucionar problemas relacionados con la configuración del clúster que afectan las cargas de trabajo con escalamiento automático. Para obtener más información sobre los roles comunes y las tareas de ejemplo a las que hacemos referencia en el contenido de Cloud de Confiance by S3NS , consulta Roles y tareas comunes del usuario de GKE.
Diagnostica problemas de VerticalPodAutoscaler
Para diagnosticar problemas con un VerticalPodAutoscaler, inspecciona el estado y
la configuración con kubectl o la consola de Cloud de Confiance .
Describe el VerticalPodAutoscaler
Para ver los cálculos en tiempo real y las decisiones de ajuste de escala recientes, usa el comando kubectl describe vpa:
kubectl describe vpa VPA_NAME -n NAMESPACE_NAME
Reemplaza lo siguiente:
VPA_NAME: Es el nombre de tu VerticalPodAutoscaler.NAMESPACE_NAME: Es el espacio de nombres de tu VerticalPodAutoscaler.
El resultado es similar a lo siguiente:
Name: sample-deployment-vpa
Namespace: default
API Version: autoscaling.k8s.io/v1
Kind: VerticalPodAutoscaler
# Multiple lines are omitted here
Spec:
Target Ref:
API Version: apps/v1
Kind: Deployment
Name: sample-deployment
Update Policy:
Update Mode: Auto
Status:
Conditions:
Last Transition Time: 2025-10-09T10:00:00Z
Message: VPA is fetching history in order to provide recommendation
Reason: FetchingHistory
Status: True
Type: FetchingHistory
Last Transition Time: 2025-10-09T10:05:00Z
Message: VPA pod metrics aren't available yet
Reason: NoMetrics
Status: True
Type: LowConfidence
Last Transition Time: 2025-10-09T10:10:00Z
Message: VPA is able to provide a recommendation
Reason: RecommendationProvided
Status: True
Type: RecommendationProvided
Recommendation:
Container Recommendations:
Container Name: sample-container
Lower Bound:
Cpu: 100m
Memory: 128Mi
Target:
Cpu: 200m
Memory: 256Mi
Upper Bound:
Cpu: 500m
Memory: 512Mi
Events: <none>
En el resultado, revisa estas secciones principales:
Spec: Muestra los detalles de configuración, incluidos el campotargetRef(la carga de trabajo objetivo) y el campoupdatePolicy(cómo se aplican las actualizaciones).Status: Muestra la secciónConditions(estado operativo) y la secciónRecommendation(valores de recursos de CPU y memoria generados para cada contenedor).Events: Enumera las acciones o los errores recientes relacionados con el objeto VerticalPodAutoscaler.
Visualiza el manifiesto de VerticalPodAutoscaler
Para ver la configuración y el estado completos de un VerticalPodAutoscaler, inspecciona su manifiesto YAML con kubectl o la consola de Cloud de Confiance :
Console
En la consola de Cloud de Confiance , ve a la página Navegador de objetos.
Haz clic en la lista de filtros Tipo de objeto.
Borra las selecciones existentes.
Selecciona VerticalPodAutoscaler y haz clic en Aceptar.
En la lista filtrada, selecciona el grupo de APIs autoscaling.k8s.io.
Selecciona el tipo de objeto VerticalPodAutoscaler.
Haz clic en el nombre del VerticalPodAutoscaler que deseas inspeccionar.
kubectl
kubectl get vpa VPA_NAME \
-n NAMESPACE_NAME \
-o yaml
Reemplaza lo siguiente:
VPA_NAME: Es el nombre de tu VerticalPodAutoscaler.NAMESPACE_NAME: Es el espacio de nombres de tu VerticalPodAutoscaler.
Verifica el estado de VerticalPodAutoscaler en la consola de Cloud de Confiance
Para inspeccionar el estado de VerticalPodAutoscaler de tus cargas de trabajo en la consola de Cloud de Confiance , sigue estos pasos:
Ir a la página Cargas de trabajo.
Haz clic en el nombre de tu carga de trabajo.
Ve a la pestaña Detalles y busca la sección Escalador automático.
Revisa la fila Vertical Pod Autoscaler para ver los mensajes de estado relacionados con la recopilación de métricas y el estado de la configuración.
Recopila registros de decisiones
Para obtener información detallada sobre los cálculos y las decisiones de VerticalPodAutoscaler, habilita los registros de decisiones del escalador automático vertical de Pods (versión preliminar) en Cloud Logging.
En estos registros, se capturan eventos como UPDATE_RECOMMENDATION, EVICT_POD, APPLY_RECOMMENDATION_IN_PLACE y APPLY_RECOMMENDATION_ON_EVICTION.
Para habilitar y revisar los registros de decisiones, consulta Cómo recopilar registros de eventos del escalador automático vertical de Pods.
Soluciona problemas de las recomendaciones de VerticalPodAutoscaler
En las siguientes secciones, se abordan los problemas en los que VerticalPodAutoscaler no genera recomendaciones o genera recomendaciones que difieren de las expectativas.
Un VerticalPodAutoscaler no proporciona recomendaciones
Síntomas:
- El campo
Status.Recommendationdel manifiesto de VerticalPodAutoscaler está vacío. - Las condiciones en el manifiesto de VerticalPodAutoscaler muestran las condiciones de estado
NoPodsMatched,FetchingHistoryoLowConfidence.
Causa:
- Destino incorrecto: El campo
spec.targetRefdel manifiesto de VerticalPodAutoscaler no apunta a una carga de trabajo existente en el mismo espacio de nombres. - Recopilación inicial de métricas: El VerticalPodAutoscaler se creó recientemente y aún está recopilando datos históricos de uso de recursos.
- Problemas con el componente
metrics-server: El VerticalPodAutoscaler se basa en las métricas del componentemetrics-server. Si el componentemetrics-serverno funciona correctamente, VerticalPodAutoscaler no podrá recuperar los datos de uso. - No hay Pods en ejecución: La carga de trabajo de destino no tiene Pods en ejecución o listos para que los observe VerticalPodAutoscaler.
Solución:
Verifica el campo
targetRef: Comprueba los valores de los camposkind,nameyapiVersionen la secciónspec.targetRef. Asegúrate de que todos los valores coincidan con la carga de trabajo de destino. Para confirmar que existe la carga de trabajo, ejecuta el siguiente comando:kubectl get KIND WORKLOAD_NAME \ -n NAMESPACE_NAMEReemplaza lo siguiente:
KIND: Es el tipo de carga de trabajo, por ejemplo,deploymentostatefulset.WORKLOAD_NAME: el nombre de tu carga de trabajo.NAMESPACE_NAME: el espacio de nombres de tu carga de trabajo.
Permite tiempo para la recopilación de métricas: Los recursos nuevos de VerticalPodAutoscaler requieren tiempo para recopilar datos. Supervisa el campo
Status.Conditionspara ver una transición a la condición de estadoRecommendationProvided.Verifica el componente
metrics-server:Verifica que el Pod del componente
metrics-serverse esté ejecutando:kubectl get pods -n kube-system | grep metrics-serverSi el Pod no se está ejecutando o tiene un recuento de reinicios alto, verifica sus registros:
kubectl logs -n kube-system -l k8s-app=metrics-serverLas entradas de registro que contienen palabras como
error,failedounable to fetchindican problemas con la recopilación de métricas.
Asegúrate de que los Pods se estén ejecutando: Verifica que la carga de trabajo de destino tenga al menos un Pod en ejecución y listo.
Las recomendaciones de VerticalPodAutoscaler son inesperadas
Síntomas:
- Los valores de CPU o memoria en la sección
Status.Recommendationson más altos o más bajos de lo esperado. - Las recomendaciones no se alinean con el consumo de recursos de la carga de trabajo observada.
Causa:
- Cambios en el comportamiento de la carga de trabajo: Las recomendaciones de VerticalPodAutoscaler se basan en el uso histórico. Es posible que aún no se reflejen los cambios recientes en los patrones de consumo de aplicaciones.
- Características de la carga de trabajo: Es posible que los trabajos o las cargas de trabajo de corta duración con patrones de uso muy irregulares no reciban recomendaciones óptimas.
- Recursos VerticalPodAutoscaler en conflicto: Es posible que se configuren varios recursos VerticalPodAutoscaler para segmentar la misma carga de trabajo.
Solución:
- Permite un tiempo de ajuste: Dale tiempo al VerticalPodAutoscaler para que aprenda nuevos patrones de uso después de los cambios en la aplicación.
- Evalúa la idoneidad: Evalúa si un VerticalPodAutoscaler o un Horizontal Pod Autoscaler son los más adecuados para el tipo de carga de trabajo.
Verifica si hay recursos de VerticalPodAutoscaler en conflicto:
Enumera todos los recursos de VerticalPodAutoscaler en tu clúster:
kubectl get vpa --all-namespacesExamina el campo
spec.targetRefde cada recurso. Si varios recursos de VerticalPodAutoscaler tienen como objetivo la misma carga de trabajo, quita o ajusta los recursos en conflicto para que solo un VerticalPodAutoscaler tenga como objetivo una carga de trabajo determinada.
Soluciona problemas relacionados con las actualizaciones de recursos de Pod
En las siguientes secciones, se abordan los problemas en los que existen recomendaciones, pero no se aplican a los Pods de destino.
No se actualizan las solicitudes de recursos de Pods
Síntomas:
- El manifiesto de VerticalPodAutoscaler muestra recomendaciones en la sección
Status, pero el camporesources.requestsdel manifiesto de Pod no se actualiza. - Los Pods no se reinician para aplicar las recomendaciones cuando se usa el modo de actualización
AutooRecreate.
Causa:
- El campo
updateModeesOff: Cuando el campospec.updatePolicy.updateModese establece enOff, el VerticalPodAutoscaler genera recomendaciones, pero no las aplica. - La carga de trabajo tiene solo una réplica: En el modo de actualización
AutooRecreate, VerticalPodAutoscaler evita expulsar cargas de trabajo con una sola réplica para evitar el tiempo de inactividad.
Solución:
- Verifica el campo
updateMode: Modifica el manifiesto de VerticalPodAutoscaler para establecer el campospec.updatePolicy.updateModeenAuto,RecreateoInPlaceOrRecreate. - Aumenta el recuento de réplicas: Para las cargas de trabajo que usan el modo de actualización
AutooRecreate, asegúrate de que el Deployment o StatefulSet tenga más de una réplica.
Las actualizaciones in situ fallan o permanecen aplazadas
Síntomas:
- No se completa el cambio de tamaño del contenedor en el lugar o permanece diferido.
Causa:
- Capacidad de nodo insuficiente: Si el nodo no tiene capacidad para las solicitudes de recursos actualizadas, se aplaza la operación de cambio de tamaño in situ.
Solución:
Verifica el estado de cambio de tamaño diferido y la capacidad del nodo:
Si el cambio de tamaño permanece diferido durante más de cinco minutos, el VerticalPodAutoscaler recurre a desalojar y volver a crear el Pod para aplicar la recomendación. Para verificar el estado de la actualización aplazada, haz lo siguiente:
Inspecciona las anotaciones del Pod para verificar si la anotación
vpaInPlaceUpdatedestá establecida en"true":metadata: annotations: vpaInPlaceUpdated: "true" vpaUpdates: 'Pod resources updated by sample-deployment-vpa: container 0: cpu request, memory request'Verifica el estado diferido inspeccionando el campo
status.conditionspara los eventos de cambio de tamaño diferido:status: conditions: - type: PodResizePending status: "True" reason: Deferred message: "Node didn't have enough resource: ..."Inspecciona los eventos de Kubernetes para el Pod:
kubectl get events -n NAMESPACE_NAME --field-selector involvedObject.kind=Pod,involvedObject.name=POD_NAMEReemplaza lo siguiente:
NAMESPACE_NAME: Es el espacio de nombres de tu Pod.POD_NAME: es el nombre del Pod.
Busca eventos con uno de los siguientes motivos:
ResizedPod(actualización in situ correcta) oEvictedByVPA(recreación de resguardo).
¿Qué sigue?
Si no encuentras una solución a tu problema en la documentación, consulta Obtener asistencia para obtener más ayuda, como asesoramiento en los siguientes temas:
- Comunicarse con Atención al cliente de Cloud para abrir un caso de asistencia.
- Hacer preguntas en StackOverflow para obtener asistencia de
la comunidad y usar la etiqueta
google-kubernetes-enginepara buscar problemas similares. También puedes unirte al canal de Slack#kubernetes-enginepara obtener más Asistencia de la comunidad. - Abrir problemas o solicitudes de funciones con la herramienta de seguimiento de errores pública.