Si el escalado 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 puede 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 comunes con la configuración de VerticalPodAutoscaler o recomendaciones inesperadas. Seguir estos pasos para solucionar problemas puede ayudar a que tus aplicaciones se escalen 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 escalen correctamente. También ayuda a los administradores y operadores de plataformas a solucionar problemas con la configuración del clúster que afectan las cargas de trabajo con ajuste de escala 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 Cloud de Confiance consola.
Describe el VerticalPodAutoscaler
Para ver los cálculos en tiempo real y las decisiones de escalamiento recientes, usa el comando kubectl describe vpa:
kubectl describe vpa VPA_NAME -n NAMESPACE_NAME
Reemplaza lo siguiente:
VPA_NAME: el nombre de tu VerticalPodAutoscaler.NAMESPACE_NAME: el espacio de nombres de tu VerticalPodAutoscaler.
El resultado es similar a este:
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, incluido el campotargetRef(la carga de trabajo de destino) 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 Cloud de Confiance consola:
Console
En la Cloud de Confiance consola, 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 API 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: el nombre de tu VerticalPodAutoscaler.NAMESPACE_NAME: el espacio de nombres de tu VerticalPodAutoscaler.
Verifica el estado de VerticalPodAutoscaler en Cloud de Confiance la consola
Para inspeccionar el estado de VerticalPodAutoscaler de tus cargas de trabajo en la Cloud de Confiance consola, haz lo siguiente:
Ve 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 Escalador automático vertical de Pods 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 estadísticas detalladas sobre los cálculos y las decisiones de VerticalPodAutoscaler, habilita los registros de decisiones del escalador automático vertical de Pods (vista previa) en Cloud Logging.
Estos registros 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 Recopila registros de eventos del escalador automático vertical de Pods.
Soluciona problemas de recomendaciones de VerticalPodAutoscaler
En las siguientes secciones, se abordan los problemas en los que un VerticalPodAutoscaler no produce recomendaciones o genera recomendaciones que difieren de las expectativas.
Un VerticalPodAutoscaler no proporciona recomendaciones
Síntomas:
- El campo
Status.Recommendationen el 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.targetRefen el 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 depende de las métricas del componentemetrics-server. Si el componentemetrics-serverno funciona correctamente, el VerticalPodAutoscaler no puede recuperar los datos de uso. - No hay Pods en ejecución: La carga de trabajo de destino no tiene Pods en ejecución ni listos para que el VerticalPodAutoscaler los observe.
Solución:
Verifica el campo
targetRef: Comprueba los valores de los camposkind,name, yapiVersionen la secciónspec.targetRef. Asegúrate de que todos los valores coincidan con la carga de trabajo de destino. Para confirmar que la carga de trabajo existe, ejecuta lo siguiente:kubectl get KIND WORKLOAD_NAME \ -n NAMESPACE_NAMEReemplaza lo siguiente:
KIND: 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-serveresté en ejecución: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 estén en ejecución: 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 la aplicación.
- Características de la carga de trabajo: Es posible que los trabajos de corta duración o las cargas de trabajo con patrones de uso muy irregulares no reciban recomendaciones óptimas.
- Recursos de VerticalPodAutoscaler en conflicto: Es posible que se configuren varios recursos de VerticalPodAutoscaler para orientar la misma carga de trabajo.
Solución:
- Permite 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 es el más adecuado 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.targetRefpara cada recurso. Si varios recursos de VerticalPodAutoscaler apuntan a la misma carga de trabajo, quita o ajusta los recursos en conflicto para que solo un VerticalPodAutoscaler apunte a una carga de trabajo determinada.
Soluciona problemas de actualizaciones de recursos de Pods
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.requestsen el manifiesto de Pod no se actualiza. - Los Pods no se reinician para aplicar 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, el VerticalPodAutoscaler evita expulsar cargas de trabajo de 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 la Deployment o StatefulSet tenga más de una réplica.
Las actualizaciones in situ fallan o permanecen diferidas
Síntomas:
- El cambio de tamaño del contenedor in situ no se completa o permanece diferido.
Causa:
- Capacidad de nodo insuficiente: Si el nodo no tiene capacidad para las solicitudes de recursos actualizadas, se difiere la operación de cambio de tamaño in situ.
Solución:
Verifica el estado del 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 vuelve a expulsar y volver a crear el Pod para aplicar la recomendación. Para verificar el estado de la actualización diferida, haz lo siguiente:
Inspecciona las anotaciones de Pod para verificar si la
vpaInPlaceUpdatedanotación está establecida en"true":metadata: annotations: vpaInPlaceUpdated: "true" vpaUpdates: 'Pod resources updated by sample-deployment-vpa: container 0: cpu request, memory request'Para verificar el estado diferido, inspecciona el campo
status.conditionsen busca de 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: el espacio de nombres del Pod.POD_NAME: el nombre del Pod.
Busca eventos con cualquiera de los siguientes motivos:
ResizedPod(actualización in situ correcta) oEvictedByVPA(reversión a la recreación).
¿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#kubernetes-enginecanal de Slack para obtener más Asistencia de la comunidad. - Abrir errores o solicitudes de funciones con la herramienta de seguimiento de errores pública.