Quando la scalabilità automatica verticale dei pod non funziona come previsto in Google Kubernetes Engine (GKE), i workload potrebbero non scalare correttamente. Questi problemi possono impedire alle applicazioni di gestire il carico, il che potrebbe causare problemi di prestazioni o interruzioni. Potresti notare che i pod non vengono riavviati con i nuovi suggerimenti sulle risorse o che i suggerimenti non corrispondono all'utilizzo effettivo.
Utilizza questo documento per risolvere i problemi comuni relativi alla configurazione di VerticalPodAutoscaler o ai suggerimenti imprevisti. Seguire questi passaggi per la risoluzione dei problemi può aiutare le tue applicazioni a scalare in modo efficiente e affidabile in base alla domanda.
Queste informazioni sono importanti per gli sviluppatori di applicazioni che configurano le risorse VerticalPodAutoscaler e devono assicurarsi che le loro applicazioni scalino correttamente. Aiutano anche gli amministratori e gli operatori della piattaforma a risolvere i problemi di configurazione del cluster che influiscono sui workload con scalabilità automatica. Per ulteriori informazioni sui ruoli comuni e sulle attività di esempio a cui facciamo riferimento nei Cloud de Confiance by S3NS contenuti, consulta Ruoli e attività comuni degli utenti di GKE.
Diagnosticare i problemi di VerticalPodAutoscaler
Per diagnosticare i problemi relativi a un VerticalPodAutoscaler, esamina lo stato e la
configurazione utilizzando kubectl o la Cloud de Confiance console.
Descrivere VerticalPodAutoscaler
Per visualizzare i calcoli in tempo reale e le decisioni di scalabilità recenti, utilizza il comando kubectl describe vpa:
kubectl describe vpa VPA_NAME -n NAMESPACE_NAME
Sostituisci quanto segue:
VPA_NAME: il nome di VerticalPodAutoscaler.NAMESPACE_NAME: lo spazio dei nomi di VerticalPodAutoscaler.
L'output è simile al seguente:
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>
Nell'output, esamina queste sezioni principali:
Spec: mostra i dettagli della configurazione, inclusi il campotargetRef(il workload di destinazione) e il campoupdatePolicy(la modalità di applicazione degli aggiornamenti).Status: mostra la sezioneConditions(integrità operativa) e la sezioneRecommendation(valori delle risorse CPU e memoria generati per ogni container).Events: elenca le azioni o gli errori recenti relativi all'oggetto VerticalPodAutoscaler.
Visualizzare il manifest di VerticalPodAutoscaler
Per visualizzare la configurazione e lo stato completi di un VerticalPodAutoscaler, esamina il relativo
manifest YAML utilizzando kubectl o la Cloud de Confiance console:
Console
Nella Cloud de Confiance console, vai alla pagina Browser oggetti.
Fai clic sull'elenco dei filtri Tipo di oggetto.
Cancella le selezioni esistenti.
Seleziona VerticalPodAutoscaler e fai clic su Ok.
Nell'elenco filtrato, seleziona il gruppo API autoscaling.k8s.io.
Seleziona il tipo di oggetto VerticalPodAutoscaler.
Fai clic sul nome di VerticalPodAutoscaler che vuoi esaminare.
kubectl
kubectl get vpa VPA_NAME \
-n NAMESPACE_NAME \
-o yaml
Sostituisci quanto segue:
VPA_NAME: il nome di VerticalPodAutoscaler.NAMESPACE_NAME: lo spazio dei nomi di VerticalPodAutoscaler.
Controllare lo stato di VerticalPodAutoscaler nella Cloud de Confiance console
Per esaminare lo stato di VerticalPodAutoscaler per i workload nella Cloud de Confiance console:
Vai alla pagina Workload.
Fai clic sul nome del workload.
Vai alla scheda Dettagli e individua la sezione Gestore della scalabilità automatica.
Esamina la riga Gestore della scalabilità automatica pod verticale per i messaggi di stato relativi alla raccolta delle metriche e all'integrità della configurazione.
Raccogliere i log delle decisioni
Per informazioni dettagliate sui calcoli e sulle decisioni di VerticalPodAutoscaler, abilita i log delle decisioni del gestore della scalabilità automatica verticale dei pod (anteprima) in Cloud Logging.
Questi log acquisiscono eventi come UPDATE_RECOMMENDATION, EVICT_POD, APPLY_RECOMMENDATION_IN_PLACE e APPLY_RECOMMENDATION_ON_EVICTION.
Per abilitare ed esaminare i log delle decisioni, consulta Raccogliere i log degli eventi del gestore della scalabilità automatica verticale dei pod.
Risolvere i problemi relativi ai suggerimenti di VerticalPodAutoscaler
Le sezioni seguenti trattano i problemi in cui un VerticalPodAutoscaler non riesce a produrre suggerimenti o genera suggerimenti diversi dalle aspettative.
VerticalPodAutoscaler non fornisce suggerimenti
Sintomi:
- Il campo
Status.Recommendationnel manifest di VerticalPodAutoscaler è vuoto. - Le condizioni nel manifest di VerticalPodAutoscaler mostrano le condizioni di stato
NoPodsMatched,FetchingHistoryoLowConfidence.
Causa:
- Destinazione errata: il campo
spec.targetRefnel manifest di VerticalPodAutoscaler non punta a un workload esistente nello stesso spazio dei nomi. - Raccolta iniziale delle metriche: VerticalPodAutoscaler è stato creato di recente e sta ancora raccogliendo i dati sull'utilizzo storico delle risorse.
- Problemi del componente
metrics-server: VerticalPodAutoscaler si basa sulle metriche del componentemetrics-server. Se il componentemetrics-servernon funziona correttamente, VerticalPodAutoscaler non può recuperare i dati di utilizzo. - Nessun pod in esecuzione: il workload di destinazione non ha pod in esecuzione o pronti da osservare per VerticalPodAutoscaler.
Risoluzione:
Verifica il campo
targetRef: controlla i valori dei campikind,name, eapiVersionnella sezionespec.targetRef. Assicurati che tutti i valori corrispondano al workload di destinazione. Per verificare che il workload esista, esegui:kubectl get KIND WORKLOAD_NAME \ -n NAMESPACE_NAMESostituisci quanto segue:
KIND: il tipo di workload, ad esempiodeploymentostatefulset.WORKLOAD_NAME: il nome del workload.NAMESPACE_NAME: lo spazio dei nomi del workload.
Concedi tempo per la raccolta delle metriche: le nuove risorse VerticalPodAutoscaler richiedono tempo per raccogliere i dati. Monitora il campo
Status.Conditionsper una transizione alla condizione di statoRecommendationProvided.Controlla il componente
metrics-server:Verifica che il pod per il componente
metrics-serversia in esecuzione:kubectl get pods -n kube-system | grep metrics-serverSe il pod non è in esecuzione o ha un numero elevato di riavvii, controlla i relativi log:
kubectl logs -n kube-system -l k8s-app=metrics-serverLe voci di log che contengono parole come
error,failedounable to fetchindicano problemi con la raccolta delle metriche.
Assicurati che i pod siano in esecuzione: verifica che il workload di destinazione abbia almeno un pod in esecuzione e pronto.
I suggerimenti di VerticalPodAutoscaler sono imprevisti
Sintomi:
- I valori di CPU o memoria nella sezione
Status.Recommendationsono superiori o inferiori al previsto. - I suggerimenti non corrispondono al consumo di risorse del workload osservato.
Causa:
- Modifiche del comportamento del workload: i suggerimenti di VerticalPodAutoscaler si basano sull'utilizzo storico. Le recenti modifiche ai pattern di consumo delle applicazioni potrebbero non essere ancora riflesse.
- Caratteristiche del workload: i job di breve durata o i workload con pattern di utilizzo molto irregolari potrebbero non ricevere suggerimenti ottimali.
- Risorse VerticalPodAutoscaler in conflitto: potrebbero essere configurate più risorse VerticalPodAutoscaler per il targeting dello stesso workload.
Risoluzione:
- Concedi tempo per la regolazione: concedi a VerticalPodAutoscaler il tempo necessario per apprendere nuovi pattern di utilizzo dopo le modifiche dell'applicazione.
- Valuta l'idoneità: valuta se un VerticalPodAutoscaler o un Horizontal Pod Autoscaler è più adatto al tipo di workload.
Verifica la presenza di risorse VerticalPodAutoscaler in conflitto:
Elenca tutte le risorse VerticalPodAutoscaler nel cluster:
kubectl get vpa --all-namespacesEsamina il campo
spec.targetRefper ogni risorsa. Se più risorse VerticalPodAutoscaler hanno come target lo stesso workload, rimuovi o modifica le risorse in conflitto in modo che un solo VerticalPodAutoscaler abbia come target un determinato workload.
Risolvere i problemi relativi agli aggiornamenti delle risorse dei pod
Le sezioni seguenti trattano i problemi in cui esistono suggerimenti, ma non vengono applicati ai pod di destinazione.
Le richieste di risorse dei pod non vengono aggiornate
Sintomi:
- Il manifest di VerticalPodAutoscaler mostra i suggerimenti nella sezione
Status, ma il camporesources.requestsnel manifest del pod non viene aggiornato. - I pod non vengono riavviati per applicare i suggerimenti quando si utilizza la modalità di aggiornamento
AutooRecreate.
Causa:
- Il campo
updateModeèOff: quando il campospec.updatePolicy.updateModeè impostato suOff, VerticalPodAutoscaler genera suggerimenti, ma non li applica. - Il workload ha una sola replica: nella modalità di aggiornamento
AutooRecreate, VerticalPodAutoscaler evita di eliminare i workload a replica singola per evitare tempi di inattività.
Risoluzione:
- Controlla il campo
updateMode: modifica il manifest di VerticalPodAutoscaler per impostare il campospec.updatePolicy.updateModesuAuto,RecreateoInPlaceOrRecreate. - Aumenta il numero di repliche: per i workload che utilizzano la modalità di aggiornamento
AutooRecreate, assicurati che il deployment o lo StatefulSet abbia più di una replica.
Gli aggiornamenti in loco non vanno a buon fine o rimangono posticipati
Sintomi:
- Il ridimensionamento in loco del container non viene completato o rimane posticipato.
Causa:
- Capacità del nodo insufficiente: se il nodo non ha capacità sufficiente per le richieste di risorse aggiornate, l'operazione di ridimensionamento in loco viene posticipata.
Risoluzione:
Verifica lo stato del ridimensionamento posticipato e la capacità del nodo:
Se il ridimensionamento rimane posticipato per più di cinque minuti, VerticalPodAutoscaler torna all'eliminazione e alla ricreazione del pod per applicare il suggerimento. Per controllare lo stato dell'aggiornamento posticipato:
Esamina le annotazioni dei pod per verificare se l'annotazione
vpaInPlaceUpdatedè impostata su"true":metadata: annotations: vpaInPlaceUpdated: "true" vpaUpdates: 'Pod resources updated by sample-deployment-vpa: container 0: cpu request, memory request'Controlla lo stato posticipato esaminando il campo
status.conditionsper gli eventi di ridimensionamento posticipato:status: conditions: - type: PodResizePending status: "True" reason: Deferred message: "Node didn't have enough resource: ..."Esamina gli eventi Kubernetes per il pod:
kubectl get events -n NAMESPACE_NAME --field-selector involvedObject.kind=Pod,involvedObject.name=POD_NAMESostituisci quanto segue:
NAMESPACE_NAME: lo spazio dei nomi del pod.POD_NAME: il nome del pod.
Cerca gli eventi con uno dei seguenti motivi:
ResizedPod(aggiornamento in loco riuscito) oEvictedByVPA(ritorno alla ricreazione).
Passaggi successivi
Se non riesci a trovare una soluzione al tuo problema nella documentazione, consulta Richiedere assistenza per ulteriore assistenza, inclusi consigli sui seguenti argomenti:
- Aprire una richiesta di assistenza contattando l'assistenza clienti Google Cloud.
- Richiedere assistenza alla community ponendo
domande su Stack Overflow
e utilizzando il tag
google-kubernetes-engineper cercare problemi simili. Puoi anche unirti al#kubernetes-enginecanale Slack per ulteriore assistenza dalla community. - Aprire richieste di funzionalità o problemi utilizzando lo strumento di monitoraggio pubblico dei problemi.