Cos'è il monitoraggio Kubernetes?

31 luglio 2023

Cos'è il monitoraggio di Kubernetes?

Il monitoraggio Kubernetes si riferisce al processo di raccolta e analisi dei dati relativi alle caratteristiche di stato di salute, prestazioni e costo delle applicazioni containerizzate che vengono eseguite all'interno di un cluster Kubernetes.

Kubernetes, noto anche come K8s o kube, è una piattaforma di orchestrazione dei container per la pianificazione e l'automazione delle operazioni di distribuzione, gestione e scalabilità delle applicazioni in container. Originariamente ideato da Google, il progetto è ora gestito dalla Cloud Native Computing Foundation (CNCF).

Il monitoraggio dei cluster Kubernetes consente agli amministratori e agli utenti di tenere traccia di cose come il tempo di attività, l'utilizzo delle risorse del cluster e l'interazione tra i componenti del cluster. Il monitoraggio consente di identificare rapidamente problemi come risorse insufficienti, errori, pod non in grado di avviarsi e nodi che non possono essere aggiunti al cluster.

Le applicazioni su Kubernetes fornite come microservizi cloud-native hanno un ordine di grandezza maggiore di componenti che comunicano tra loro. Distribuite su più istanze e persino su più sedi, le architetture moderne aggiungono nuove complessità alle attività quotidiane di monitoraggio, allerta e risoluzione dei problemi.

Inoltre, la natura effimera dei container può ostacolare le attività di risoluzione dei problemi. I container di solito vivono quanto il processo in esecuzione al loro interno e scompaiono quando questo processo muore. Questa è una delle parti più impegnative della risoluzione dei problemi dei container. Quando i container muoiono o vengono riprogrammati su nodi alternativi, i dati necessari per la risposta agli incidenti potrebbero non esistere più.

Sebbene Kubernetes disponga di operatori di cluster integrati per monitorare i cluster e inviare avvisi in base all'esecuzione dei pod, gli strumenti open source e le soluzioni di monitoraggio di terze parti aiutano a fornire piena visibilità in un ambiente K8s.

Veduta aerea di uno snodo di autostrade

Rimani con la testa nel cloud 


Ricevi la newsletter settimanale Think per una guida esperta sull'ottimizzazione delle impostazioni multicloud nell'era dell'AI.

Benefici del monitoraggio Kubernetes

Un corretto monitoraggio di Kubernetes offre una serie di vantaggi, dal mantenimento della stabilità e della reattività delle prestazioni delle applicazioni al miglioramento della sicurezza e della conformità.

Ottimizzazione delle prestazioni

Monitorando e analizzando metriche come il consumo della CPU, l'utilizzo della memoria, il traffico di rete e i tempi di risposta, è possibile identificare le aree di inefficienza, ottimizzare l'allocazione delle risorse e mettere a punto un'infrastruttura Kubernetes per garantire prestazioni ottimali.

Ciò può tradursi in una migliore velocità di risposta dell'applicazione e una migliore esperienza utente.

Utilizzo efficiente delle risorse

Monitorando le metriche sull'utilizzo delle risorse come l'utilizzo della CPU, il consumo di memoria e il traffico di rete, è possibile identificare i nodi Kubernetes sottoutilizzati o sovrautilizzati, ottimizzare l'allocazione delle risorse e prendere decisioni informate sulla scalabilità dell'infrastruttura.

Ciò consente di garantire che le applicazioni dispongano delle risorse necessarie per funzionare in modo ottimale, con l'ulteriore vantaggio di ridurre i costi.

Rilevamento proattivo dei problemi

Alert e notifiche aiutano a identificare e risolvere in modo proattivo la causa principale dei problemi di Kubernetes prima che causino interruzioni o tempi di inattività.

I risultati sono una migliore stabilità del sistema e un impatto minimo dei potenziali problemi su applicazioni e utenti.

Risoluzione rapida dei problemi e debugging

I registri di monitoraggio, gli eventi e le metriche aiutano a identificare e diagnosticare rapidamente i problemi, come i guasti dei pod, i limiti delle risorse, i problemi di rete o gli errori delle applicazioni.

Accelerando il processo di debug, i tempi di inattività vengono ridotti e le applicazioni rimangono disponibili.

Pianificazione e scalabilità della capacità

Analizzando i dati storici e monitorando le tendenze nell'utilizzo delle risorse, è possibile fare una previsione del fabbisogno futuro di risorse, identificare quando sono necessarie più risorse Kubernetes e pianificare la scalabilità dei cluster di conseguenza.

In definitiva, l'aumento delle richieste di workload non porterà a carenze di risorse.

Sicurezza e conformità avanzate

Il monitoraggio dei log di Kubernetes, del traffico di rete e dei modelli di accesso facilita l'identificazione di attività anomale, potenziali violazioni e tentativi di accesso non autorizzati.

Inoltre, garantire che i controlli e le politiche di sicurezza adeguati siano in atto e monitorati attivamente aiuta a mantenere la conformità agli standard e alle normative.

Quali metriche K8s devono essere monitorate

La visibilità completa di uno stack Kubernetes richiede che vengano raccolti i dati di telemetria sui container che vengono costantemente creati, distrutti e che effettuano chiamate tra loro, oltre a raccogliere dati di telemetria sul cluster Kubernetes stesso.

Monitoraggio a livello di cluster

Per il monitoraggio dei cluster, esistono diverse metriche da seguire a livello di cluster, che aiutano a determinare lo stato di salute generale di un cluster Kubernetes.

Funzioni dei nodi: il monitoraggio del corretto funzionamento di tutti i nodi del cluster e della capacità consente di determinare quali risorse cloud sono necessarie per eseguire il cluster.

Disponibilità dei nodi: il monitoraggio del numero di nodi del cluster disponibili aiuta a determinare quali risorse cloud vengono pagate (se si utilizza un provider cloud come Microsoft Azure) e come viene utilizzato il cluster.

Utilizzo delle risorse dei nodi: il monitoraggio del modo in cui il cluster nel suo complesso utilizza le risorse (memoria, CPU, larghezza di banda e utilizzo del disco) consente di prendere decisioni informate sull'opportunità di aumentare o diminuire le dimensioni o il numero di nodi in un cluster.

Numero di pod in esecuzione: il monitoraggio dei pod in esecuzione mostra se il numero di nodi disponibili è sufficiente e, in caso di errore di un nodo, se sono in grado di gestire o meno l'intero workload del pod.

Monitoraggio a livello di pod

Il monitoraggio a livello di pod è necessario per garantire che i singoli pod all'interno di un cluster Kubernetes funzionino correttamente. Ciò comporta l'esame di tre tipi di metriche: metriche Kubernetes, metriche dei container e metriche delle applicazioni..

1. Metriche di Kubernetes

Il monitoraggio delle metriche Kubernetes consente di garantire che tutti i pod in una distribuzione Kubernetes siano in esecuzione e integri.

Numero di istanze del pod: se il numero attuale di istanze di un pod è basso rispetto a quante ne erano previste, il cluster potrebbe avere esaurito le risorse.

Stato dei pod: capire se i pod sono in esecuzione e quanti sono in sospeso, guasti o terminati offre visibilità sulla loro disponibilità e stabilità.

Riavvii del pod: il monitoraggio del numero di riavvii di un pod indica la stabilità dell'applicazione all'interno del pod. In caso di riavvii frequenti, potrebbe trattarsi di un problema di fondo, come un crash o una limitazione delle risorse.

Utilizzo della CPU: il monitoraggio del consumo della CPU di un pod aiuta a identificare potenziali colli di bottiglia delle prestazioni e a garantire che i pod dispongano di sufficienti risorse di elaborazione.

Utilizzo della memoria: il monitoraggio del consumo di memoria di un pod aiuta a rilevare perdite di memoria o un suo utilizzo eccessivo, che potrebbero influire sulla stabilità di un'applicazione.

Utilizzo della rete: il monitoraggio dei byte inviati/ricevuti di un pod fornisce insight dettagliati sui relativi modelli di comunicazione e consente di identificare eventuali problemi di rete.

Le metriche di Kubernetes includono anche controlli dello stato di salute, dati di rete e l'andamento dell'implementazione in corso  (ad es. il numero di istanze modificate da una versione precedente a una nuova).

2. Metriche dei container

Il monitoraggio delle metriche del container pod consente di determinare quanto si è vicini ai limiti delle risorse configurati. Queste metriche consentono anche di rilevare i pod bloccati in un CrashLoopBackOff.

Utilizzo/throttling della CPU: il monitoraggio del modo in cui i container in esecuzione consumano la CPU aiuta a identificare quelli che richiedono molte risorse o creano colli di bottiglia e che potrebbero influire sulle prestazioni complessive del cluster. Il monitoraggio delle metriche di throttling della CPU evidenzia se i container sono limitati nell'uso della CPU a causa di vincoli di risorse o di configurazioni errate.

Utilizzo della memoria: il monitoraggio del consumo di memoria dei container in esecuzione evidenzia problemi come perdite di memoria, uso eccessivo di memoria o allocazione insufficiente di quest'ultima, che potrebbero influire sulla stabilità del container e sulle prestazioni complessive del sistema.

Traffico/errori di rete: il monitoraggio del traffico di rete dei container, nonché errori come la perdita di pacchetti o guasti di connessione, aiuta a valutare i loro schemi di comunicazione e l'uso eccessivo della rete o i picchi di traffico inaspettati.

3. Metriche delle applicazioni

Il monitoraggio delle metriche delle applicazioni aiuta a misurare le prestazioni e la disponibilità delle applicazioni in esecuzione nei pod Kubernetes. Queste metriche sono in genere sviluppate dall'applicazione Kubernetes stessa e si riferiscono alle business rule che affronta, come latenza, reattività, tassi di errore e tempi di risposta.

AI Academy

Prepararsi all'AI con l'hybrid cloud

Condotto dai migliori leader di pensiero di IBM, il programma di studi è stato progettato per aiutare i dirigenti aziendali ad acquisire le conoscenze necessarie per dare priorità agli investimenti in AI che possono favorire la crescita.

Best practice per il monitoraggio di Kubernetes

Di seguito sono riportate alcune best practice da considerare per monitorare con successo gli ambienti Kubernetes.

Usa Kubernetes DaemonSets: i DaemonSets consentono di distribuire un agente che monitora ogni nodo del suo ambiente Kubernetes e tutte le risorse su quel nodo nell'intero cluster Kubernetes. I Daemons aiutano a garantire che gli host appaiano e siano pronti a fornire metriche.

Fai un uso intelligente delle etichette: la creazione di uno schema di etichettatura logico, coerente e coerente semplifica l'identificazione dei diversi componenti da parte dei team DevOps e consente di ottenere il massimo valore dal monitoraggio di Kubernetes.

Use Service Discovery: Service Discovery per Google Kubernetes Engine (GKE) ti consente di monitorare continuamente le sue applicazioni anche se non sai dove sono in esecuzione. Adatta automaticamente la raccolta delle metriche ai container in movimento per una comprensione più completa dello stato di salute di un cluster.

Imposta alert e notifiche: configura alert per metriche critiche, come l'utilizzo della CPU o della memoria, e ricevi una notifica quando tali metriche raggiungono determinate soglie. Gli strumenti di monitoraggio con avvisi intelligenti aiutano a minimizzare lo stress da avvisi eccessivi, in quanto inviano avvisi solo per eventi o cambiamenti significativi.

Monitor gli elementi del piano di controllo: il monitoraggio regolare degli elementi del piano di controllo Kubernetes, come il server API, kube-dns, kubelet, kube-proxy, etcd e controller manager, garantisce che i servizi cluster funzionino senza problemi.

Monitora l'esperienza utente: anche se non viene misurato in modo nativo nella piattaforma Kubernetes, il monitoraggio dell'esperienza utente può talvolta segnalare i problemi prima che vengano rilevati all'interno del cluster.

Utilizza strumenti integrati e open source: indipendentemente dai tuoi casi d'uso, sfrutta gli strumenti di monitoraggio Kubernetes integrati, come Kubernetes Dashboard, cAdvisor (Container Advisor) e Kube-state-metrics, nonché gli strumenti open source più comuni, tra cui Prometheus, Grafana, Jaeger ed Elastic Stack (precedentemente ELK Stack). Oltre all'implementazione, alla risoluzione dei problemi e al monitoraggio, questi strumenti offrono funzioni aggiuntive come la visualizzazione dei dati e la raccolta e l'archiviazione di metriche di serie temporali da varie fonti.

Utilizza una soluzione di monitoraggio K8s basata su SaaS: per semplificare la gestione, lo sviluppo dell'infrastruttura e i costi di Kubernetes, oltre a ricevere aggiornamenti regolari, utilizza un sistema di monitoraggio basato su SaaS con automazione integrata anziché on-premise.

Soluzioni correlate
Monitoraggio Kubernetes - IBM Instana

Osserva, monitora e correggi automaticamente l'intero cluster di Kubernetes per migliorare le prestazioni e la disponibilità delle applicazioni.

Esplora IBM Instana
Servizi di consulenza cloud 

Accelera l'agilità e la crescita aziendale. Modernizza costantemente le applicazioni su tutte le piattaforme usando i nostri servizi di consulenza e cloud.

Esplora i servizi di consulenza cloud
Soluzioni container

Le soluzioni basate su container eseguono e scalano workload containerizzati con sicurezza, innovazione open source e implementazione rapida.

Esplora i container
Prossimi passi

IBM Instana Observability offre funzionalità APM e di osservabilità di Kubernetes automatizzate, progettate per monitorare l'intero stack di applicazioni Kubernetes, dai nodi e pod ai container e alle applicazioni, per tutte le distribuzioni Kubernetes.

Esplora IBM Instana Observability Prova Instana