Questo tutorial mostra come dimensionare correttamente i workload Google Kubernetes Engine (GKE) con i suggerimenti VPA e le metriche di utilizzo.
Comprendere perché il dimensionamento corretto delle risorse è importante
Il provisioning insufficiente può privare i container delle risorse necessarie per eseguire le applicazioni, rendendole lente e inaffidabili. Il provisioning eccessivo non influisce sul rendimento delle tue applicazioni, ma potrebbe aumentare la fattura mensile.
La seguente tabella descrive le implicazioni del provisioning insufficiente e del provisioning eccessivo di CPU e memoria:
| Risorsa | Stato del provisioning | Rischio | Spiegazione | 
|---|---|---|---|
| CPU | Oltre | Costo | Aumenta il costo dei tuoi workload riservando risorse non necessarie. | 
| Sotto | Prestazioni | Può causare il rallentamento o la mancata risposta dei carichi di lavoro. | |
| Non impostato | Affidabilità | La CPU può essere limitata a 0, causando la mancata risposta dei carichi di lavoro. | |
| Memoria | Oltre | Costo | Aumenta il costo dei tuoi workload riservando risorse non necessarie. | 
| Sotto | Affidabilità | Può causare l'interruzione delle applicazioni con un errore di esaurimento della memoria. | |
| Non impostato | Affidabilità | kubelet può interrompere i tuoi pod in qualsiasi momento e contrassegnarli come
non riusciti. | 
    
Crea un repository
Crea il repository per archiviare l'immagine dell'esportatore di metriche.
Crea un nuovo repository Docker:
gcloud artifacts repositories create main --repository-format=docker \ --location=$REGION \ --description="docker repository"Configura l'autenticazione nei repository Docker:
gcloud auth configure-docker $REGION-docker.pkg.devEsegui il deployment dell'immagine lanciando questo comando:
gcloud builds submit metrics-exporter --region=$REGION --tag $IMAGE
Esegui il deployment dell'applicazione
Nella sezione seguente, utilizzerai Terraform per eseguire le seguenti attività:
- Crea un service account e assegna le autorizzazioni necessarie per gestire e interagire con Google Cloud le risorse.
 - Concedi al service account i ruoli Visualizzatore monitoraggio, Editor dati BigQuery, Proprietario dati BigQuery, Utente job BigQuery e Invocatore Cloud Run.
 - Esegui il deployment di un job Cloud Run che estrae un'immagine Docker da Artifact Registry e la esegue con la configurazione specificata.
 - Crea un job Cloud Scheduler che attivi il servizio Cloud Run ogni giorno.
 - Crea un set di dati, una tabella e una vista BigQuery per archiviare i dati delle metriche e i consigli.
 
Configura Terraform
Imposta le variabili di ambiente di configurazione:
export TF_VAR_BIGQUERY_DATASET=gke_metrics_dataset export TF_VAR_BIGQUERY_TABLE=gke_metrics export TF_VAR_RECOMMENDATION_WINDOW_SECONDS=1209600 export TF_VAR_RECOMMENDATION_DISTANCE=86400 export TF_VAR_LATEST_WINDOW_SECONDS=600 export TF_VAR_METRIC_WINDOW=259200 export TF_VAR_METRIC_DISTANCE=600Questo comando include quanto segue:
TF_VAR_BIGQUERY_DATASETeTF_VAR_BIGQUERY_TABLE: contengono i dati delle metriche GKE.TF_VAR_RECOMMENDATION_WINDOW_SECONDS: il periodo di tempo per i suggerimenti di VPA. Il valore predefinito è 1.209.600 secondi, ovvero 14 giorni.TF_VAR_RECOMMENDATION_DISTANCE: l'intervallo in cui vengono restituiti i punti dati del suggerimento di VPA. Il valore predefinito è 86.400 secondi, ovvero ogni giorno.TF_VAR_LATEST_WINDOW_SECONDS: il periodo di tempo per ottenere i valori più recenti delle risorse richieste e limite. Il valore predefinito è 600 secondi, ovvero 10 minuti.METRIC_WINDOW: stabilisce il periodo di tempo per le metriche di utilizzo e utilizzazione di GKE. Il valore predefinito è 259.200 secondi, ovvero 3 giorni.METRIC_DISTANCE: l'intervallo in cui vengono restituiti i punti dati. Il valore predefinito è 600 secondi, ovvero ogni 10 minuti.
Modifica questi valori in base alle esigenze dei tuoi carichi di lavoro. Ad esempio, per i workload batch eseguiti una volta al mese, aggiorna
TF_VAR_RECOMMENDATION_WINDOW_SECONDSeMETRIC_WINDOWa2592000secondi (30 giorni).
Esegui il deployment della configurazione Terraform
Inizializza, convalida e applica la configurazione:
terraform -chdir=terraform init terraform -chdir=terraform validate terraform -chdir=terraform apply -var project_id=$PROJECT_ID -var region=$REGION -var image=$IMAGEQuesto comando fornisce un piano di esecuzione e chiede la tua approvazione prima di apportare modifiche. Esamina il piano e, se tutto è come previsto, digita
yesper procedere.Una volta completato correttamente il comando apply, le risorse vengono create e gestite da Terraform.
Esegui manualmente il job Cloud Scheduler:
gcloud scheduler jobs run recommendation-schedule --location ${REGION}
Verifica il deployment
Seleziona la scheda Log nella pagina dei dettagli di
workload-recommendations.Verifica che i log delle metriche vengano elaborati nella console Cloud Run:
I log mostrano le metriche scritte in BigQuery. L'output dovrebbe essere simile al seguente:
INFO - Building Row INFO - Successfully wrote 12 rows to BigQuery table [PROJECT_ID].gke_metric_dataset.gke_metrics. INFO - Run CompletedSe l'output non corrisponde, attendi cinque minuti ed esegui il comando
gcloud scheduler jobs run recommendation-schedule --location $REGION.
Visualizza il suggerimento per il container in BigQuery
Vai alla pagina BigQuery nella console Google Cloud :
Verifica che i dati siano visibili nella tabella
gke_metricse nella visualizzazionecontainer_recommendations. A seconda del numero di carichi di lavoro, potrebbe essere necessario qualche minuto per scrivere tutte le metriche in BigQuery.Nell'editor di query, seleziona tutte le righe nella visualizzazione
container_recommendations:SELECT * FROM `PROJECT_ID.gke_metrics_dataset.container_recommendations`Questo programma estrae le seguenti metriche da Cloud Monitoring:
Dettagli del workload: ID progetto, nome del cluster, controller e nome del container.
Utilizzo e sfruttamento di CPU/memoria: la quantità di CPU e memoria utilizzata dal workload, nonché la percentuale di CPU e memoria utilizzata.
Richieste e limiti: la quantità di CPU e memoria richiesta per il workload, nonché la quantità massima di CPU e memoria consentita per il workload.
Consigli per il carico di lavoro di CPU e memoria: consigli su quanta CPU e memoria devono essere allocate al carico di lavoro per garantire che venga eseguito senza problemi, in base ai consigli di VPA per i deployment e all'utilizzo effettivo e agli utilizzi target per gli oggetti non di deployment.
Visualizzare i consigli in Looker Studio
Looker Studio è una piattaforma di business intelligence self-service gratuita che ti consente di creare e utilizzare visualizzazioni dei dati, dashboard e report. Con Looker Studio puoi connetterti ai tuoi dati, creare visualizzazioni e condividere i tuoi approfondimenti con altri.
Utilizza Looker Studio per visualizzare i dati nella
visualizzazione container_recommendations di BigQuery:
- Apri il modello di dashboard di ridimensionamento dei workload
 - Fai clic su Utilizza i miei dati.
 - Seleziona il progetto.
 - Per Set di dati, seleziona 
gke_metric_dataset. - Per Tabella, seleziona 
container_recommendations. - Fai clic su Aggiungi.
 - Fai clic su Aggiungi al report.
 
Dettagli del modello di Looker Studio
La pagina dei dettagli del modello di Looker Studio fornisce le seguenti informazioni:
- Panoramica del dimensionamento corretto dei workload GKE: fornisce una panoramica dei tuoi cluster, tra cui:
- Il numero di workload Best Effort e Burstable a rischio di problemi di affidabilità e prestazioni.
 - Potenziali risparmi sulle risorse di CPU e memoria. I valori positivi indicano un provisioning eccessivo, mentre i valori negativi indicano un provisioning insufficiente.
 
 - Suggerimenti per i workload: fornisce suggerimenti per le richieste e i limiti di CPU e memoria dei workload.
 - Carichi di lavoro GKE a rischio: mostra i carichi di lavoro che sono a maggior rischio di riscontrare problemi di affidabilità e prestazioni.
 - Cronologia - Ridimensionamento del workload - Come valuti la tua esperienza?: Fornisce una visualizzazione storica di quanto bene è stato implementato il dimensionamento ottimale del workload e la riduzione del numero di workload Best Effort.
 
Consigli per i container con CPU richiesta e limite
Se i valori di richiesta e limite della CPU dei workload sono uguali, la qualità del servizio è considerata garantita e il consiglio per la CPU è impostato sul valore massimo entro il periodo di tempo di 14 giorni. In caso contrario, viene utilizzato il 95° percentile del consiglio richiesto per la CPU entro 14 giorni.
Quando i valori di richiesta e limite della CPU sono uguali, il consiglio per il limite della CPU viene impostato sulla raccomandazione VPA per la richiesta di CPU massima solo per gli oggetti Deployment e sull'utilizzo della CPU con un utilizzo target del 70%. Se la richiesta e il limite del workload non sono identici, viene utilizzato il rapporto limite esistente.
Memoria richiesta e suggerimento per il limite del container
I consigli sulla memoria utilizzano il consiglio VPA massimo solo per gli oggetti Deployments e l'utilizzo massimo della memoria con un utilizzo target dell'80% per garantire l'affidabilità dei workload. Puoi aggiornare i valori di utilizzo target
nella query della vista container_recommendation.
È una best practice utilizzare la stessa quantità di memoria per richieste e limiti perché la memoria è una risorsa incomprimibile. Quando la memoria è esaurita, il pod deve essere rimosso. Per evitare l'arresto dei pod e la destabilizzazione dell'ambiente, devi impostare la memoria richiesta sul limite di memoria.
Assegnare la priorità ai suggerimenti
A ogni riga viene assegnato un valore di priorità per visualizzare i carichi di lavoro che richiedono attenzione immediata in base ai suggerimenti. Le unità di CPU e memoria sono diverse. Per normalizzare le unità, il prezzo on demand del tipo di macchina E2 tra CPU e memoria predefinite viene utilizzato come approssimazione per convertire le unità di memoria in unità di CPU.
La priorità viene calcolata utilizzando la seguente formula:
priority = (CPU requested - CPU recommendation) + ((memory requested -
memory recommendation) / (vCPUs on-demand pricing /memory on-demand pricing ))
Per Autopilot, le risorse totali richieste dalla configurazione del deployment devono rientrare nei valori minimi e massimi supportati.
Visualizzare i suggerimenti per le VPA per più progetti
Per visualizzare i suggerimenti per i container VPA in più progetti, utilizza un nuovo progetto come progetto di definizione dell'ambito.
Quando esegui il deployment di questo progetto nell'ambiente di produzione, aggiungi tutti i progetti che vuoi analizzare all'ambito delle metriche del nuovo progetto.