Monitorare le distribuzioni dei carichi di lavoro

Questo articolo fa parte di una serie. Iniziare con la panoramica.

È importante monitorare l'integrità e le prestazioni dei carichi di lavoro Kubernetes per garantire che vengano eseguiti in modo ottimale. servizio Azure Kubernetes (servizio Azure Kubernetes) include diversi strumenti che è possibile usare per controllare l'integrità e le prestazioni delle distribuzioni, DaemonSet delle funzionalità e dei servizi.

Strumenti

È importante determinare se tutte le distribuzioni e DaemonSet le funzionalità sono in esecuzione. Questo articolo descrive come determinare se le repliche negli stati pronti e disponibili corrispondono al numero di repliche previsto usando:

  • Portale di Azure.
  • Funzionalità informazioni dettagliate sui contenitori di Monitoraggio di Azure.
  • Strumento da riga di comando kubectl.
  • Prometheus e Grafana.

Il portale di Azure

È possibile usare il portale di Azure per verificare l'integrità dei componenti seguenti nei carichi di lavoro. Per altre informazioni, vedere Accedere alle risorse kubernetes dal portale di Azure.

Distribuzione, ReplicaSet, StatefulSete DaemonSet

Verificare che il numero di repliche in uno stato pronto corrisponda al numero di repliche desiderate. Il portale mostra:

  • Numero di repliche attualmente disponibili e pronte per gestire il traffico. Queste repliche sono state pianificate correttamente nei nodi di lavoro, hanno completato il processo di avvio e superato i controlli di idoneità.

  • Il numero desiderato di repliche specificate per la distribuzione o il numero di repliche che la distribuzione ha lo scopo di gestire. Il controller di distribuzione Kubernetes monitora costantemente lo stato della distribuzione e garantisce che il numero effettivo di repliche corrisponda al numero desiderato.

Servizi e risorse in ingresso

Verificare che lo stato sia ok per tutti i servizi e i dati in ingresso.

Storage

Verificare che lo stato sia associato per tutte le attestazioni di volume persistente e i volumi permanenti.

Informazioni dettagliate contenitore

Informazioni dettagliate sui contenitori è una funzionalità di Monitoraggio che fornisce funzionalità di monitoraggio per i carichi di lavoro dei contenitori distribuiti nel servizio Azure Kubernetes o gestiti da Kubernetes abilitato per Azure Arc. Questa funzionalità raccoglie informazioni sulle prestazioni e sull'integrità, ad esempio metriche di memoria e processore da controller, nodi e contenitori. Acquisisce anche i log dei contenitori per l'analisi.

È possibile usare diverse visualizzazioni e cartelle di lavoro predefinite per analizzare i dati raccolti. Esaminare le prestazioni e il comportamento di vari componenti all'interno del cluster. Con informazioni dettagliate sui contenitori, è possibile ottenere informazioni dettagliate sullo stato complessivo dei carichi di lavoro dei contenitori, in modo da poter prendere decisioni informate per ottimizzare le prestazioni e risolvere i problemi.

È possibile usare informazioni dettagliate sui contenitori per:

  • Identificare i colli di bottiglia delle risorse identificando i contenitori eseguiti in ogni nodo e il relativo utilizzo del processore e della memoria.

  • Identificare l'utilizzo del processore e della memoria dei gruppi di contenitori e dei relativi contenitori ospitati nelle istanze del contenitore.

  • Visualizzare le prestazioni complessive del controller o del pod identificando dove risiede il contenitore in un controller o in un pod.

  • Esaminare l'utilizzo delle risorse dei carichi di lavoro eseguiti nell'host e non sono correlati ai processi standard che supportano il pod.

  • Comprendere il comportamento di un cluster con carichi medi e pesanti in modo da identificare le esigenze di capacità e determinare il carico massimo che il cluster può sostenere.

  • Accedere ai log e alle metriche dei contenitori in tempo reale generati dal motore del contenitore in modo da poter risolvere i problemi in tempo reale.

  • Configurare gli avvisi per notificare in modo proattivo o registrare quando l'utilizzo della CPU e della memoria nei nodi o nei contenitori supera le soglie o quando si verifica una modifica dello stato di integrità nel cluster nel rollup dell'infrastruttura o dei nodi.

Nell'portale di Azure, le informazioni dettagliate sui contenitori offrono diversi strumenti per monitorare e analizzare l'integrità e le prestazioni di un cluster del servizio Azure Kubernetes.

  • Cluster: questa funzionalità offre una panoramica del cluster del servizio Azure Kubernetes, incluse le metriche chiave, ad esempio utilizzo della CPU e della memoria, numero di pod e nodi e traffico di rete. È possibile ottenere informazioni dettagliate sull'integrità complessiva e sull'utilizzo delle risorse del cluster.

  • Report: questa funzionalità fornisce report predefiniti che è possibile usare per visualizzare e analizzare vari aspetti delle prestazioni del cluster, ad esempio l'utilizzo delle risorse, l'integrità dei pod e le informazioni dettagliate sui contenitori. Questi dati consentono di comprendere il comportamento e le prestazioni dei contenitori e dei carichi di lavoro.

  • Nodi: questa funzionalità fornisce informazioni dettagliate sui nodi nel cluster. Mostra le metriche per l'utilizzo della CPU e della memoria, l'I/O di rete e la condizione e lo stato di ogni nodo. È possibile usare questi dati per monitorare le prestazioni dei singoli nodi, identificare potenziali colli di bottiglia e garantire un'allocazione efficiente delle risorse.

  • Controller: questa funzionalità offre visibilità sui controller Kubernetes nel cluster del servizio Azure Kubernetes. Vengono visualizzate informazioni quali il numero di istanze del controller, lo stato corrente e lo stato delle operazioni del controller. È possibile monitorare l'integrità e le prestazioni dei controller che gestiscono distribuzioni, servizi e altre risorse dei carichi di lavoro.

  • Contenitori: questa funzionalità fornisce informazioni dettagliate sui contenitori eseguiti nel cluster del servizio Azure Kubernetes. Fornisce informazioni relative all'utilizzo delle risorse, ai riavvii e agli eventi del ciclo di vita di ogni contenitore. È possibile usare questi dati per monitorare e risolvere i problemi dei contenitori nei carichi di lavoro.

  • Log live: la funzionalità dei log live fornisce un flusso live di eventi di log dai contenitori in esecuzione, in modo da poter visualizzare i log dei contenitori in tempo reale. È possibile usare questi dati per monitorare e risolvere in modo efficace le applicazioni e identificare e risolvere rapidamente i problemi nei contenitori.

Per ulteriori informazioni, vedi le seguenti risorse:

Strumento da riga di comando

Per controllare lo stato dei carichi di lavoro, è possibile usare lo strumento da riga di comando kubectl per comunicare con un piano di controllo del cluster Kubernetes tramite l'API Kubernetes.

Pod

Per elencare i pod in esecuzione in tutti gli spazi dei nomi, eseguire il comando seguente:

kubectl get pod -A

Nell'output del comando, la colonna READY fornisce informazioni importanti sullo stato di conformità dei contenitori del pod.

Il primo numero indica il numero di contenitori attualmente in uno stato pronto . Questi contenitori hanno passato i probe di idoneità e sono pronti per gestire il traffico in ingresso. Il secondo numero rappresenta il numero totale di contenitori definiti all'interno del pod, indipendentemente dal relativo stato di conformità. Include i contenitori pronti e quelli ancora inizializzati o che riscontrano problemi.

Assicurarsi che il primo numero (contenitori pronti) corrisponda al secondo numero (contenitori totali) per il pod. Se differiscono, alcuni contenitori potrebbero non essere pronti o potrebbero verificarsi problemi che impediscono loro di raggiungere lo stato pronto .

Distribuzione, StatefulSet, DaemonSete StatefulSet

Eseguire il comando seguente per recuperare le distribuzioni in tutti gli spazi dei nomi:

kubectl get deploy -A

Nell'output del kubectl get deploy comando, i numeri nella colonna READY indicano lo stato di idoneità corrente delle repliche in una distribuzione.

Il primo numero rappresenta il numero di repliche pronte e disponibili per gestire il traffico. Queste repliche sono state avviate e superate le verifiche di idoneità. Il secondo numero rappresenta il numero desiderato di repliche specificate nella configurazione della distribuzione. È il numero di repliche di destinazione che la distribuzione mira a gestire.

È importante assicurarsi che il primo numero corrisponda al secondo numero. Indica che il numero desiderato di repliche è in esecuzione e pronto. Qualsiasi discrepanza tra i due numeri potrebbe indicare problemi di scalabilità o idoneità che è necessario risolvere.

Eseguire il comando seguente per recuperare le funzionalità StatefulSet in tutti gli spazi dei nomi:

kubectl get statefulset -A

Eseguire il comando seguente per recuperare le funzionalità DaemonSet in tutti gli spazi dei nomi:

kubectl get ds -A

È possibile eseguire il kubectl get ds comando per verificare che sia DaemonSet in esecuzione come previsto. Ad esempio, è possibile eseguire il comando seguente per verificare che l'agente di Informazioni dettagliate contenitore sia stato distribuito correttamente:

kubectl get ds ama-logs --namespace=kube-system

Analogamente, se si configura il cluster del servizio Azure Kubernetes per raccogliere le metriche di Prometheus in Monitoraggio per Prometheus gestito, è possibile eseguire il comando seguente per verificare che DaemonSet sia distribuito correttamente nei pool di nodi Linux:

kubectl get ds ama-metrics-node --namespace=kube-system

Questo output fornisce informazioni sulle DaemonSet funzionalità del cluster. Esaminare l'output per assicurarsi che il numero di pod negli stati pronti, correnti e desiderati corrispondano. Se sono uguali, il numero desiderato di pod specificati nella DaemonSet configurazione è uguale al numero di pod attualmente in esecuzione e pronti.

È consigliabile eseguire lo stesso controllo per le funzionalità di ReplicaSet . È possibile usare il comando seguente per recuperare le ReplicaSet funzionalità in tutti gli spazi dei nomi:

kubectl get rs -A

Assicurarsi che i numeri in questo output siano uguali per ogni stato in modo che il numero previsto di pod o repliche sia in esecuzione come previsto. Le discrepanze possono indicare la necessità di ulteriori indagini o risoluzione dei problemi usando uno dei comandi seguenti.

kubectl describe: è possibile usare il comando kubectl describe per ottenere informazioni dettagliate sulle risorse di Kubernetes, ad esempio pod, distribuzioni e servizi. È possibile ottenere una panoramica completa della risorsa specificata, inclusi lo stato corrente, gli eventi, le condizioni e i metadati correlati. Le informazioni vengono recuperate dal server API Kubernetes. Questo comando è utile per la risoluzione dei problemi e la comprensione dello stato di una risorsa.

È possibile eseguire kubectl describe pod <pod-name> per ottenere informazioni dettagliate su un pod specifico, inclusi lo stato corrente, gli eventi, le etichette e i contenitori associati. L'output mostra informazioni come lo stato del pod, gli eventi, i volumi e le condizioni.

kubectl logs: è possibile usare il comando kubectl logs per recuperare i log generati da un contenitore all'interno di un pod. Questo comando è utile per il debug e la risoluzione dei problemi. È possibile visualizzare i log in tempo reale o recuperare i log cronologici da un contenitore.

Per visualizzare i log dei contenitori, è possibile usare il comando kubectl logs <pod-name> -c <container-name>. Sostituire <pod-name> con il nome del pod. Sostituire <container-name> con il nome del contenitore da cui si desidera recuperare i log. Se nel pod è presente un solo contenitore, non è necessario specificare il nome del contenitore. È anche possibile usare il -f flag con kubectl logs per seguire i log in tempo reale. Questo flag è simile al tail -f comando Linux.

eventi kubectl: è possibile usare il comando kubectl events per la risoluzione dei problemi quando una distribuzione, DaemonSet, ReplicaSeto un pod non avvia o rileva un problema durante l'avvio. Questo comando fornisce un elenco cronologico di eventi associati alla risorsa specificata. È possibile ottenere informazioni dettagliate su ciò che potrebbe aver causato il problema.

Per usare kubectl events, è possibile eseguire il comando kubectl events seguito da un nome di risorsa specifico. In alternativa, è possibile usare i selettori per filtrare gli eventi in base a etichette, spazi dei nomi o altri criteri.

Ad esempio, per recuperare gli eventi correlati a un pod specifico, è possibile eseguire kubectl events --field-selector involvedObject.name=<pod-name> --field-selector involvedObject.kind=Pod. Sostituire <pod-name> con il nome del pod da analizzare. L'output del kubectl events comando visualizza informazioni quali il tipo di evento (normale o avviso), il messaggio di evento, il motivo dell'evento e il timestamp in cui si è verificato l'evento. È possibile usare queste informazioni per determinare cosa ha causato l'errore o il problema durante l'avvio.

Se si sospetta che una risorsa specifica come una distribuzione, o ReplicaSet si verifichino problemi, DaemonSetè possibile filtrare gli eventi usando selettori. Ad esempio, kubectl events --field-selector involvedObject.name=<deployment-name> --field-selector involvedObject.kind=Deployment mostra gli eventi correlati a una distribuzione specifica. Esaminare gli eventi in modo da poter raccogliere dettagli importanti su potenziali errori, errori o altri eventi che potrebbero aver impedito l'avvio corretto della risorsa. Usare questi dati per risolvere e risolvere i problemi che interessano la risorsa.

Monitoraggio in cluster con Prometheus e Grafana

Se si distribuisce Prometheus e Grafana nel cluster del servizio Azure Kubernetes, è possibile usare il dashboard dettagli cluster K8 per ottenere informazioni dettagliate. Questo dashboard presenta informazioni raccolte dalle metriche del cluster Prometheus, ad esempio utilizzo della CPU e della memoria, attività di rete e utilizzo del file system. Vengono inoltre visualizzate statistiche dettagliate per singoli pod, contenitori e servizi di sistema.

Per garantire l'integrità e le prestazioni delle distribuzioni, dei processi, dei pod e dei contenitori, è possibile usare le funzionalità nel dashboard. Selezionare Distribuzioni per visualizzare il numero di repliche per ogni distribuzione e il numero totale di repliche. Selezionare Contenitori per visualizzare un grafico che mostra i contenitori in esecuzione, in sospeso, non riusciti e riusciti.

Monitorare il servizio gestito per Prometheus e Grafana gestito di Azure

È possibile usare dashboard predefiniti per visualizzare e analizzare le metriche di Prometheus. A tale scopo, è necessario configurare il cluster del servizio Azure Kubernetes per raccogliere le metriche di Prometheus nel servizio gestito di Monitoraggio per Prometheus e connettere l'area di lavoro Monitoraggio a un'area di lavoro Grafana gestita di Azure.

Installare i dashboard predefiniti per ottenere una panoramica completa delle prestazioni e dell'integrità del cluster Kubernetes. Per istruzioni dettagliate sull'installazione, vedere Combinazione di monitoraggio prometheus per Kubernetes. Il provisioning dei dashboard viene eseguito nell'istanza di Grafana gestita di Azure specificata nella cartella Managed Prometheus . Alcuni dashboard includono:

  • Kubernetes/Risorse di calcolo/Cluster
  • Kubernetes/Risorse di calcolo/Spazio dei nomi (pod)
  • Kubernetes/Risorse di calcolo/Nodo (pod)
  • Kubernetes/Risorse di calcolo/Pod
  • Kubernetes/Risorse di calcolo/Spazio dei nomi (carichi di lavoro)
  • Kubernetes/Risorse di calcolo/Carico di lavoro
  • Kubernetes/Kubelet
  • Node Exporter/U edizione Standard Method/Node
  • Utilità di esportazione/nodi del nodo
  • Kubernetes/Risorse di calcolo/Cluster (Windows)
  • Kubernetes/Risorse di calcolo/Spazio dei nomi (Windows)
  • Kubernetes/Risorse di calcolo/Pod (Windows)
  • Metodo Kubernetes/U edizione Standard/Cluster (Windows)
  • Metodo Kubernetes/U edizione Standard/Node (Windows)

Questi dashboard predefiniti sono ampiamente usati nella community open source per il monitoraggio dei cluster Kubernetes con Prometheus e Grafana. Usare questi dashboard per visualizzare le metriche, ad esempio l'utilizzo delle risorse, l'integrità dei pod e l'attività di rete. È anche possibile creare dashboard personalizzati personalizzati in base alle esigenze di monitoraggio. I dashboard consentono di monitorare e analizzare in modo efficace le metriche di Prometheus nel cluster del servizio Azure Kubernetes, che consente di ottimizzare le prestazioni, risolvere i problemi e garantire un funzionamento uniforme dei carichi di lavoro Kubernetes.

È possibile usare il dashboard Kubernetes/Risorse di calcolo/Nodo (pod) per visualizzare le metriche per i nodi dell'agente Linux. È possibile visualizzare l'utilizzo della CPU, la quota di CPU, l'utilizzo della memoria e la quota di memoria per ogni pod.

Il dashboard Kubernetes/Risorse di calcolo/Pod Grafana fornisce informazioni dettagliate sul consumo delle risorse e sulle metriche delle prestazioni di un cluster, uno spazio dei nomi e un pod selezionati. È possibile usare questo dashboard per ottenere metriche correlate all'utilizzo della CPU, alla limitazione della CPU, alla quota della CPU, all'utilizzo della memoria, alla quota di memoria, alle metriche di rete e alle metriche di archiviazione. Nel dashboard selezionare un cluster, uno spazio dei nomi e un pod del servizio Azure Kubernetes all'interno dello spazio dei nomi scelto per visualizzare i dettagli seguenti:

  • Utilizzo CPU: questo grafico visualizza l'utilizzo della CPU nel tempo per il pod selezionato. È possibile esaminare il modello di consumo della CPU e identificare potenziali picchi o anomalie.

  • Limitazione della CPU: questo grafico fornisce informazioni dettagliate sulla limitazione della CPU, che si verifica quando un pod supera i limiti delle risorse della CPU. Monitorare questa metrica per identificare le aree in cui le prestazioni del pod sono limitate a causa della limitazione della CPU.

  • Quota CPU: questo grafico mostra la quota di CPU allocata per il pod selezionato. Se il pod supera la quota di CPU assegnata, potrebbe richiedere modifiche alle risorse.

  • Utilizzo della memoria: questo grafico presenta l'utilizzo della memoria del pod selezionato. Monitorare il modello di utilizzo della memoria e identificare eventuali problemi correlati alla memoria.

  • Quota di memoria: questo grafico visualizza la quota di memoria allocata per il pod. Se il pod supera la quota di memoria assegnata, potrebbe indicare una necessità di ottimizzazione delle risorse.

  • Metriche di rete: questi grafici mostrano la larghezza di banda ricevuta e trasmessa e la frequenza di pacchetti ricevuti e trasmessi. Queste metriche consentono di monitorare l'utilizzo della rete e rilevare eventuali potenziali colli di bottiglia o anomalie di rete.

  • Archiviazione metriche: questa sezione fornisce informazioni sulle metriche correlate all'archiviazione, ad esempio operazioni di I/O al secondo (IOPS) e velocità effettiva. Monitorare queste metriche per misurare le prestazioni e l'efficienza dell'archiviazione dei pod.

È possibile usare il dashboard Kubernetes/Risorse di calcolo/Pod Grafana per ottenere informazioni dettagliate sull'utilizzo delle risorse, sulle prestazioni e sul comportamento dei pod nel cluster Kubernetes. Usare queste informazioni per ottimizzare l'allocazione delle risorse, risolvere i problemi di prestazioni e prendere decisioni informate per garantire il corretto funzionamento dei carichi di lavoro in contenitori.

Collaboratori

Questo articolo viene gestito da Microsoft. Originariamente è stato scritto dai seguenti contributori.

Autore principale:

Altri contributori:

Per visualizzare i profili LinkedIn non pubblici, accedere a LinkedIn.

Passaggi successivi