Inhoud

Inleiding

Acroniemen

Vereiste logs

Volgorde voor probleemoplossing

Mogelijke scenario's die leiden tot een probleem met latere configuratieherstel

Onbeschikbaarheid van configuratie

Beperkingen CPU-cyclus

Inleiding

In dit document wordt beschreven hoe u de pod ops-center kunt identificeren en herstellen in de status CrashLoopBackOff.

Acroniemen

RCM – Redundancy Configuration Manager

JJJJ-MM-DD uu:mm:ss – Jaar-Maand-Dag Uur: Minuut: seconde

CPU – centrale verwerkingseenheid

Vereiste logs

RCM-opdrachtuitvoer vereist voor probleemoplossing:

1. kubectl get pods --namespace <namespace>

2. kubectl describe pods <podname> --namespace <namespace>

3. journalctl --since "YYYY-MM-DD hh:mm:ss" --until "YYYY-MM-DD hh:mm:ss" > /tmp/<filename>

4. kubectl --namespace rcm logs --previous <pod name> --container <container name> > /tmp/<filename>

Volgorde voor probleemoplossing

1. Controleer of de betreffende ops-center-pod zich in een MASTER RCM of BACKUP RCM bevindt door de opdracht uit te voeren in het paar met hoge beschikbaarheid:

# rcm show-status

Example :

[unknown] rcm# rcm show-status

message :

{"status”: “MASTER"}

2. Verzamel de pod beschrijving van de getroffen op-center pod en controleer de herstart telling en welke exit codes in de containers zijn in een problematische staat. Zo verkeren de confd- en confd-meldingen momenteel in een problematische toestand, zoals aangegeven:

Example:

rcm # kubectl describe pods ops-center-rcm-ops-center --namespace rcm

Name:         ops-center-rcm-ops-center

Namespace:    rcm

…

Containers:

confd:

…

Last State:     Terminated

Reason:       Error

Exit Code:    137

Started:      Fri, 01 Dec 2023 12:44:13 +0530

Finished:     Fri, 01 Dec 2023 12:46:09 +0530

Ready:          False

Restart Count:  8097

…

confd-api-bridge:

…

State:          Running

Started:      Tue, 09 May 2023 02:36:37 +0530

Ready:          True

Restart Count:  0

…

product-confd-callback:

…

State:          Running

Started:      Tue, 09 May 2023 02:36:38 +0530

Ready:          True

Restart Count:  0

…

confd-notifications:

…

State:          Running

Started:      Fri, 01 Dec 2023 12:46:14 +0530

Last State:     Terminated

Reason:       Error

Exit Code:    1

Started:      Fri, 01 Dec 2023 12:40:50 +0530

Finished:     Fri, 01 Dec 2023 12:46:00 +0530

Ready:          True

Restart Count:  5278

…

3. Controleer de afsluitcode om de oorzaak van de eerste herstart van de container te begrijpen.

Voorbeeld:

Afsluitcode 137 geeft aan dat de containers/pod niet voldoende geheugen hebben.

Afsluitcode 1 geeft aan dat de container is afgesloten vanwege een toepassingsfout.

4. Controleer het tijdschrift om de tijdlijn van het probleem te controleren en te begrijpen vanaf het moment dat het probleem wordt waargenomen. Logs die aangeven dat de container confd-meldingen opnieuw worden opgestart, zoals hier wordt weergegeven, kunnen worden gebruikt om het begin van de uitgiftetijd te identificeren:

Nov 29 00:00:01 <nodename> kubelet[30789]: E1129 00:00:01.993620   30789 pod_workers.go:190] "Error syncing pod, skipping" err="failed to \"StartContainer\" for \"confd-notifications\" with CrashLoopBackOff: \"back-off 5m0s restarting failed container=confd-notifications pod=ops-center-rcm-ops-center (<podUID>)\"" pod="rcm/ops-center-rcm-ops-center" podUID=<podUID>

5. Controleer de containerlogboeken van opnieuw opgestarte containers en controleer de oorzaak van de doorlopende containerherstartlus. In dit voorbeeld geven de containerlogs aan dat de herstelconfiguratie niet is geladen:

Example:

rcm # kubectl --namespace rcm logs --previous ops-center-rcm-ops-center --container confd

ConfD started

Failed to connect to server

All callpoints are registered - exiting

ConfD restore

Failure loading the restore configuration

ConfD load nodes config

DEBUG Failed to connect to ConfD: Connection refused

confd_load: 290: maapi_connect(sock, addr, addrlen) failed: system call failed (24): Failed to connect to ConfD: Connection refused

…

Failure loading the nodes config

ConfD load day-N config

Failure loading the day-N config

…

Failure in starting confd - see previous errors - killing 1

rcm # kubectl --namespace rcm logs --previous ops-center-rcm-ops-center --container confd-notifications

…

Checking that ConfD is running.

Checking that ConfD is running.

ConfD is up and running

Failed to load schemas from confd

Waarschuwing:

Als containerlogs worden uitgevoerd met de optie --previous op een container die niet opnieuw is opgestart of beëindigd, wordt een fout geretourneerd:

rcm:~# kubectl --namespace rcm logs --previous ops-center-rcm-ops-center --container confd-api-bridge > /tmp/confd_api_bridge_p_log

Error from server (BadRequest): previous terminated container "confd-api-bridge" in pod "ops-center-rcm-ops-center" not found

Mogelijke scenario's die leiden tot een probleem met latere configuratieherstel

Onbeschikbaarheid van configuratie

- De confd-api-bridge container heeft de functie om de configuratie van confd te lezen en elke seconde een back-up te maken. De confd-api-bridge slaat het op in de configmap ops-center-confd-<opscenter-name>.

- Als de confd-container wordt gestopt en vervolgens de confd-api-bridge geen antwoord ontvangt voor de configuratie, slaat deze een lege configuratie op in de configmap.

- Wanneer de confd-container probeert te herstellen vanuit de beschikbare back-upconfiguratie, mislukt dit en wordt de status CrashLoopBackOff veroorzaakt. Dit kan worden geverifieerd uit de confd container logs:

confd_load: 660: maapi_candidate_commit_persistent(sock, NULL) failed: notset (12): /cisco-mobile-product:kubernetes/registry is not configured

Dit gedrag wordt aangepakt door een Cisco bug ID CSCwi15801.

Beperkingen CPU-cyclus

- Wanneer de confd-container probeert te herstellen, wordt de container opnieuw gestart als het opstarten niet binnen dertig seconden is voltooid.

- Het opstarten is vertraagd als de CPU niet de vereiste cycli ontvangt vanwege de hoge CPU-belasting op de RCM.

- Als de RCM-CPU in een bezette toestand blijft vanwege belasting door andere pods zoals rcm-checkpointmgr, blijft de confd-container opnieuw opstarten en veroorzaakt de CrashLoopBackOff-status.

Dit gedrag wordt aangepakt door een Cisco bug ID CSCwe79529.

Opmerking:

- Als de MASTER RCM is aangetast, voert u een RCM-overschakeling uit naar de BACKUP RCM en lost u het probleem vervolgens verder op. En als er geen RCM voor BACK-UP beschikbaar is, gaat u verder met het oplossen van problemen met de RCM voor de MASTER.

- Het wordt aanbevolen om Cisco TAC te raadplegen voordat u een tijdelijke oplossing uitvoert als een pod in het midden van een ops wordt waargenomen in de status CrashLoopBackOff.