简介
本文档介绍对策略控制功能(PCF)中的Kubernetes Pod Not Ready进行故障排除的过程。
先决条件
要求
Cisco 建议您了解以下主题:
- PCF
- 5G云原生部署平台(CNDP)
- 多克和库伯内特
使用的组件
本文档中的信息基于以下软件和硬件版本:
- PCF REL_2023.01.2
- Kubernetes v1.24.6
本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您的网络处于活动状态,请确保您了解所有命令的潜在影响。
背景信息
在此设置中,CNDP托管PCF。
当Kubernetes Pod处于“未就绪”状态时,这意味着Pod当前无法服务流量,因为其一个或多个容器未处于就绪状态。这可能是由于各种原因造成的,例如容器仍在启动、运行状况检查失败或遇到错误。
问题
您会看到Kubernetes(K8)Pod(未就绪状态)的通用执行环境(CEE)警报。
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...
分析
方针1
登录到Kubernetes(K8s)节点后,检查当前处于“未就绪”状态的节点的警报。
建议检查任何升级或维护过程。届时,可使Pod脱机,以便应用更新、安装新软件或执行其他必要的任务。或执行可能会影响Pod可用性的持续维护活动。
在对等站点(GR)进行站点升级活动期间,镜像Pod应处于上述状态。
连接到主节点并验证镜像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.
方针2
如果您收到提示Kubernetes(K8s)Pod在CEE内未处于就绪状态的警报,则表明Pod遇到问题,不能认为完全可操作。此状态通常意味着Pod无法接受流量或实现其预期功能。
分析警报和相关信息,以了解“未就绪”状态的原因。警报可以提供有关导致节点状态更改的特定问题或触发器的详细信息。节点处于“未就绪”状态的常见原因包括资源限制、网络连接问题、硬件故障或配置问题。
步骤1:使用命令验证Pod状态kubectl get pods
,以检查Pod的状态并查找Pod状态。如果Pod未就绪,它可能会显示“Pending”、“CrashLoopBackOff”或“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
第二步:登录主VIP并获取pgpool pod。
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:~$
第三步:删除pgpool pod。
cloud-user@pcf01-master-1:~$ kubectl delete pod <pgpool pod name> -n cee-pcf
第四步:验证新的pgpool pod运行正常。
cloud-user@pcf01-master-1:~$ kubectl get pods -A -o wide | grep -i pgpool
第五步:验证与pgpool pod相关的警报已在CEE运营中心上清除。
[pcf01/pcfapp] cee# show alerts active summary