操作和疑難排解

監控、維護和疑難排解模型閘道部署,包括模型設定更新、憑證輪換、健康監控、日誌收集,以及常見連線和身分驗證問題的解決方案。

部署後,對模型閘道的持續操作管理有助於確保對已設定 AI 模型的可靠存取,並將服務中斷降至最低。管理員可以檢閱活動的模型設定、更新供應商憑證、輪換 Secret、監控閘道健康狀態,以及在發生問題時收集診斷資訊。

檢視已設定的模型

檢視模型有兩個層次——設定檔中的內容,以及 bob-inference 在執行時實際載入的內容。

  • 設定層次 — 從推論 ConfigMap 擷取目前的模型閘道設定:
    oc get cm bob-inference-config -n <bob-namespace> -o yaml | yq '.data."config.yaml"'
  • 執行時層次 — bob-inference 已註冊且正在主動路由的模型:
    oc exec -n <bob-namespace> deploy/bob-gateway -- \
      curl -sk https://bob-inference.<bob-namespace>.svc.cluster.local:7330/v1/model/info | jq .
注意:

執行時的 /v1/model/info 端點只列出 exposed: true 的模型。設定檔是查看已設定模型完整集合的唯一方式。

更新供應商憑證

憑證儲存在 config.yaml 的 bob.modelGateway.secrets 下。使用 bobctl update-model-config --update-secrets 將更新後的憑證推送到叢集。

更新憑證

在 config.yaml 的 bob.modelGateway.secrets 下更新憑證。

將更新後的 Secret 推送到叢集

bobctl update-model-config --update-secrets

ibm-bob-operator 會調解 bob-inference 部署並自動掛載新的 Secret。

提示:

如果你同時更新模型設定檔和憑證,可以用單一指令一次推送兩者:

bobctl update-model-config --model-config ./my-model-config.yaml --update-secrets

輪換 Secret

Secret 輪換遵循與憑證更新相同的模式,但需要特別注意時機以避免停機。

建議的零停機輪換順序:

  1. 在 config.yaml 的 bob.modelGateway.secrets 中更新新的憑證值。
  2. 將新的 Secret 推送到叢集:bobctl update-model-config --update-secrets。
  3. 重啟 Inference Service 以套用新的 Secret:
    oc rollout restart deploy/inference-service -n <bob-namespace>
  4. 使用安裝後驗證中的推論測試確認新憑證有效。
  5. 確認部署健康後,才在供應商端撤銷舊憑證。

供應商特定注意事項:

  • openai_compatible / API 金鑰 — 更新 Secret 後新金鑰立即生效。一旦部署確認健康,即可安全撤銷舊金鑰。
  • bedrock — 執行 update-model-config 之前,確保新的 IAM 存取金鑰在 AWS 中已生效。IAM 傳播可能需要幾秒鐘。
  • vertex — 生成並以 base64 編碼新的服務帳戶金鑰,更新 config.yaml,執行 bobctl update-model-config --update-secrets,驗證後在 GCP 中刪除舊金鑰。
  • ca_cert_pem — 憑證更新時,在套用前確認新憑證未過期。請參閱 TLS 憑證驗證。

監控閘道健康狀態

Pod 重啟次數 — 重啟次數持續上升是週期性啟動失敗的早期信號(Bad Secret 掛載、設定解析錯誤):

oc get pods -n <bob-namespace> -l app=bob-inference \
  -o custom-columns='NAME:.metadata.name,RESTARTS:.status.containerStatuses[0].restartCount'

存活和就緒探測 — 檢查目前的探測設定和狀態:

oc describe deploy/bob-inference -n <bob-namespace> | grep -A 10 "Liveness\|Readiness"

定期健康檢查 — /v1/model/info 端點可作為簡單的存活檢查。如果它返回有效的模型清單,表示閘道正在運作。這可以從監控工具或叢集內的 cron job 進行輪詢。

收集日誌和診斷資訊

特定時間窗口的日誌(在調查已回報的事件時最有用):

oc logs -n <bob-namespace> deploy/bob-inference \
  --since-time="2025-01-01T12:00:00Z" > bob-inference.log

前一個 Pod 實例的日誌(如果 Pod 已重啟且失敗日誌已消失):

oc logs -n <bob-namespace> deploy/bob-inference --previous

完整診斷套件組合,供支援使用:

oc describe pod -n <bob-namespace> -l app=bob-inference >> diagnostics.txt
oc get events -n <bob-namespace> --sort-by='.lastTimestamp' >> diagnostics.txt
oc logs -n <bob-namespace> deploy/bob-inference --since=1h >> diagnostics.txt
注意:

診斷套件組合包含 Pod 環境變數名稱,但不包含 Secret 值(Secret 是掛載的,不會列印到日誌中)。在傳送給支援人員之前,請檢閱日誌是否有任何意外輸出的憑證。

疑難排解連線和身分驗證問題

模型未出現在 /v1/model/info 中

  1. 檢查是否設定了 exposed: false——如果是,這是預期行為。
  2. 在啟動日誌中檢查該 model_name 的註冊錯誤。
  3. 驗證供應商區塊——正確的 base_url、model ID 和憑證。

推論請求出現 401 Unauthorized

  1. 確認 bob.modelGateway.secrets 中的 Secret 值正確且是最新的。
  2. 確認模型設定中的 env.<VAR> 參照與 Secret 金鑰名稱完全相符(區分大小寫)。
  3. 重啟 Inference Service 並重試——Secret 可能已更新但未重啟。
  4. 在外部測試憑證。請參閱身分驗證驗證。

502 Bad Gateway 或 connection refused

  1. 確認模型端點已啟動,且可從叢集存取。請參閱連線能力測試。
  2. 檢查 base_url 問題——結尾斜線、錯誤的協定(http 與 https)、錯誤的連接埠。
  3. 檢查可能在安裝後阻止出站流量的網路原則變更。

certificate signed by unknown authority

  1. 確認 ca_cert_pem 已設定且參照有效的環境變數。
  2. 確認環境變數存在於 bob.modelGateway.secrets 中。
  3. 驗證憑證未過期:openssl x509 -noout -dates。
  4. 透過檢查主體別名確認憑證覆蓋端點的主機名稱。

Inference Service Pod 處於 CrashLoopBackOff

  1. 從前一個實例檢查日誌:oc logs --previous。
  2. 尋找設定解析錯誤——模型閘道設定中格式錯誤的 YAML。
  3. 在事件區段中尋找缺少的 Secret 掛載:oc describe pod。
  4. 在重新套用之前確認模型閘道設定 YAML 有效。
這個主題如何?