Introdução
Este documento descreve o procedimento para fazer Troubleshooting do Kubernetes Pod Not Ready visto na Policy Control Function (PCF).
Pré-requisitos
Requisitos
A Cisco recomenda que você tenha conhecimento destes tópicos:
- PCF
- Plataforma de implantação nativa em nuvem (CNDP) 5G
- Dockers e Kubernetes
Componentes Utilizados
As informações neste documento são baseadas nestas versões de software e hardware:
- PCF REL_2023.01.2
- Kubernetes v1.24.6
As informações neste documento foram criadas a partir de dispositivos em um ambiente de laboratório específico. Todos os dispositivos utilizados neste documento foram iniciados com uma configuração (padrão) inicial. Se a rede estiver ativa, certifique-se de que você entenda o impacto potencial de qualquer comando.
Informações de Apoio
Nesta configuração, o CNDP hospeda o PCF.
Quando um Pod do Kubernetes está em um estado 'Não pronto', isso significa que o Pod não pode atender ao tráfego no momento porque um ou mais de seus contêineres não estão em um estado pronto. Isso pode ser devido a vários motivos, como contêineres que ainda estão sendo inicializados, falhas em verificações de integridade ou erros encontrados.
Problema
Você vê alertas no Common Execution Environment (CEE) para pods Kubernetes (K8s), estado não 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...
Análise
Abordagem 1
Depois de fazer login em um nó Kubernetes (K8s), verifique os alertas para um nó que esteja atualmente com status 'Não pronto'.
É aconselhável verificar qualquer processo de atualização ou manutenção. Nesse momento, o pod pode ser colocado off-line para aplicar atualizações, instalar novo software ou executar outras tarefas necessárias. ou atividades de manutenção em andamento que possam afetar a disponibilidade do pod.
Espera-se que os pods espelho estejam no estado mencionado durante a atividade de atualização do site no site par (GR).
Conecte-se ao nó mestre e verifique o status do pod espelho.
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.
Abordagem 2
Se você receber alertas indicando que um pod Kubernetes (K8s) não está em um estado pronto dentro do CEE, isso sugere que o pod está tendo problemas e não pode ser considerado totalmente operacional. Esse estado normalmente implica que o pod é incapaz de aceitar o tráfego ou cumprir sua função pretendida.
Analise os alertas e as informações relacionadas para entender a causa do status 'Não pronto'. Os alertas podem fornecer detalhes sobre o problema específico ou o acionador que levou à alteração de status do nó. As razões comuns para um nó estar com status 'Não Pronto' incluem restrições de recursos, problemas de conectividade de rede, falhas de hardware ou problemas de configuração.
Etapa 1. Verifique o status do pod usando o comandokubectl get pods
para verificar o status do pod e procurar o status do pod. Se o pod não estiver pronto, ele poderá exibir um status como 'Pending', 'CrashLoopBackOff' ou '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
Etapa 2. Faça login no VIP mestre e obtenha o 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:~$
Etapa 3. Exclua o pod pgpool.
cloud-user@pcf01-master-1:~$ kubectl delete pod <pgpool pod name> -n cee-pcf
Etapa 4. Verifique se o novo pod pgpool está funcionando bem.
cloud-user@pcf01-master-1:~$ kubectl get pods -A -o wide | grep -i pgpool
Etapa 5. Verifique se os alertas relacionados ao pod pgpool foram apagados no centro de ops CEE.
[pcf01/pcfapp] cee# show alerts active summary