Introduzione
Questo documento descrive la procedura per la risoluzione dei problemi relativi a Kubernetes Pod Not Ready rilevata nella Policy Control Function (PCF).
Prerequisiti
Requisiti
Cisco raccomanda la conoscenza dei seguenti argomenti:
- PCF
- 5G Cloud Native Deployment Platform (CNDP)
- Docker e Kubernetes
Componenti usati
Le informazioni fornite in questo documento si basano sulle seguenti versioni software e hardware:
- PCF REL_2023.01.2
- Kubernetes v1.24.6
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
In questa configurazione, il CNDP ospita il PCF.
Quando un Kubernetes Pod si trova nello stato 'Non pronto', significa che il Pod non è attualmente in grado di servire il traffico perché uno o più dei suoi contenitori non sono in uno stato pronto. Ciò può essere dovuto a diversi motivi, ad esempio a contenitori ancora in fase di avvio, a controlli dello stato non riusciti o a errori.
Problema
Vengono visualizzati avvisi su Common Execution Environment (CEE) per i pod Kubernetes (K8s), stato non pronto.
Command:
cee# show alerts active summary summary
Example:
[pcf01/pcfapp] cee# show alerts active summary
NAME UID SEVERITY STARTS AT DURATION SOURCE SUMMARY
----------------------------------------------------------------------------------------------------------
k8s-pod-not-ready 35b143f885ec critical 06-13T08:22:05 mirror-maker-0 Pod pcf-pcf/mirror-maker-0 has been in a non-ready state for longer than 1 minute
k8s-pod-crashing-loop 990b651ad5f5 critical 04-19T22:51:08 pcf01-master-2 Pod cee-irv1bmpcf/pgpool-65fc8b8d5f-2w9nq (pgpool) is restarting 2.03 times / 10 minutes.
k8s-pod-restarting a44d31701faf minor 04-19T01:55:38 pcf01-master-2 Pod cee-irv1bmpcf/pgpool-65fc8b8d5f-2w9nq (pgpool) is restarting 2.03 times / 10 minutes.
k8s-deployment-replic b8f04c540905 critical 04-06T01:53:48 pcf01-master-2 Deployment cee-irv1bmpcf/pgpool has not matched the expected number of replicas for longer th...
k8s-pod-not-ready cb2c8ee4a9c9 critical 04-06T01:53:48 pgpool-65fc8b8d5f-2w9 Pod cee-pcf/pgpool-65fc8b8d5f-2w9nq has been in a non-ready state for longer than 5 min...
Analisi
Approccio 1
Dopo aver effettuato l'accesso a un nodo Kubernetes (K8s), controllare gli avvisi relativi a un nodo che si trova attualmente nello stato 'Non pronto'.
Si consiglia di controllare qualsiasi processo di aggiornamento o manutenzione. In quel momento, il pod può essere messo offline per applicare aggiornamenti, installare nuovo software o eseguire altre attività necessarie. o attività di manutenzione in corso che possono influire sulla disponibilità del pod.
I pod mirror dovrebbero trovarsi nello stato indicato durante l'attività di aggiornamento del sito sul sito peer (GR).
Connettersi al nodo master e verificare lo stato del mirror pod.
cloud-user@pcf01-master-1:~$ kubectl get pods -A -o wide | grep mirror
NAMESPACE NAME READY STATUS RESTARTS AGE
pcf-pcf01 mirror-maker-0 0/1 Running 1 5d23h
#Post upgrade Activity mirror-maker pod status
cloud-user@pcf01-master-1:~$ kubectl get pods -A|grep mirror
pcf-pcf01 mirror-maker-0 1/1 Running 1 6d.
Approccio 2
Se si riceve un messaggio che segnala che un pod Kubernetes (K8s) non è pronto in CEE, si segnala che il pod presenta problemi e non può essere considerato completamente operativo. Questo stato implica in genere che il pod non è in grado di accettare traffico o eseguire la funzione prevista.
Analizzare gli avvisi e le informazioni correlate per comprendere la causa dello stato 'Non pronto'. Gli avvisi possono fornire dettagli sul problema specifico o sul trigger che ha determinato la modifica dello stato del nodo. I motivi più comuni per cui un nodo si trova nello stato 'Non pronto' includono vincoli di risorse, problemi di connettività di rete, errori hardware o problemi di configurazione.
Passaggio 1. Verificare lo stato del pod utilizzando il comandokubectl get pods
per controllare lo stato del pod e cercare lo stato del pod. Se il pod non è pronto, è possibile visualizzarne lo stato, ad esempio 'Pending', 'CrashLoopBackOff' o 'Error'.
cloud-user@pcf01-master-1:~$ kubectl get pods -A -o wide | grep -v Running
NAMESPACE NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
cee-pcf pgpool-65fc8b8d5f-2w9nq 0/1 CrashLoopBackOff 147 (117s ago) 8d xxx.xxx.xxx.xx pcf01-master-2 <none> <none>
All nodes including master-2 are in Ready state
cloud-user@pcf01-master-1:~$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
Pcf01-master-1 Ready control-plane 667d v1.24.6
Pcf01-master-2 Ready control-plane 9d v1.24.6
Pcf01-master-3 Ready control-plane 9d v1.24.6
Pcf01-worker-1 Ready <none> 9d v1.24.6
Pcf01-worker-10 Ready <none> 9d v1.24.6
Pcf01-worker-11 Ready <none> 9d v1.24.6
Pcf01-worker-12 Ready <none> 9d v1.24.6
Pcf01-worker-13 Ready <none> 9d v1.24.6
Pcf01-worker-14 Ready <none> 9d v1.24.6
Pcf01-worker-15 Ready <none> 9d v1.24.6
Pcf01-worker-16 Ready <none> 9d v1.24.6
Pcf01-worker-17 Ready <none> 9d v1.24.6
Pcf01-worker-18 Ready <none> 9d v1.24.6
Pcf01-worker-19 Ready <none> 9d v1.24.6
Pcf01-worker-2 Ready <none> 9d v1.24.6
Pcf01-worker-20 Ready <none> 9d v1.24.6
Pcf01-worker-21 Ready <none> 9d v1.24.6
Pcf01-worker-22 Ready <none> 9d v1.24.6
Pcf01-worker-23 Ready <none> 9d v1.24.6
Pcf01-worker-3 Ready <none> 9d v1.24.6
Pcf01-worker-4 Ready <none> 9d v1.24.6
Pcf01-worker-5 Ready <none> 9d v1.24.6
pcf01-worker-6 Ready <none> 9d v1.24.6
pcf01-worker-7 Ready <none> 9d v1.24.6
pcf01-worker-8 Ready <none> 9d v1.24.6
pcf01-worker-9 Ready <none> 9d v1.24.6
Passaggio 2. Accedi all'indirizzo VIP principale e ottieni il pod pgpool.
cloud-user@pcf01-master-1:~$ kubectl get pods -A -o wide | grep -i pgpool
cee-pcf01 pgpool-65fc8b8d5f-2w9nq 0/1 Running 3173 (3m58s ago) 22d xxx.xxx.xxx.xx pcf01-master-2 <none> <n
cloud-user@pcf01-master-1:~$
Passaggio 3. Eliminare il pod pgpool.
cloud-user@pcf01-master-1:~$ kubectl delete pod <pgpool pod name> -n cee-pcf
Passaggio 4. Verificare che il nuovo pod pgpool funzioni correttamente.
cloud-user@pcf01-master-1:~$ kubectl get pods -A -o wide | grep -i pgpool
Passaggio 5. Verificare che gli avvisi relativi al pod pgpool siano stati cancellati sul centro operativo CEE.
[pcf01/pcfapp] cee# show alerts active summary