Introduzione
Questo documento descrive una soluzione per recuperare un guscio Grafana che si riavvia continuamente.
Prerequisiti
Requisiti
Cisco raccomanda la conoscenza dei seguenti argomenti:
- Cisco Subscriber Microservices Infrastructure (SMI) Ultra Cloud Core Common Execution Environment (CEE)
- Architettura 5G Cloud Native Deployment Platform (CNDP) o SMI-bare-metal (BM)
- Docker e Kubernetes
Componenti usati
Le informazioni fornite in questo documento si basano sulle seguenti versioni software e hardware:
- SMI 2020.02.2.35
- Kubernetes v1.21.0
Le informazioni discusse in questo documento fanno riferimento a dispositivi usati in uno specifico ambiente di emulazione. Su tutti i dispositivi menzionati nel documento la configurazione è stata ripristinata ai valori predefiniti. Se la rete è operativa, valutare attentamente eventuali conseguenze derivanti dall'uso dei comandi.
Premesse
Che cos'è SMI?
Cisco SMI è uno stack a più livelli di tecnologie e standard cloud che abilitano applicazioni basate su microservizi dalle unità aziendali Cisco Mobility, Cable e Broadband Network Gateway (BNG). Queste applicazioni hanno funzioni simili di gestione degli utenti e requisiti simili per gli archivi dati.
Attributi:
- Lo stack di cloud di livello (tecnologie e standard) fornisce distribuzioni top-to-bottom e supporta l'attuale infrastruttura cloud.
- Tutte le applicazioni condividono il CEE per le funzioni non applicative (storage dei dati, installazione, configurazione, telemetria, allarme), che fornisce un'interazione e un'esperienza coerenti per tutti i punti di contatto e i punti di integrazione del cliente.
- Applicazioni e CEE vengono implementati in contenitori di microservizi e sono connessi con una rete di servizi intelligente.
- Un'API esposta per l'installazione, la configurazione e la gestione consente l'automazione.
Cos'è SMI CEE?
- CEE è una soluzione software sviluppata per monitorare le applicazioni mobili e via cavo installate sull'interfaccia SMI. La CEE acquisisce le informazioni (metriche chiave) dalle applicazioni in modo centralizzato per consentire ai tecnici di eseguire il debug e risolvere i problemi.
- Il CEE è l'insieme di strumenti comuni installati per tutte le applicazioni. È dotato di un centro operativo dedicato, che fornisce l'interfaccia CLI (Command Line Interface) e le API per la gestione degli strumenti di monitoraggio. Per ogni cluster è disponibile un solo CEE.
Che cosa sono i CEE Pod?
- Un pod è un processo in esecuzione sul cluster Kubernetes. Un baccello incapsula un'unità granulare nota come contenitore. Un baccello contiene uno o più contenitori.
- Kubernetes distribuisce uno o più pod su un singolo nodo, che può essere una macchina fisica o virtuale. Ogni pod ha un'identità discreta con un indirizzo IP interno e uno spazio di porta. Tuttavia, i contenitori all'interno di un pod possono condividere le risorse di storage e di rete. CEE dispone di un numero di baccelli con funzioni uniche. Grafana e Postgress sono tra i diversi pod CEE.
Cos'è un pozzo Grafana?
Un baccello Grafana può comunicare con un baccello Prometheus con accesso attraverso il servizio Prometheus, che si chiama Prometheus.
Che cos'è un pod Postgres?
Postgres supporta database SQL con ridondanza per archiviare avvisi e dashboard Grafana.
Problema
Il baccello Grafana si riavvia regolarmente, mentre i baccelli Postgres funzionano senza problemi.
Per recuperare, usare questo comando per eliminare manualmente il baccello Grafana:
kubectl delete pod <grafana_pod_name> -n <cee_namespace
Dopo l'eliminazione, il contenitore Grafana viene ricreato e riavviato.
Se il problema persiste, usare questo comando CLI per ottenere l'alert di esempio da CEE per identificare il problema:
[pod-name-smf/podname] cee# show alerts active summary | include "POD_Res|k8s_grafana"
Esempio:
[pod-name-smf/podname] cee# show alerts active summary | include "POD_Res|k8s_grafana"
Time Alert Name Description Port Access ID NEState Severity Alert Source
16:26 PCF_POD_Restarted " "Processing Error Alarm"} " ""Container k8s_grafana_grafana-59768df649-n6x6x_cee-dnrce301_a4ff5711-0e20-4dd4-ae7f-47296c334930_883 of pod grafana-59768df649-n6x6x in namespace cee-dnrce301 has been restarted."" InService Major NETX
16:23 PCF_k8s-pod-crashing-loop " "Processing Error Alarm"} " "Pod cee-dnrce301/grafana-59768df649-n6x6x (grafana) is restarting 1.03 times / 5 minutes." InService Critical NETX
16:20 PCF_POD_Restarted " "Processing Error Alarm"} " ""Container k8s_grafana_grafana-59768df649-n6x6x_cee-dnrce301_a4ff5711-0e20-4dd4-ae7f-47296c334930_882 of pod grafana-59768df649-n6x6x in namespace cee-dnrce301 has been restarted."" InService Major NETX
16:14 PCF_POD_Restarted " "Processing Error Alarm"} " ""Container k8s_grafana_grafana-59768df649-n6x6x_cee-dnrce301_a4ff5711-0e20-4dd4-ae7f-47296c334930_881 of pod grafana-59768df649-n6x6x in namespace cee-dnrce301 has been restarted."" InService Major NETX
16:08 PCF_POD_Restarted " "Processing Error Alarm"} " ""Container k8s_grafana_grafana-59768df649-n6x6x_cee-dnrce301_a4ff5711-0e20-4dd4-ae7f-47296c334930_880 of pod grafana-59768df649-n6x6x in namespace cee-dnrce301 has been restarted."" InService Major NETX
16:02 PCF_POD_Restarted " "Processing Error Alarm"} " ""Container k8s_grafana_grafana-59768df649-n6x6x_cee-dnrce301_a4ff5711-0e20-4dd4-ae7f-47296c334930_879 of pod grafana-59768df649-n6x6x in namespace cee-dnrce301 has been restarted."" InService Major NETX
15:56 PCF_POD_Restarted " "Processing Error Alarm"} " ""Container k8s_grafana_grafana-59768df649-n6x6x_cee-dnrce301_a4ff5711-0e20-4dd4-ae7f-47296c334930_878 of pod grafana-59768df649-n6x6x in namespace cee-dnrce301 has been restarted."" InService Major NETX
15:53 PCF_k8s-pod-crashing-loop " "Processing Error Alarm"} " "Pod cee-dnrce301/grafana-59768df649-n6x6x (grafana) is restarting 1.03 times / 5 minutes." InService Critical NETX
Soluzione alternativa
Shutdown CEE
Per arrestare il sistema, eseguire i seguenti comandi da CEE:
[pod-name-smf/podname] cee# conf
Entering configuration mode terminal
[pod-name-smf/podname] cee(config)# system mode shutdown
[pod-name-smf/podname] cee(config)# commit
Commit complete.
[pod-name-smf/podname] cee(config)# end
Aspettate che il sistema raggiunga il 100%.
Rimozione delle cartelle DB per i pod postgres
Controllate per vedere i nodi in cui si sono riprodotti i baccelli Postgres.
In questo esempio, tutti i baccelli Postgres vengono sparsi su "master-1":
cloud-user@dnup0300-aio-1-master-1:~$ kubectl get pods -n cee-dnrce301 -o wide | grep postgres
postgres-0 1/1 Running 0 35d 10.108.50.28 dnup0300-aio-1-master-1 <none> <none>
postgres-1 1/1 Running 0 35d 10.108.50.47 dnup0300-aio-1-master-1 <none> <none>
postgres-2 1/1 Running 0 35d 10.108.50.102 dnup0300-aio-1-master-1 <none> <none>
Per ogni postgres in questo percorso nel nodo verranno create cartelle in cui archiviare il database:
/data/<cee-namespace>/postgres<0,1,2>
Rimuovere le cartelle come illustrato:
cloud-user@dnup0300-aio-1-master-1:/data/cee-dnrce301$ sudo rm -rf data-postgres-0
cloud-user@dnup0300-aio-1-master-1:/data/cee-dnrce301$ sudo rm -rf data-postgres-1
cloud-user@dnup0300-aio-1-master-1:/data/cee-dnrce301$ sudo rm -rf data-postgres-2
Nota: In alcuni casi le cartelle "/data//postgres<0,1,2>" vengono create su nodi diversi, ad esempio master-1, master-2, master-3 e così via.
Ripristina CEE
Accedere all'Ops Center per ripristinare CEE ed eseguire i seguenti comandi CLI:
[pod-name-smf/podname] cee# conf
Entering configuration mode terminal
[pod-name-smf/podname] cee(config)# system mode running
[pod-name-smf/podname] cee(config)# commit
Commit complete.
[pod-name-smf/podname] cee(config)# end
[pod-name-smf/podname] cee# exit
Aspettate che il sistema raggiunga il 100%.
Registra assegni
Verifica Kubernetes dal Master
Eseguire questo comando per controllare lo stato del Grafana pod e di altri pod:
cloud-user@pod-name-smf-master-1:~$ kubectl get pods -A -o wide | grep grafana
cloud-user@pod-name-smf-master-1:~$ kubectl get pods -A -o wide
Tutti i pod devono essere visualizzati UP e RUNNING senza riavvii.
Verifica della cancellazione degli avvisi da CEE
Eseguire questo comando per verificare che gli avvisi vengano cancellati da CEE:
[pod-name-smf/podname] cee# show alerts active summary | include "POD_Res|k8s_grafana"