全部產品
Search
文件中心

:GPU配置故障警示及修複方案

更新時間:Dec 12, 2024

ACK叢集針對GPU節點的壞卡情境,提供了多維度監控、診斷、警示與恢複機制。本文將介紹GPU節點故障的具體排查步驟及恢複方案。

背景資訊

  1. 日常監測與警示配置:您可以根據實際需求,對GPU相關的Metrics(ACK GPU監控2.0)和Events(ACK Node Problem Detector)進行警示配置。當GPU發生故障時,系統將及時觸發警示通知,從而加快問題響應速度。

  2. CIS智能診斷與分析:在GPU出現故障時,僅依賴警示事件可能不足以全面掌握GPU節點的狀態和具體問題。此時,可以通過容器智能營運(CIS)對受影響的GPU節點或GPU Pod應用進行全面診斷。擷取詳細診斷報告後,您可以根據報告中的故障細節確定故障類型,並採取相應的解決措施。

  3. 故障隔離與修複:對於需要隔離處理的特定故障,ACK提供了節點層級和GPU卡層級的隔離功能。在完成損毀修復後,可解除隔離,恢複正常運行。

步驟一:日常監測與警示配置

利用NPD組件可以實現對GPU卡做定期巡檢,監測GPU卡是否異常,並通過設定連絡人來接收相關警示通知。

  1. 登入Container Service管理主控台,在左側導覽列選擇叢集

  2. 叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇營運管理 > 組件管理

  3. 組件管理頁面,搜尋ack-node-problem-detector組件並進行安裝

    說明

    若您之前已安裝該組件,請確保組件版本不低於1.2.20。更多詳細資料,請參見ack-node-problem-detector

  4. 叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇營運管理 > 警示配置

  5. 警示配置頁面,單擊進入連絡人管理頁簽,單擊建立,根據控制台指引完成連絡人資訊配置。

  6. 進入警示規則管理頁簽,找到叢集GPU監控警示規則集,單擊右側對應啟動狀態,然後單擊編輯通知對象選擇相應的通知對象。

步驟二:CIS智能診斷與分析

當叢集管理員通過手機簡訊、郵箱或DingTalk聊天機器人等方式獲知叢集中的GPU節點出現故障時,可以登入Container Service控制台,使用CIS智能診斷工具對有問題的GPU節點進行進一步故障定位和分析。

  1. 登入Container Service管理主控台,在左側導覽列選擇叢集

  2. 叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇巡檢和診斷 > 故障診斷

  3. 故障診斷頁面,單擊節點診斷,然後在節點診斷頁面的左上方,單擊診斷

  4. 選擇節點面板,選擇對應節點名稱,仔細閱讀注意事項後選中我已知曉並同意,單擊發起診斷

  5. 診斷完成後,會顯示各個診斷項的結果。關於檢查項詳細資料,請參見節點診斷

    如果節點上的GPU出現了XID Error,那麼在診斷結果中的GPUXIDErrors中會出現{"GPU-326dc0ce-XXXX-77b6-XXXX-9a2eeXXXX":["43"]}錯誤,說明在GPU UUID為GPU-xxx的GPU裝置上出現了Number為43的XID。更多診斷結果說明,請參見NPD中GPU壞卡事件

步驟三:隔離節點上的GPU裝置

手動隔離

當發現了GPU上的故障之後,需要將這張GPU卡進行隔離,避免後續的GPU應用Pod被分配到這張GPU裝置上。詳細操作,請參見GPU Device-Plugin相關操作。 如果您需要隔離目標節點上index1UUIDGPU-xxx-xxx-xxx的GPU卡,需要在目標節點的 /etc/nvidia-device-plugin/ 目錄下編輯或建立 unhealthyDevices.json 檔案,並在其中寫入以下內容,任選一種即可。

// 按照 Index 寫入
{
    "index": ["1"]
}

// 按照 UUID 寫入
{
    "uuid": ["GPU-xxx-xxx-xxx"]
}

儲存後即生效,後續在修複完成後將檔案中寫入的隔離的GPU Item去除即可恢複。

自動隔離

  1. 如果期望自動對節點的GPU卡進行隔離操作,請登入故障節點,並修改/etc/kubernetes//manifests/nvidia-device-plugin.yml檔案,刪除以下環境變數。

    說明

    如果該環境變數不存在,則無需進行額外操作,自動隔離GPU功能已經啟用。

          env:
          - name: DP_DISABLE_HEALTHCHECKS
            value: all
  2. 刪除環境變數後,需執行以下命令,重啟Device Plugin。

    mv /etc/kubernetes/manifests/nvidia-device-plugin.yml /etc/kubernetes/
    # 等待幾秒,舊Pod被清理的過程。
    mv /etc/kubernetes/nvidia-device-plugin.yml /etc/kubernetes/manifests/

NPD中GPU壞卡事件

事件原因

事件訊息

含義

處理建議

NodeGPULostCard

Node has lost GPU card

該GPU節點存在掉卡現象。

嘗試重啟節點,如果重啟節點後仍出現掉卡情況,則需提交工單聯絡阿里雲工程師。

NodeHasGPUXidError

Node GPU Xid error has occurred

該節點上的GPU存在XID錯誤,並上報相關XID資訊。

嘗試重啟節點,如果重啟節點後仍未恢複,則需提交工單聯絡阿里雲工程師。

NodeHasNvidiaSmiError

Node GPU nvidia-smi error, maybe infoROM or device fault

檢查節點上執行nvidia-smi的情況,如果nvidia-smi執行失敗,或者出現GPU裝置的fault ERRinfoROM等錯誤時會上報對應出問題的卡資訊。

嘗試重啟節點,如果重啟節點後仍未恢複,則需提交工單聯絡阿里雲工程師。

NodeHasGPUECCError

Node GPU maybe have some ECC errors

檢查節點上是否存在ECC Error,並上報對應出問題的卡資訊。

嘗試重啟節點,如果重啟節點後仍未恢複,則需提交工單聯絡阿里雲工程師。

NodeGPUHasHighTemperature

Node GPU have high temperature, above 85 degrees

檢查節點GPU卡的溫度狀況,如果超過89攝氏度則認為過熱,上報溫度高的卡的資訊。

該事件僅為警告事件,只作提示。