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.dev
Esegui 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=600
Questo comando include quanto segue:
TF_VAR_BIGQUERY_DATASET
eTF_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_SECONDS
eMETRIC_WINDOW
a2592000
secondi (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=$IMAGE
Questo comando fornisce un piano di esecuzione e chiede la tua approvazione prima di apportare modifiche. Esamina il piano e, se tutto è come previsto, digita
yes
per 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 Completed
Se 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_metrics
e 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.