Ottieni informazioni chiave sulla spesa per l'allocazione delle risorse e i costi dei cluster GKE


Questa pagina mostra come ottenere informazioni chiave sulla spesa per prendere decisioni informate in merito all'allocazione delle risorse e all'ottimizzazione dei costi utilizzando l'allocazione dei costi di Google Kubernetes Engine (GKE). Scopri la differenza tra l'allocazione dei costi di GKE e la misurazione dell'utilizzo del cluster, le limitazioni dell'allocazione dei costi di GKE, come attivare l'allocazione dei costi di GKE sui cluster nuovi ed esistenti e come filtrare ed eseguire query sull'esportazione BigQuery della fatturazione Cloud.

Questa pagina è rivolta a operatori, architetti cloud, sviluppatori e amministratori dei dati che devono gestire i costi durante la creazione e la configurazione dei cluster e il deployment dei carichi di lavoro in GKE. Per scoprire di più sui ruoli comuni, consulta Ruoli utente e attività comuni di GKE Enterprise.

Prima di leggere questa pagina, ti consigliamo di acquisire familiarità con le best practice per l'esecuzione di applicazioni Kubernetes con ottimizzazione dei costi su GKE.

Potenziale aumento del volume di dati

L'attivazione dell'allocazione dei costi di GKE può aumentare i costi di archiviazione ed esecuzione di query in BigQuery. L'aumento esatto dipende dal numero di combinazioni distinte di etichette e spazi dei nomi che utilizzi in pod e cluster.

L'attivazione dell'allocazione dei costi di GKE non modifica il costo totale del tuo utilizzo di GKE. La somma delle voci di costo nell'esportazione è la stessa e le query e i report esistenti che hai creato nell'esportazione della fatturazione restituiscono gli stessi valori.

Allocazione dei costi di GKE e misurazione dell'utilizzo del cluster

L'allocazione dei costi di GKE è diversa dalla misurazione dell'utilizzo del cluster nei seguenti modi:

  • L'allocazione dei costi di GKE fornisce un'alternativa alla misurazione dell'utilizzo del cluster per ottenere informazioni sul cluster.
  • L'allocazione dei costi di GKE calcola i costi del cluster nel tuo account di fatturazione Cloud anziché aggregare i dati in un modello di Looker Studio.
  • L'allocazione dei costi di GKE ti consente di visualizzare i dati di costo dei cluster nella console di Trusted Cloud fatturazione Cloud e nell'esportazione dettagliata della fatturazione Cloud.

Prima di iniziare

Prima di iniziare, assicurati di aver eseguito le seguenti operazioni:

  • Attiva l'API Google Kubernetes Engine.
  • Attiva l'API Google Kubernetes Engine
  • Se vuoi utilizzare Google Cloud CLI per questa attività, installala e poi inizializzala. Se hai già installato gcloud CLI, scarica l'ultima versione eseguendo gcloud components update.

Limitazioni e restrizioni

  • Puoi visualizzare i dati di allocazione dei costi di GKE solo nell'esportazione dei dati dettagliati sui costi di utilizzo di Cloud Billing BigQuery.
  • Devi disporre di Google Cloud CLI versione 392.0.0 o successive
  • Se abiliti l'allocazione dei costi di GKE, l'esportazione della fatturazione inizia a includere voci aggiuntive per le risorse GKE a partire da quella data. L'esportazione della fatturazione non riempie i dati.
  • Se disattivi l'allocazione dei costi di GKE, l'esportazione della fatturazione non includerà più elementi pubblicitari aggiuntivi, ma non modificherà né rimuoverà gli elementi pubblicitari precedenti generati mentre la funzionalità era attiva.
  • I dati di allocazione dei costi di GKE si basano sulle richieste di risorse, non sulle risorse consumate. Per saperne di più sulle differenze tra richieste di risorse, limiti delle risorse e consumo di risorse, consulta Best practice di Kubernetes: richieste e limiti delle risorse.
  • L'allocazione dei costi di GKE supporta i seguenti tipi di SKU risorsa:
    • SKU vCPU dell'istanza VM di Compute Engine
    • SKU RAM dell'istanza VM di Compute Engine
    • SKU RAM istanza estesa personalizzata VM di Compute Engine
    • SKU GPU dell'istanza VM di Compute Engine
    • SKU per la capacità dei dischi permanenti Compute Engine
    • SKU delle istanze Cloud TPU
  • Se un pod ha più di 50 etichette Kubernetes, nessuna di queste etichette sarà disponibile nella sezione Fatturazione Cloud della console Trusted Cloud o nell'esportazione dettagliata della fatturazione Cloud.
  • Dopo aver abilitato l'allocazione dei costi di GKE, potrebbero essere necessari fino a tre giorni prima che i dati vengano visualizzati nella fatturazione Cloud.
  • L'allocazione dei costi di GKE include i dati dei dischi permanenti con le seguenti eccezioni:
    • Supporta solo le risorse PersistentVolume di cui è stato eseguito il provisioning in modo dinamico tramite PersistentVolumeClaims o volumi effimeri generici.
    • Supporta solo le risorse PersistentVolume di cui è stato eseguito il provisioning dal driver CSI per il disco permanente di Compute Engine o con il plug-in di archiviazione kubernetes.io/gce-pd ritirato con modalità di accesso ReadWriteOnce o ReadWriteOncePod.
    • I dischi permanenti con un uptime inferiore a 30 minuti potrebbero non essere monitorati. I dischi permanenti con almeno 30 minuti di uptime vengono sempre monitorati.
  • La versione di Cloud TPU deve essere Cloud TPU v4 o successive.

Visualizzare i costi del cluster GKE

Quando abiliti l'allocazione dei costi di GKE, il nome del cluster e lo spazio dei nomi dei tuoi carichi di lavoro GKE vengono visualizzati nel campo labels dell'esportazione della fatturazione in BigQuery:

Chiave dell'etichetta della risorsa (labels.key) Valore dell'etichetta della risorsa (labels.value)
Descrizione Le etichette Kubernetes hanno il seguente formato: k8s-label/${k8s-label-key}, dove ${k8s-label-key} è la chiave dell'etichetta Kubernetes del pod. L'etichetta di fatturazione k8s-label/${k8s-label-key} ha lo stesso valore dell'etichetta del pod Kubernetes corrispondente. Se una chiave di etichetta Kubernetes entra in conflitto con una chiave di etichetta VM, il valore dell'etichetta Kubernetes override il valore dell'etichetta VM. Le etichette delle risorse del cluster e pool di nodi vengono applicate alle risorse utilizzando la seguente priorità dalla più alta alla più bassa:
  • Singola risorsa, ad esempio istanza o spazio di archiviazione
  • Node pool
  • Cluster
Nome del cluster goog-k8s-cluster-name [cluster-name]
Spazio dei nomi k8s-namespace [namespace]
Tipo di workload k8s-workload-type [workload-type]
(ad es. apps/v1-Deployment,apps/v1-StatefulSet,apps/v1-DaemonSet,apps/v1-ReplicaSet,batch/v1-Job,batch/v1-CronJob,core/v1-Pod)
Nome workload k8s-workload-name [workload-name]

Per ulteriori informazioni, consulta Schema dei dati dettagliati sui costi di utilizzo.

Inoltre, i seguenti spazi dei nomi vengono utilizzati per monitorare le risorse generali e non allocate:

  • kube:system-overhead: questo valore tiene conto delle risorse del nodo non disponibili per i pod. Queste risorse vengono riservate dal sistema per l'esecuzione del framework Kubernetes (incluso, a titolo esemplificativo, kubelet, kube-proxy, containerd). Questa è la differenza tra la capacità del nodo e le risorse allocabili.
  • kube:unallocated: Le risorse non vengono richieste dai carichi di lavoro né per l'overhead di sistema.

Se GKE non riesce a determinare l'allocazione dei costi per una risorsa, l'esportazione include uno dei seguenti valori:

  • goog-k8s-unknown: Fatturazione Cloud non è riuscita a elaborare lo SKU. Ciò può verificarsi quando viene eseguito il provisioning di una nuova istanza Compute Engine. Puoi aspettarti alcuni valori goog-k8s-unknown durante l'avvio e l'arresto dei nodi, ad esempio quando GKE esegue lo scale automatico di un cluster.
  • goog-k8s-unsupported-sku: l'allocazione dei costi di GKE non supporta questo SKU. Consideralo come <blank>/NULL. Non vi è alcuna garanzia che uno SKU sia sempre etichettato con questo valore.
  • <blank>/NULL: l'allocazione dei costi di GKE non monitora questa risorsa. Ciò può verificarsi quando l'allocazione dei costi GKE non è attivata o la risorsa non appartiene a un cluster gestito da GKE.

I costi per i dischi permanenti vengono monitorati quando il backing del Persistent Disk PersistentVolumeClaims viene rivendicato dai pod. I costi del disco permanente ereditano tutti i metadati, come le etichette e gli spazi dei nomi dei pod, del pod richiedente, finché non vengono eliminati i relativi PersistentVolumeClaims. Per PersistentVolumeClaims che vengono eliminati ma conservano PersistentVolumes in base alle norme di recupero, i costi dei dischi permanenti vengono monitorati come non allocati.

Le etichette applicate direttamente a PersistentVolumeClaims non vengono visualizzate nella sezione Fatturazione Cloud della console Trusted Cloud o nell'esportazione dettagliata della fatturazione Cloud.

Per la RAM estesa, la stessa proporzione del costo totale viene allocata a un carico di lavoro sia per gli SKU RAM normale che per gli SKU RAM estesa in base alla risorsa richiesta.

Abilita l'allocazione dei costi di GKE

Puoi attivare l'allocazione dei costi di GKE su un cluster nuovo o esistente utilizzando gcloud CLI o la console Trusted Cloud .

Crea un nuovo cluster

gcloud

Crea un cluster utilizzando il flag --enable-cost-allocation:

gcloud container clusters create CLUSTER_NAME \
    --enable-cost-allocation \
    --location=CONTROL_PLANE_LOCATION

Sostituisci quanto segue:

  • CLUSTER_NAME: il nome del nuovo cluster.
  • CONTROL_PLANE_LOCATION: la posizione di Compute Engine del control plane del tuo cluster. Fornisci una regione per i cluster regionali o una zona per i cluster zonali.

Console

Per abilitare l'allocazione dei costi di GKE quando crei un nuovo cluster, procedi nel seguente modo:

  1. Nella console Trusted Cloud , vai alla pagina Crea un cluster Kubernetes.

    Vai a Crea un cluster Kubernetes

  2. Configura il cluster.

  3. Nel riquadro di navigazione, in Cluster, fai clic su Funzionalità.

  4. Nella sezione Altro, seleziona la casella di controllo Attiva allocazione dei costi.

  5. Configura il cluster in base alle esigenze, quindi fai clic su Crea.

Aggiorna un cluster

gcloud

Aggiorna un cluster utilizzando il flag --enable-cost-allocation:

gcloud container clusters update CLUSTER_NAME \
    --enable-cost-allocation

Sostituisci CLUSTER_NAME con il nome del cluster.

Console

Per abilitare l'allocazione dei costi di GKE su un cluster esistente, procedi nel seguente modo:

  1. Vai alla pagina Google Kubernetes Engine nella console Trusted Cloud . Vai a Google Kubernetes Engine
  2. Fai clic sul nome del cluster da modificare.
  3. Nella pagina Cluster, nella sezione Funzionalità, fai clic su accanto a Allocazione dei costi.
  4. Nella finestra di dialogo Modifica allocazione dei costi, seleziona la casella di controllo Abilita allocazione dei costi.
  5. Fai clic su Salva modifiche.

Verifica che l'allocazione dei costi di GKE sia abilitata

gcloud

Descrivi il cluster:

gcloud container clusters describe CLUSTER_NAME

L'output è simile al seguente:

...
costManagementConfig:
  enabled: true
...

In questo output, costManagementConfig indica che l'allocazione dei costi di GKE è abilitata.

Console

Per verificare se l'allocazione dei costi di GKE è abilitata in un cluster esistente:

  1. Vai alla pagina Google Kubernetes Engine nella console Trusted Cloud . Vai a Google Kubernetes Engine
  2. Fai clic sul nome del cluster da modificare.
  3. Nella pagina Cluster, nella sezione Funzionalità, accanto ad Allocazione dei costi viene indicato se l'allocazione dei costi di GKE è abilitata.

Filtrare i dati di costo di GKE

Gli esempi di query riportati di seguito mostrano come filtrare e raggruppare i costi di GKE per i tipi di risorse supportati in base a nome del cluster, spazio dei nomi ed etichetta.

Sostituisci BILLING_DATASET_TABLE con il nome del set di dati che hai creato in BigQuery.

Il nome della tabella è simile a gcp_billing_export_resource_v1_<BILLING_ACCOUNT_ID>.

Esegui la pulizia

Per evitare che al tuo account Trusted Cloud vengano addebitati costi relativi alle risorse utilizzate in questa pagina, disattiva l'allocazione dei costi di GKE per il cluster:

gcloud container clusters update CLUSTER_NAME \
    --no-enable-cost-allocation

Puoi anche eliminare il cluster che hai creato.

Passaggi successivi