Ep. 26: Monitoraggio di Kubernetes con Checkmk
[0:00:00] | Salve, bentornati sul canale Checkmk. Oggi parleremo del monitoraggio di Kubernetes. |
[0:00:15] | Kubernetes è un ottimo strumento. È dotato di molte funzioni interessanti e ha anche capacità di self-healing. Ma non è tutto magico. A un certo punto le cose potranno andranno male, guastarsi. Per questo è meglio avere un sistema di monitoraggio. |
[0:00:29] | Con il nuovo Checkmk 2.1, vi offriamo un monitoraggio di Kubernetes completamente rinnovato, con molte caratteristiche che renderanno il monitoraggio dei vostri cluster Kubernetes un gioco da ragazzi. |
[0:00:39] | Oggi daremo un'occhiata a questo aspetto. Ecco come appare il nostro monitoraggio di Kubernetes. |
[0:00:44] | Prima di passare all'installazione e alla configurazione vera e propria, voglio solo anticiparvi il risultato finale che otterrete, una volta terminato con un paio di semplici passaggi. |
[0:00:55] | Questa è una dashboard del cluster che vi aiuta a visualizzare tutte le metriche importanti e lo stato di salute delle applicazioni e dei carichi di lavoro nel cluster. |
[0:01:05] | È solo l'inizio del viaggio nella visibilità di Kubernetes. Da lì in poi è possibile scendere nelle singole dashboard. |
[0:01:14] | Ad esempio, si può scendere nella dashboard Deployments per la distribuzione specifica che sembra avere un problema, dove si può vedere chiaramente qualcosa in rosso. Ehi, c'è qualcosa che non va. E potremmo scendere qui per vedere cosa c'è esattamente che non va. |
[0:01:29] | Possiamo vedere le metriche dettagliate della distribuzione, dei Pod appartenenti alla distribuzione, i problemi di questa distribuzione in un'unica vista. |
[0:01:37] | E ora passiamo alla fase successiva. Come iniziare a lavorare? |
[0:01:43] | Ok, installiamo i collettori Kubernetes che ci servono per ottenere i dati dal cluster Kubernetes. Questi collettori Kubernetes si possono trovare sul nostro repository github alla voce tribe29/checkmk_kube_agent. |
[0:01:57] | Qui dovete solo andare nella cartella deploy, charts/checkmk, dove troverete anche la documentazione su come effettuare l'installazione. |
[0:02:06] | Per l'installazione è necessaria una versione recente di Kubernetes, la 1.19+ è piuttosto vecchia quindi dovreste essere in grado di soddisfarla come prerequisito e avete bisogno di helm come strumento. |
[0:02:17] | Helm è fondamentalmente un gestore di pacchetti per Kubernetes. La prima cosa da fare è aggiungere il repository. Prendo questo comando. |
[0:02:29] | Do un nome al repository. Lo chiamo tribe29 ed è stato aggiunto. La prossima cosa da fare è aggiornare il repository. Un semplice comando e il gioco è fatto. |
[0:02:48] | Ok, abbiamo appena aggiornato il repository di helm. E prima di passare alla fase successiva di installazione dei collettori Kubernetes, otterremo un file chiamato values.yaml. |
[0:03:00] | Sì, lo trovate qui sopra. Vi aiuta a configurare i collettori Kubernetes. Semplifica molto le cose. Si può specificare se si vuole abilitare la comunicazione TLS. |
[0:03:14] | Si può specificare se si vogliono abilitare i criteri di sicurezza delle porte. E tante altre cose piacevoli in modo molto semplice. |
[0:03:22] | Lo faremo scaricando questo. Ho già preparato un comando a questo scopo. Scarichiamolo. Ora lo abbiamo sul nostro sistema. |
[0:03:36] | Cambierò un paio di valori per rendere i collettori Kubernetes esposti al mondo esterno. Perché per impostazione predefinita, il collettore Kubernetes che installeremo non è accessibile dall'esterno. |
[0:03:53] | Ma affinché Checkmk possa effettivamente prelevare i dati dal cluster Kubernetes, dobbiamo farlo. Per questo, scendo qui fino a raggiungere il servizio. |
[0:04:10] | Ci sono due opzioni che si possono utilizzare. Si può esporre il servizio Kubernetes del collettore del cluster oppure si può abilitare un ingresso, a seconda di come è impostato Kubernetes. |
[0:04:24] | Qui ho un cluster Kubernetes molto semplice. Non ho alcun ingress, ecco perché sceglierò l'opzione NodePort. Quindi, devo solo specificare NodePort qui e de-commentare questa riga. |
[0:04:40] | Questa è l'unica modifica che devo fare per esporre il mio collettore di cluster al mondo esterno su quella specifica porta di quel nodo. |
[0:04:53] | Per ora non ci soffermeremo su come eseguirlo. Questo è un argomento da trattare in un altro video. |
[0:04:57] | Per il momento questo nodo è accessibile solo all'interno del mio ambiente interno, quindi per me va bene avere una comunicazione non protetta. |
[0:05:06] | Ma per qualsiasi cluster produttivo, consiglio vivamente di usare TLS o di assicurarsi che le comunicazioni siano sicure usando un ingress con le capacità integrate di quell'ingress. |
[0:05:19] | Ok, ora abbiamo configurato questo values.yaml e possiamo tornare alla documentazione e copiare questo comando. |
[0:05:33] | In questo comando, dobbiamo prima specificare il Namespace in cui verrà installato il collettore Kubernetes. Io uso checkmk-monitoring. Diamo a tutto il nome della release. Potete fare quello che volete, io ho scelto semplicemente checkmk. |
[0:05:49] | E dobbiamo specificare il repository, che deve essere lo stesso nome che ho usato sopra, e sopra ho usato tribe29. |
[0:05:58] | E ho anche passato il values.yaml per sovrascrivere la configurazione standard di questa tabella helm per esporre il cluster sulla NodePort 30035. |
[0:06:15] | Ok, vediamo cosa succede. Ok, il collettore di cluster è stato installato con successo e l'helm chart ci fornisce anche molti comandi utili per iniziare. |
[0:06:28] | Sì, questi comandi sono tutti utili per configurare la connessione di Checkmk al collettore del cluster Kubernetes. |
[0:06:37] | La prima cosa da fare è accedere al collettore del cluster. Questa è la prima parte. La seconda parte riguarda i token e il certificato per la connessione al cluster collector e all'API Kubernetes. |
[0:06:54] | Copio questi comandi e li eseguo. Se poi li guardo, potrò vedere il token che mi serve per comunicare con il mio cluster e potrò anche ottenere il certificato ca. |
[0:07:14] | Questi sono due elementi di cui ho bisogno per configurare la mia connessione al collettore Kubernetes in Checkmk. |
[0:07:21] | Ok, ora abbiamo tutto ciò che ci serve per configurare Checkmk in modo che sia in grado di monitorare Kubernetes. Ho creato un sito completamente nuovo. |
[0:07:33] | In questo sito la prima cosa da fare è andare su Hosts e aggiungere un host per il nostro cluster Kubernetes. Ora lo chiamo kube-internal. |
[0:07:47] | Gli ho dato nessun IP perché serve solo a raccogliere i dati. In pratica si tratta di un host che è la destinazione di tutti i miei dati. |
[0:08:02] | La prossima cosa che faccio è creare una cartella in cui mettere tutto. La chiamo k8s-objects. |
[0:08:13] | Poi creiamo una password, usiamo la password di Checkmk per memorizzare il token per la connessione al collettore del cluster e all'API di Kubernetes. |
[0:08:29] | Gli do il nome di Kubernetes Internal Token. Ora vado nella mia console, copio il token appena ottenuto, torno a Checkmk e lo salvo. |
[0:08:46] | È una cosa molto utile perché ora è crittografato sul mio disco, il che è molto utile. |
[0:09:07] | Andiamo qui e aggiungiamo un nuovo certificato CA. Torniamo alla console. Copiamo il certificato. Salviamo. E ora abbiamo fatto tutto ciò che ci serve per potervi accedere. |
[0:09:26] | Ora è possibile configurare la connessione. Per farlo, basta andare su Setup e digitare qualcosa con Kubernetes e qui troveremo la regola sotto VM, Cloud, Container, chiamata Kubernetes. |
[0:09:37] | Possiamo aggiungere una regola qui. Ok, configuriamo la regola Kubernetes. La prima cosa da fare è dare un nome al nostro cluster. Io lo chiamo interno. |
[0:09:49] | Poi dobbiamo assegnare un token. Prendiamo quello dell'archivio delle password che abbiamo appena specificato. Poi dobbiamo specificare l'endpoint del server API. |
[0:10:02] | Se non conoscete l'indirizzo IP o l'FQDN, guardate la configurazione del vostro strumento kubectl e troverete nel kubeconfig l'indirizzo del server API. |
[0:10:17] | Ovviamente vogliamo verificare il certificato. Il passo successivo consiste nell'arricchire i dati ottenuti con quelli provenienti dal collettore del cluster Checkmk. |
[0:10:29] | A tale scopo, utilizzo ciò che ho specificato prima e quando abbiamo distribuito il collettore di cluster nel nostro cluster Kubernetes. Ho selezionato NodePort. Ovviamente si può usare anche ingress. |
[0:10:41] | Per NodePort, devo solo specificare l'indirizzo IP di un nodo. È una cosa che ogni cluster Kubernetes può fare. Non ho abilitato l'HTTPS in produzione, fatelo. |
[0:10:57] | E ora abbiamo quasi finito. Dobbiamo solo assegnare questa regola a un host. Assegno questa regola all'host kube-internal e il gioco è fatto. Salviamo la regola, attiviamola e diamo un'occhiata ai nostri host. |
[0:11:22] | Abbiamo l'host interno di kube che abbiamo appena creato e questo. La prima cosa da fare è guardare nel Checkmk service discovery e modificare i servizi. |
[0:11:36] | E possiamo già vedere che ha scoperto un paio di cose. Ha scoperto alcuni servizi Kubernetes. |
[0:11:44] | Li accettiamo tutti e riceviamo le metriche, l'utilizzo della CPU del cluster. L'API Kubernetes è attiva e pronta. Vediamo la matrice della memoria. Vediamo quanti nodi abbiamo nel cluster e quanti pod. |
[0:12:07] | Tuttavia, ora abbiamo solo un host in Checkmk. Ovviamente vogliamo che tutti i pod, tutte le distribuzioni e tutte le altre cose appaiano in Checkmk. |
[0:12:17] | Per questo dobbiamo attivare la gestione dinamica degli host. Creo una nuova connessione. La chiamo Kubernetes. Aggiungo qui, tra le opzioni di creazione di Piggyback, un nuovo elemento. |
[0:12:38] | Creo gli host nella cartella che ho appena creato. Potete scegliere quello che volete. E scelgo anche di eliminare gli host che non hanno dati Piggyback. |
[0:12:49] | Il meccanismo dei dati Piggyback è il modo in cui i dati vengono trasferiti dal collettore del cluster a Checkmk. |
[0:12:57] | Ora useremo questa funzione per inserire i dati. Limiterò gli host di origine a kube-internal, perché voglio che la configurazione dinamica sia applicata solo a quell'host specifico. |
[0:13:16] | Salviamo e attiviamo le modifiche. Possiamo già vedere tutti gli host che vengono creati. |
[0:13:25] | Checkmk stesso ora sta scoprendo tutto nel cluster Kubernetes. Tutti i pod che si possono vedere qui sono stati creati. |
[0:13:34] | Tutti i Namespace, le distribuzioni, i set immuni, ogni oggetto nel cluster Kubernetes vengono ora monitorati. Checkmk se ne occuperà per voi, in modo che non dobbiate farlo voi. |
[0:13:47] | Ok, possiamo vedere che ora abbiamo già 87 host nel nostro Kubernetes nel nostro monitoraggio Checkmk. |
[0:13:56] | La prima cosa che possiamo fare è dare un'occhiata alle dashboard di Kubernetes che ho mostrato all'inizio. Per farlo, andate su Monitor e alla voce Applicazioni troverete Kubernetes. |
[0:14:14] | Qui potete vedere il nostro cluster che abbiamo appena configurato con alcune metriche. Ora possiamo entrare nel cluster, andare più in profondità e vedere la dashboard del cluster. |
[0:14:26] | Al momento è ovviamente piuttosto vuota, perché tutti i dati vengono raccolti sul momento. |
[0:14:31] | Concediamo un po' di tempo e diamo un'occhiata a come appare in un paio di secondi. |
[0:14:36] | Ok, e appena un paio di secondi dopo, abbiamo l'intero monitoraggio di Kubernetes pronto e funzionante. Possiamo vedere immediatamente quali Namespace abbiamo, possiamo vedere qui i nostri carichi di lavoro. |
[0:14:53] | Possiamo ordinarli se vogliamo vedere quale workload ha un carico elevato. Possiamo ordinarli anche in base al consumo di memoria per identificare i maggiori consumatori. |
[0:15:04] | Disattiverò la barra laterale in modo da poter visualizzare per intero. Le prime metriche stanno già arrivando. |
[0:15:13] | Possiamo vedere, ok, come è in questo momento la risorsa CPU su un cluster e possiamo anche entrare. Possiamo, ad esempio, dire: "Voglio vedere tutto quello che c'è nel mio Namespace predefinito". |
[0:15:24] | E possiamo, ad esempio, controllare la dashboard del Namespace. È possibile vedere immediatamente quali carichi di lavoro sono in esecuzione direttamente nel default. E poi, ad esempio, possiamo andare più in basso, anche qui, in una distribuzione specifica. |
[0:15:43] | Questa è l'installazione e la configurazione del monitoraggio di Kubernetes con Checkmk 2.1. |
[0:15:46] | Spero che il video vi sia piaciuto. Nel prossimo video, vi mostrerò come è possibile eseguire gli avvisi per il vostro cluster Kubernetes. |
[0:15:46] | Grazie per aver guardato e per favore mettete "Mi piace" e iscrivetevi. |
Vuoi saperne di più su Checkmk? Partecipa al nostro webinar "Introduzione a Checkmk".