I container e gli ambienti Kubernetes (K8s) sono l'approccio principale per il confezionamento, la distribuzione e la gestione di applicazioni containerizzate su larga scala. La configurazione dinamica, open-source, basata su microservizi di Kubernetes può essere la soluzione ideale per le aziende che desiderano massimizzare l'agilità dell'infrastruttura. Tuttavia, la flessibilità distribuita che rende Kubernetes attraente può anche rendere difficile l'implementazione del monitoraggio e delle pratiche di observibilità di Kubernetes.
L'osservabilità comprende una serie di processi e metriche che aiutano i team a ottenere insight fruibili sullo stato interno di un sistema, esaminando gli output del sistema. È una parte essenziale della gestione di qualsiasi infrastruttura IT. Ma la gestione dell'enorme volume di dati, nodi, pod, servizi ed endpoint che compongono gli ambienti Kubernetes richiede pratiche di osservabilità appropriate.
In questo blog, analizziamo come funziona l'osservabilità di Kubernetes e come le organizzazioni possono utilizzarla per ottimizzare le architetture IT cloud-native.
In generale, l'osservabilità descrive la capacità di dedurre gli stati interni del sistema dagli output esterni. È la capacità di diagnosticare e capire perché un sistema si comporta in un determinato modo, il che è fondamentale per la risoluzione dei problemi, la decifrazione delle prestazioni e il miglioramento della progettazione del sistema.
In DevOps, il concetto di osservabilità si è evoluto per riferirsi alla visibilità end-to-end dello stato di un sistema, dettata dai dati di telemetria. Le principali classi di dati utilizzate, note come i tre pilastri dell'osservabilità, sono i log, le metriche e le tracce.
I log includono eventi discreti registrati ogni volta che si verifica qualcosa nel sistema, come messaggi di stato o di errore o dettagli sulle transazioni. I log di Kubernetes possono essere scritti sia in testo strutturato che non strutturato.
Utilizzo della CPU, consumo di memoria, I/O di rete, latenza delle richieste o qualsiasi indicatore specifico dell'azienda. Le metriche di Kubernetes sono spesso aggregate per creare serie temporali di dati osservabili che possono aiutare i team a individuare tendenze e pattern.
Tracce aiutano i team a seguire una richiesta o una transazione attraverso i vari servizi e componenti di un sistema distribuito. Inoltre, aiutano i team a visualizzare le dipendenze tra i diversi componenti di un'infrastruttura, in modo da individuare rapidamente ritardi ed errori.
Il raggiungimento dell'osservabilità richiede l'impiego di strumenti di monitoraggio Kubernetes adeguati e l'implementazione di processi efficaci per la raccolta, l'archiviazione e l'analisi dei tre output primari. Ciò potrebbe includere la configurazione e la gestione di sistemi di monitoraggio, aggregatori di log delle applicazioni, strumenti di application performance management (APM) o altre piattaforme di osservabilità.
Tuttavia, gli ambienti Kubernetes richiedono anche un esame più approfondito delle metriche standard. I sistemi Kubernetes comprendono un vasto ambiente di container interconnessi, microservizi e altri componenti, ognuno dei quali genera grandi quantità di dati. Kubernetes pianifica e automatizza le attività relative ai container durante l'intero ciclo di vita delle applicazioni, tra cui:
Kubernetes può distribuire un numero specifico di container su un host specifico e mantenerli in esecuzione nello stato desiderato.
Un rollout è una modifica della distribuzione di Kubernetes. Kubernetes consente ai team di avviare, sospendere, riprendere o annullare i rollout.
Kubernetes può automaticamente esporre un container su Internet o ad altri container utilizzando un nome DNS o un indirizzo IP.
In caso di picchi di traffico, Kubernetes può automaticamente attivare nuovi cluster per gestire il workload aggiuntivo.
I team possono configurare Kubernetes in modo da fornire uno storage permanente, locale o nel cloud, ai container.
In base all'utilizzo della CPU o a metriche personalizzate, il bilanciamento del carico di Kubernetes può distribuire i workload sulla rete per mantenere prestazioni e stabilità.
Kubernetes può eseguire automaticamente il debug, il riavvio o la sostituzione di un container guasto per evitare tempi di inattività. Può anche disattivare i container che non soddisfano i requisiti di verifica dello stato di integrità.
Con così tanti componenti che si spostano, si stratificano e interagiscono tra loro, si presentano altrettanti potenziali problemi e punti di guasto, quindi molte aree in cui il monitoraggio in tempo reale diventa una necessità. Ciò significa anche che un approccio convenzionale al monitoraggio di log, metriche e tracce potrebbe rivelarsi insufficiente per l'osservabilità in un ambiente Kubernetes.
Poiché ogni componente di un'architettura Kubernetes è interdipendente da altri componenti, l'osservabilità richiede un approccio più olistico.
L'osservabilità di Kubernetes richiede alle organizzazioni di andare oltre la raccolta e l'analisi dei dati a livello di cluster da log, tracce e metriche; la connessione dei punti dati per comprendere meglio le relazioni e gli eventi all'interno dei cluster Kubernetes è fondamentale per il processo. Ciò significa che le organizzazioni devono fare affidamento su una strategia di osservabilità personalizzata e cloud-native e analizzare ogni fonte di dati disponibile all'interno del sistema.
L'osservabilità in un ambiente K8s comporta:
1. Andare oltre metriche, log e app. Proprio come il monitoraggio delle macchine virtuali, l'osservabilità di Kubernetes deve tenere conto di tutti i dati di registro (dai container, dai nodi master e di lavoro e dall'infrastruttura sottostante) e delle metriche a livello di app. Tuttavia, a differenza delle VM, Kubernetes orchestra le interazioni tra i container che trascendono le app e i cluster. Pertanto, gli ambienti Kubernetes ospitano enormi quantità di dati preziosi sia all'esterno che all'interno di cluster di rete e app. Ciò include i dati nelle pipeline IC/CD (che si inseriscono nei cluster K8s) e nei workflow GitOps (che alimentano i cluster K8s).
Inoltre, Kubernetes non espone metriche, log e dati di tracciamento nello stesso modo in cui lo fanno le app e le VM tradizionali. Kubernetes tende a catturare "istantanee" di dati, ovvero informazioni acquisite in un momento specifico del ciclo di vita. In un sistema in cui ogni componente all'interno di ogni cluster registra diversi tipi di dati in formati diversi e a velocità diverse, può essere difficile, o impossibile, stabilire l'osservabilità semplicemente analizzando punti di dati discreti.
Inoltre, Kubernetes non crea file di log master né a livello di app né a livello di cluster. Ogni app e cluster registra i dati nel rispettivo ambiente, quindi gli utenti devono aggregarli ed esportarli manualmente per visualizzarli tutti in un'unica posizione. E poiché i container possono attivarsi, disattivarsi o scomparire del tutto in pochi secondi, anche i dati aggregati manualmente possono fornire un quadro incompleto senza un contesto adeguato.
2. Dare priorità al contesto e alla correlazione dei dati. Sia il monitoraggio che l'osservabilità sono elementi essenziali per mantenere un'infrastruttura Kubernetes efficiente. Ciò che li differenzia è una questione oggettiva. Mentre il monitoraggio aiuta a chiarire cosa sta succedendo in un sistema, l'osservabilità mira a chiarire perché il sistema si sta comportando in quel modo. A tal fine, un'osservabilità efficace di Kubernetes dà la priorità al collegamento dei punti tra i dati per arrivare alla causa principale dei colli di bottiglia delle prestazioni e dei problemi di funzionalità.
Per comprendere il comportamento del cluster Kubernetes, è necessario comprendere ogni singolo evento di un cluster nel contesto di tutti gli altri eventi del cluster, del comportamento generale del cluster e di tutti gli eventi che hanno portato all'evento in questione.
Ad esempio, se un pod inizia in un nodo worker e termina in un altro, è necessario comprendere tutti gli eventi che si verificano simultaneamente negli altri nodi Kubernetes e tutti gli eventi che si verificano negli altri servizi Kubernetes, nei server API e nei namespace per ottenere una chiara comprensione del cambiamento, della sua causa principale e delle sue potenziali conseguenze.
In altre parole, monitorare semplicemente le attività è spesso inadeguato in un ambiente Kubernetes. Per ottenere l'osservabilità di Kubernetes, ottenere insight pertinenti sul sistema o condurre analisi accurate e accurate delle cause principali, i team IT devono essere in grado di aggregare i dati provenienti da tutta la rete e contestualizzarli.
3. Utilizzare gli strumenti di osservabilità di Kubernetes. Implementare e mantenere l'osservabilità di Kubernetes è un'impresa grande e complessa. Tuttavia, l'utilizzo dei framework e degli strumenti giusti può semplificare il processo e migliorare la visualizzazione e la trasparenza complessiva dei dati.
Le aziende possono scegliere tra una vasta gamma di soluzioni di osservabilità, tra cui programmi che automatizzano l'aggregazione e l'analisi delle metriche (come Prometheus e Grafana), programmi che automatizzano la creazione di log (come ELK, Fluentd ed Elasticsearch) e programmi che facilitano la tracciabilità della visibilità (come Jaeger). Le soluzioni integrate, come OpenTelemetry, sono in grado di gestire tutte e tre le principali pratiche di osservabilità. Soluzioni personalizzate cloud-native, come Google Cloud Operations, AWS X-Ray, Azure Monitor e IBM Instana Observability, offrono strumenti di osservabilità e dashboard Kubernetes ottimizzati per i cluster in esecuzione sulla propria infrastruttura.
• Definisci i tuoi KPI. Scopra quali indicatori chiave di prestazione, come le prestazioni delle app, lo stato del sistema e l'utilizzo delle risorse, possono offrirti gli insight più utili sul comportamento dell'infrastruttura. Rivedili se necessario.
• Centralizza la creazione di log. Gli ambienti K8s generano grandi quantità di dati. L'aggregazione e l'archiviazione tramite una soluzione di logging centralizzata è parte integrante della gestione dei dati.
• Monitora l'utilizzo delle risorse. Raccogli dati in tempo reale sull'utilizzo di memoria, CPU e rete, in modo da poter scalare le risorse in modo proattivo, quando necessario.
• Configura avvisi e allarmi. Utilizza le soglie KPI stabilite per configurare avvisi e allarmi. Questa pratica consente ai team di ricevere notifiche tempestive quando si verificano problemi.
Kubernetes è la piattaforma di orchestrazione di container standard del settore, che gestisce workload containerizzati con notevole efficienza. Tuttavia, l'architettura distribuita e multilivello dei microservizi di Kubernetes richiede meccanismi di osservabilità robusti e soluzioni avanzate, come IBM Instana Observability.
Instana Observability fornisce funzionalità automatizzate di osservabilità e APM di Kubernetes, progettate per monitorare l'intero stack di applicazioni Kubernetes, dai nodi e pod ai container e alle applicazioni, per tutte le distribuzioni Kubernetes.
L'osservabilità in Kubernetes non è solo un'implementazione tecnica: si tratta di un approccio strategico che richiede un'attenta pianificazione e una cultura organizzativa che valorizzi la trasparenza dei dati.
Instana Observability aiuta i team a ottenere una comprensione completa dei loro ambienti Kubernetes e a fornire applicazioni solide e ad alte prestazioni in un mondo sempre più basato sul cloud.
IBM web domains
ibm.com, ibm.org, ibm-zcouncil.com, insights-on-business.com, jazz.net, mobilebusinessinsights.com, promontory.com, proveit.com, ptech.org, s81c.com, securityintelligence.com, skillsbuild.org, softlayer.com, storagecommunity.org, think-exchange.com, thoughtsoncloud.com, alphaevents.webcasts.com, ibm-cloud.github.io, ibmbigdatahub.com, bluemix.net, mybluemix.net, ibm.net, ibmcloud.com, galasa.dev, blueworkslive.com, swiss-quantum.ch, blueworkslive.com, cloudant.com, ibm.ie, ibm.fr, ibm.com.br, ibm.co, ibm.ca, community.watsonanalytics.com, datapower.com, skills.yourlearning.ibm.com, bluewolf.com, carbondesignsystem.com