簡介
本文檔介紹對策略控制功能(PCF)中出現Kubernetes Pod Not Ready進行故障排除的過程。
必要條件
需求
思科建議您瞭解以下主題:
- 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
步驟 2.登入到主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:~$
步驟 3.刪除pgpool pod。
cloud-user@pcf01-master-1:~$ kubectl delete pod <pgpool pod name> -n cee-pcf
步驟 4.驗證新的pgpool pod是否運行正常。
cloud-user@pcf01-master-1:~$ kubectl get pods -A -o wide | grep -i pgpool
步驟 5.驗證是否已清除CEE運營中心上與pgpool pod相關的警報。
[pcf01/pcfapp] cee# show alerts active summary