---
# System prepended metadata

title: K8s APP BUG 判斷

---

# **K8s APP BUG 判斷**

當應用程式無法部署時，請按照以下步驟檢查問題：

## **查看 Pod 狀態**
點選 => **Workloads** => **Pods**  
Pods 可能顯示以下幾種錯誤訊息：

---
### **1. `ImagePullBackOff`**

**原因**:dockerhub官方限制流量

**解決方法**：

*  172.27.112.35上有所有Docker images已經pull下來了， /root/all_images底下，直接把這些image抓到三個node上docker load -I image.tar.gz
*  建一個harbor registry後把那些image push到harbor上使用harbor安裝App，請參考這篇(https://hackmd.io/@hi6QVh1rRhu69whPhPeqnQ/Hy0iayIb1x)

### **2. `0/3 nodes are available: 3 pod has unbound immediate PersistentVolumeClaims`**

**原因**：PersistentVolumeClaims (PVC) 尚未綁定成功


**解決方法**：  
- 點選左側選單 => **Storage** => **PersistentVolumeClaims**  
- 確認 PVC 狀態是否為 `Bound`。
- 參考以下的作法確認該app的主pod是否有引用到<app-name>-pvc
    這裡以nextcloud為範例:nextcloud需要手動創立
    `nextcloud-main-pvc` `nextcloud-data-pvc`兩個pvc
    

到主pod點選Edit YAML

可以看到POD有到引用`nextcloud-main-pvc` `nextcloud-data-pvc`
![螢幕擷取畫面 2024-12-23 171059](https://hackmd.io/_uploads/ByMdFjUBJx.png)





### **3. `Service does not have load balancer ingress IP address`**

**原因**：Service 沒有分配到load balancer的 IP 位址。

**解決方法**：  
- 點選左側選單 => **Services Discovery** => **Services** 
如果該app的service出現 
```
service is ready:Load balancer is being provisioned
```


請回去install apps點選Edit/Upgrade，勾選"Enable Virtual IP Sharing



### **4. `2 node(s) didn't have enough resource: nvidia.com/gpuInsufficient nvidia.com/gpu`**

**原因**：GPU 資源不足。

**解決方法**：
GPU
左側點選nodes=>(node name)=>往下拉可以看到該node上gpu的使用情況

範例解釋：
* 假設節點顯示 Used: 4 of 10，表示該節點上共有 10 個 GPU replica，其中已使用 4 個replica。
* 剩餘可用 GPU replica 為：10 - 4 = 6。
![螢幕擷取畫面 2024-12-24 100521](https://hackmd.io/_uploads/S13bvcwBJl.png)
*   若現在要部署 Blender，應用程序的 GPU 參數設置需小於 剩餘 GPU replica 
*    例如，剩餘 GPU 為 6 replica，總 GPU 為 10 replica，則 GPU 參數應設為 小於 0.6。
不可跨節點使用 GPU：


<span style="color:red">**K8S無法將APP 跨GPU調度，因此APP的 GPU 參數必須限制在單節點的 GPU 容量內。**
    

**<span style="color:red">參數0.1gpu=1 replica**
<span style="color:red">* 節點 A 有 5 replica GPU，節點 B 有 8 replica GPU，總計 13 replica GPU。
<span style="color:red">* 錯誤做法：設置 GPU 參數為0.9 表示需求 9replica GPU ，導致跨節點資源分配的問題
<span style="color:red">* 正確做法：應將 GPU 參數限制在單節點內，例如節點 A 可設置最大 0.5，節點 B 可設置最大 0.8。   



---

### **5. `0/3 nodes are available:  1 node(s) didn’t match pod anti-affinity rules didn’t match pod anti-affinity rules`**

**原因**：Pod 副本數（replica） 與可用節點數量不匹配，

**解決方法**：  
* 把replica的數量調成跟node數量一樣
* ![螢幕擷取畫面 2024-12-23 145700](https://hackmd.io/_uploads/S1PlcF8rkl.png)

有些app- 例如：ragflow預設的pod就是3，個無法透過replica去做調整這時候請確認pod的數量要與node的數量一致
![Pod 分布問題](https://hackmd.io/_uploads/SkkHEz-Ske.png)  

---

