GKE su Bare Metal include diverse opzioni per il logging e il monitoraggio dei cluster, tra cui servizi gestiti basati su cloud, strumenti open source e compatibilità convalidata con soluzioni commerciali di terze parti. Questa pagina descrive queste opzioni e fornisce alcune indicazioni di base per scegliere la soluzione adeguata per il tuo ambiente.
Opzioni per GKE su Bare Metal
Esistono diverse opzioni di logging e monitoraggio per GKE su Bare Metal:
- Cloud Logging e Cloud Monitoring abilitati per impostazione predefinita sui componenti di sistema Bare Metal.
- Prometheus e Grafana sono disponibili da Cloud Marketplace.
- Configurazioni convalidate con soluzioni di terze parti.
Cloud Logging e Cloud Monitoring
La suite operativa di Google Cloud è la soluzione di osservabilità integrata per Google Cloud. Offre una soluzione di logging completamente gestita, raccolta di metriche, monitoraggio, creazione di dashboard e avvisi. Cloud Monitoring monitora GKE sui cluster Bare Metal in modo simile ai cluster GKE basati su cloud.
Gli agenti possono essere configurati per modificare l'ambito di logging e monitoraggio, nonché il livello di metriche raccolte:
- L'ambito del logging e del monitoraggio può essere impostato solo sui componenti di sistema (impostazione predefinita) o su componenti e applicazioni del sistema.
- Il livello di metriche raccolte può essere configurato per un insieme ottimizzato di metriche (predefinito) o per metriche complete.
Per ulteriori informazioni, consulta Configurazione degli agenti Stackdriver per GKE su Bare Metal in questo documento.
Logging e Monitoring offrono un'unica soluzione di osservabilità basata su cloud potente e facile da configurare. Consigliamo vivamente Logging e Monitoring per l'esecuzione di carichi di lavoro solo su GKE su Bare Metal o su carichi di lavoro su GKE e GKE su Bare Metal. Per le applicazioni con componenti in esecuzione su GKE su Bare Metal e nell'infrastruttura on-premise standard, puoi prendere in considerazione altre soluzioni per una visione end-to-end di queste applicazioni.
Per maggiori dettagli su architettura, configurazione e quali dati vengono replicati nel progetto Google Cloud per impostazione predefinita, consulta Come funzionano Logging e Monitoring per GKE su Bare Metal.
Per ulteriori informazioni su Logging, consulta la documentazione di Cloud Logging.
Per ulteriori informazioni su Monitoring, consulta la documentazione di Cloud Monitoring.
Per informazioni su come visualizzare e utilizzare le metriche di utilizzo delle risorse di Cloud Monitoring da GKE su Bare Metal a livello di parco risorse, consulta Utilizzare la panoramica di GKE Enterprise.
Prometheus e Grafana
Prometheus e Grafana sono due popolari prodotti di monitoraggio open source disponibili in Cloud Marketplace:
Prometheus raccoglie metriche delle applicazioni e del sistema.
alertmanager gestisce l'invio degli avvisi con diversi meccanismi di avviso.
Grafana è uno strumento per la creazione di dashboard.
Prometheus e Grafana possono essere abilitati su ogni cluster di amministrazione e cluster utente. Prometheus e Grafana sono consigliati per i team che si occupano di applicazioni con esperienza pregressa con questi prodotti. Questi prodotti sono consigliati anche per i team operativi che preferiscono conservare le metriche delle applicazioni all'interno del cluster e per risolvere i problemi quando si perde la connettività di rete.
Soluzioni di terze parti
Google ha collaborato con diversi provider di soluzioni di logging e monitoraggio di terze parti per far sì che i loro prodotti funzionino bene con GKE su Bare Metal. tra cui Datadog, Elastic e Splunk. In futuro verranno aggiunte altre terze parti convalidate.
Per utilizzare soluzioni di terze parti con GKE su Bare Metal, sono disponibili le seguenti guide:
- Monitoraggio di GKE su Bare Metal con Elastic Stack
- Raccogli i log su GKE su Bare Metal con Splunk Connect
Come funzionano Logging e Monitoring per GKE su Bare Metal
Cloud Logging e Cloud Monitoring vengono installati e attivati in ogni cluster quando crei un nuovo cluster di amministrazione o utente.
Gli agenti Stackdriver includono diversi componenti su ciascun cluster:
Stackdriver Operator (
stackdriver-operator-*
). Gestisce il ciclo di vita di tutti gli altri agenti Stackdriver di cui è stato eseguito il deployment nel cluster.Risorsa personalizzata Stackdriver. Una risorsa creata automaticamente nell'ambito del processo di installazione di GKE su Bare Metal.
Agente metriche GKE (
gke-metrics-agent-*
). Un DaemonSet basato su OpenTelemetry Collector che esegue il scraping delle metriche da ciascun nodo a Cloud Monitoring. Sono inclusi anche un DaemonSetnode-exporter
e un deploymentkube-state-metrics
per fornire più metriche sul cluster.Stackdriver Log Forwarder (
stackdriver-log-forwarder-*
). Un DaemonSet Fluent Bit che inoltra i log da ogni macchina a Cloud Logging. Il forwarding di log memorizza le voci di log nel nodo localmente e le invia di nuovo per un massimo di 4 ore. Se il buffer si riempie o se il forwardinger non riesce a raggiungere l'API Cloud Logging per più di 4 ore, i log vengono eliminati.Agente metadati Anthos (
stackdriver-metadata-agent-
). Un deployment che invia metadati per risorse Kubernetes, come pod, deployment o nodi, all'API Config Monitoring for Ops. Questi dati vengono utilizzati per arricchire le query sulle metriche permettendoti di eseguire query in base al nome del deployment, al nome del nodo o anche al nome del servizio Kubernetes.
Puoi visualizzare gli agenti installati da Stackdriver eseguendo questo comando:
kubectl -n kube-system get pods -l "managed-by=stackdriver"
L'output di questo comando è simile al seguente:
kube-system gke-metrics-agent-4th8r 1/1 Running 1 (40h ago) 40h
kube-system gke-metrics-agent-8lt4s 1/1 Running 1 (40h ago) 40h
kube-system gke-metrics-agent-dhxld 1/1 Running 1 (40h ago) 40h
kube-system gke-metrics-agent-lbkl2 1/1 Running 1 (40h ago) 40h
kube-system gke-metrics-agent-pblfk 1/1 Running 1 (40h ago) 40h
kube-system gke-metrics-agent-qfwft 1/1 Running 1 (40h ago) 40h
kube-system kube-state-metrics-9948b86dd-6chhh 1/1 Running 1 (40h ago) 40h
kube-system node-exporter-5s4pg 1/1 Running 1 (40h ago) 40h
kube-system node-exporter-d9gwv 1/1 Running 2 (40h ago) 40h
kube-system node-exporter-fhbql 1/1 Running 1 (40h ago) 40h
kube-system node-exporter-gzf8t 1/1 Running 1 (40h ago) 40h
kube-system node-exporter-tsrpp 1/1 Running 1 (40h ago) 40h
kube-system node-exporter-xzww7 1/1 Running 1 (40h ago) 40h
kube-system stackdriver-log-forwarder-8lwxh 1/1 Running 1 (40h ago) 40h
kube-system stackdriver-log-forwarder-f7cgf 1/1 Running 2 (40h ago) 40h
kube-system stackdriver-log-forwarder-fl5gf 1/1 Running 1 (40h ago) 40h
kube-system stackdriver-log-forwarder-q5lq8 1/1 Running 2 (40h ago) 40h
kube-system stackdriver-log-forwarder-www4b 1/1 Running 1 (40h ago) 40h
kube-system stackdriver-log-forwarder-xqgjc 1/1 Running 1 (40h ago) 40h
kube-system stackdriver-metadata-agent-cluster-level-5bb5b6d6bc-z9rx7 1/1 Running 1 (40h ago) 40h
Metriche di Cloud Monitoring
Per un elenco delle metriche raccolte da Cloud Monitoring, consulta Visualizzare le metriche di GKE su Bare Metal.
Configurazione degli agenti Stackdriver per GKE su Bare Metal
Gli agenti Stackdriver installati con GKE su Bare Metal raccolgono dati sui componenti di sistema per la manutenzione e la risoluzione dei problemi dei cluster. Le seguenti sezioni descrivono la configurazione e le modalità operative di Stackdriver.
Solo componenti di sistema (modalità predefinita)
Al momento dell'installazione, gli agenti Stackdriver vengono configurati per impostazione predefinita per raccogliere log e metriche, inclusi i dettagli delle prestazioni (ad esempio utilizzo di CPU e memoria) e metadati simili, per i componenti di sistema forniti da Google. Questi includono tutti i carichi di lavoro nel cluster di amministrazione e, per i cluster utente, i carichi di lavoro negli spazi dei nomi kube-system, gke-system, gke-connect, istio-system e config-management-system.
Applicazioni e componenti di sistema
Per abilitare il logging e il monitoraggio delle applicazioni oltre alla modalità predefinita, segui i passaggi descritti in Abilitare il logging e il monitoraggio delle applicazioni.
Metriche ottimizzate (metriche predefinite)
Per impostazione predefinita, i deployment kube-state-metrics
in esecuzione nel cluster raccolgono e segnalano un set ottimizzato di metriche kube alla suite operativa di Google Cloud (in precedenza Stackdriver).
Sono necessarie meno risorse per raccogliere questo insieme ottimizzato di metriche, che migliora le prestazioni e la scalabilità complessive.
Per disabilitare le metriche ottimizzate (opzione sconsigliata), esegui l'override dell'impostazione predefinita nella risorsa personalizzata Stackdriver.
Configurazione delle risorse dei componenti Stackdriver
Quando crei un cluster, GKE su Bare Metal crea automaticamente una risorsa personalizzata Stackdriver. Puoi modificare la specifica nella risorsa personalizzata per eseguire l'override dei valori predefiniti per le richieste e i limiti di CPU e memoria per un componente Stackdriver. Puoi anche eseguire separatamente l'override dell'impostazione predefinita delle metriche ottimizzate.
Override delle richieste e dei limiti di CPU e memoria predefiniti per un componente Stackdriver
I cluster con un'alta densità di pod introducono un overhead per il logging e il monitoraggio più elevato. In casi estremi, i componenti di Stackdriver potrebbero segnalare un utilizzo vicino al limite di utilizzo di CPU e memoria o persino essere soggetti a riavvii costanti a causa dei limiti delle risorse. In questo caso, per eseguire l'override dei valori predefiniti per le richieste e i limiti di CPU e memoria per un componente Stackdriver, segui questi passaggi:
Esegui questo comando per aprire la risorsa personalizzata Stackdriver in un editor della riga di comando:
kubectl -n kube-system edit stackdriver stackdriver
Nella risorsa personalizzata Stackdriver, aggiungi la sezione
resourceAttrOverride
sotto il campospec
:resourceAttrOverride: DAEMONSET_OR_DEPLOYMENT_NAME/CONTAINER_NAME: LIMITS_OR_REQUESTS: RESOURCE: RESOURCE_QUANTITY
Tieni presente che la sezione
resourceAttrOverride
sostituisce tutti i limiti e le richieste predefiniti esistenti per il componente specificato.resourceAttrOverride
supporta i seguenti componenti:gke-metrics-agent/gke-metrics-agent
stackdriver-log-forwarder/stackdriver-log-forwarder
stackdriver-metadata-agent-cluster-level/metadata-agent
node-exporter/node-exporter
kube-state-metrics/kube-state-metrics
Un file di esempio ha il seguente aspetto:
apiVersion: addons.gke.io/v1alpha1 kind: Stackdriver metadata: name: stackdriver namespace: kube-system spec: anthosDistribution: baremetal projectID: my-project clusterName: my-cluster clusterLocation: us-west-1a resourceAttrOverride: gke-metrics-agent/gke-metrics-agent: requests: cpu: 110m memory: 240Mi limits: cpu: 200m memory: 4.5Gi
Per salvare le modifiche apportate alla risorsa personalizzata Stackdriver, salva ed esci dall'editor della riga di comando.
Controlla l'integrità del pod:
kubectl -n kube-system get pods -l "managed-by=stackdriver"
Una risposta per un pod integro ha il seguente aspetto:
gke-metrics-agent-4th8r 1/1 Running 1 40h
Controlla le specifiche del pod del componente per assicurarti che le risorse siano impostate correttamente.
kubectl -n kube-system describe pod POD_NAME
Sostituisci
POD_NAME
con il nome del pod che hai appena modificato. Ad esempio,gke-metrics-agent-4th8r
.La risposta sarà simile alla seguente:
Name: gke-metrics-agent-4th8r Namespace: kube-system ... Containers: gke-metrics-agent: Limits: cpu: 200m memory: 4.5Gi Requests: cpu: 110m memory: 240Mi ...
Disattiva le metriche ottimizzate
Per impostazione predefinita, i deployment kube-state-metrics
in esecuzione nel cluster raccolgono e segnalano a Stackdriver un set ottimizzato di metriche kube. Se ti servono metriche aggiuntive, ti consigliamo di trovarne una sostitutiva nell'elenco delle metriche di GKE su Bare Metal.
Ecco alcuni esempi di sostituzioni che potresti utilizzare:
Metrica disabilitata | Sostituzioni |
---|---|
kube_pod_start_time |
container/uptime |
kube_pod_container_resource_requests |
container/cpu/request_cores container/memory/request_bytes |
kube_pod_container_resource_limits |
container/cpu/limit_cores container/memory/limit_bytes |
Per disattivare l'impostazione predefinita delle metriche ottimizzate (non consigliato):
Apri la risorsa personalizzata Stackdriver in un editor della riga di comando:
kubectl -n kube-system edit stackdriver stackdriver
Imposta il campo
optimizedMetrics
sufalse
:apiVersion: addons.gke.io/v1alpha1 kind: Stackdriver metadata: name: stackdriver namespace: kube-system spec: anthosDistribution: baremetal projectID: my-project clusterName: my-cluster clusterLocation: us-west-1a optimizedMetrics: false
Salva le modifiche ed esci dall'editor della riga di comando.
Server delle metriche
Metrics Server è l'origine delle metriche delle risorse del container per varie pipeline di scalabilità automatica. Metrics Server recupera le metriche da kubelets e le espone tramite l'API Kubernetes Metrics. HPA e VPA usano queste metriche per determinare quando attivare la scalabilità automatica. Il server delle metriche viene scalato tramite il resizer dei componenti aggiuntivi.
Nei casi estremi in cui un'elevata densità dei pod crea un sovraccarico di logging e monitoraggio, Metrics Server potrebbe essere arrestato e riavviato a causa di limitazioni delle risorse. In questo caso, puoi allocare più risorse al server delle metriche modificando la mappa di configurazione metrics-server-config
nello spazio dei nomi gke-managed-metrics-server e cambiando il valore di cpuPerNode
e memoryPerNode
.
kubectl edit cm metrics-server-config -n gke-managed-metrics-server
I contenuti di esempio di ConfigMap sono:
apiVersion: v1
data:
NannyConfiguration: |-
apiVersion: nannyconfig/v1alpha1
kind: NannyConfiguration
cpuPerNode: 3m
memoryPerNode: 20Mi
kind: ConfigMap
Dopo aver aggiornato ConfigMap, ricrea i pod del server delle metriche con il comando seguente:
kubectl delete pod -l k8s-app=metrics-server -n gke-managed-metrics-server
Requisiti di configurazione per Logging e Monitoring
Esistono diversi requisiti di configurazione per abilitare Cloud Logging e Cloud Monitoring con GKE su Bare Metal. Questi passaggi sono inclusi in Configurare un account di servizio da utilizzare con Logging e Monitoring nella pagina Abilitazione dei servizi Google e nel seguente elenco:
- È necessario creare un'area di lavoro di Cloud Monitoring all'interno del progetto Google Cloud. A questo scopo, fai clic su Monitoring nella console Google Cloud e segui il flusso di lavoro.
Devi abilitare le seguenti API Stackdriver:
Devi assegnare i seguenti ruoli IAM all'account di servizio utilizzato dagli agenti Stackdriver:
logging.logWriter
monitoring.metricWriter
stackdriver.resourceMetadata.writer
monitoring.dashboardEditor
opsconfigmonitoring.resourceMetadata.writer
Prezzi
Non è previsto alcun costo per i log e le metriche di sistema di GKE Enterprise.
In un cluster GKE su Bare Metal, i log di sistema e le metriche di GKE Enterprise includono quanto segue:
- Log e metriche di tutti i componenti in un cluster di amministrazione
- Log e metriche dei componenti in questi spazi dei nomi in un cluster utente:
kube-system
,gke-system
,gke-connect
,knative-serving
,istio-system
,monitoring-system
,config-management-system
,gatekeeper-system
,cnrm-system
Per ulteriori informazioni, consulta la sezione Prezzi della suite operativa di Google Cloud.
Per scoprire di più sul credito per le metriche di Cloud Logging, contatta il team di vendita per i prezzi.