全部產品
Search
文件中心

Container Service for Kubernetes:在ACK叢集中部署和管理ack-kserve組件

更新時間:Apr 26, 2025

KServe是一個開源專案,旨在通過YAML檔案提供聲明式API,簡化Kubernetes上機器學習模型的部署和管理。ack-kserve基於開源KServe進行深度最佳化,並與阿里雲生態(如儲存、日誌、網路等)深度整合,簡化了KServe的部署和營運流程。本文介紹如何在ACK叢集中部署和管理ack-kserve組件。

前提條件

步驟一: 安裝cert-manager組件

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

  2. 叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇應用 > Helm

  3. 單擊左上方建立,在基本資料頁面填寫應用程式名稱,在Chart地區搜尋選中cert-manager,然後單擊下一步

  4. 參數配置頁面,確認Chart 版本參數資訊後,單擊確定

    部署成功後,可以在Helm頁面查看cert-manager的Helm組件資訊。

步驟二:安裝ack-kserve組件

ack-kserve組件預設採用RawDeployment模式部署,並與Nginx Ingress Controller組件整合。

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

  2. 叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇應用 > Helm

  3. 單擊左上方建立,在基本資料頁面填寫應用程式名稱,在Chart地區搜尋選中ack-kserve,然後單擊下一步

  4. 參數配置頁面,確認Chart 版本參數資訊後,單擊確定

    部署成功後,可以在Helm頁面查看ack-kserve的Helm組件資訊。

  5. 校正ack-kserve是否運行。

    執行以下命令,查看Pod運行狀態。

    kubectl get pod -n kserve

    如果預期輸出的STATUSrunning狀態,表明ack-kserve組件已經安裝成功。

(可選)步驟三:查看或更新ack-kserve️組件

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

  2. 叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇應用 > Helm

  3. 查看ack-kserve️組件詳情。

    Helm頁面,單擊ack-kserve組件操作列的詳情,即可查看組件的基本資料、參數配置及歷史版本。

  4. 更新ack-kserve️組件資訊。

    Helm頁面,單擊ack-kserve組件操作列的更新,即可更新群組件的版本及參數。

(可選)步驟四:清理資源和卸載組件

  1. 為避免資源浪費,請在卸載ack-kserve️組件前刪除叢集內的KServe CR(Custom Resource )及CRD(Custom Resource Definition)資源。

    重要

    刪除CR和CRD資源之前,請確認業務不再使用CR和CRD資源。刪除CRD資源會同步刪除對應的CR資源,CR資源一旦刪除將無法恢複。

    1. 確認業務不再使用後,再刪除叢集內所有的KServe CR資源。刪除CR資源可能涉及以下命令:

      # 查看叢集內所有isvc資源。
      kubectl get isvc --all-namespaces
      
      # 儲存叢集內所有isvc資源。
      kubectl get isvc --all-namespaces -oyaml > isvc.yaml.bak
      
      # 確認業務不再使用後刪除isvc資源。
      kubectl delete isvc --all
    2. 刪除叢集內的KServe CRD資源。

      在刪除CRD之前,應確保先刪除所有依賴於該CRD的CR,否則會導致CRD刪除失敗。

      kubectl delete crd clusterservingruntimes.serving.kserve.io
      kubectl delete crd clusterstoragecontainers.serving.kserve.io
      kubectl delete crd inferencegraphs.serving.kserve.io
      kubectl delete crd inferenceservices.serving.kserve.io
      kubectl delete crd predictors.serving.kserve.io
      kubectl delete crd servingruntimes.serving.kserve.io
      kubectl delete crd trainedmodels.serving.kserve.io
  2. 卸載ack-kserve組件。

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

    2. 叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇應用 > Helm

    3. Helm頁面,單擊ack-kserve組件操作列的刪除,即可根據頁面提示卸載ack-kserve組件。

  3. 卸載cert-manager組件。

    警告

    卸載cert-manager組件前,請先確認叢集中沒有其他組件使用cert-manager組件,否則會導致業務不可用。

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

    2. 叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇應用 > Helm

    3. Helm頁面,單擊cert-manager組件操作列的刪除,即可根據頁面提示卸載cert-manager組件。

  4. 執行以下命令,刪除叢集內cert-manager的CRD資源。

    kubectl delete crd certificaterequests.cert-manager.io
    kubectl delete crd certificates.cert-manager.io
    kubectl delete crd challenges.acme.cert-manager.io
    kubectl delete crd clusterissuers.cert-manager.io
    kubectl delete crd issuers.cert-manager.io
    kubectl delete crd orders.acme.cert-manager.io

常見問題及解決方案

常見問題:安裝ack-kserve組件時出現報錯failed to call webhook: Post "https://cert-manager-webhook.cert-manager.svc:443/validate?timeout=30s": tls: failed to verify certificate: x509: certificate signed by unknown authority

問題原因:ack-kserve組件強依賴於cert-manager組件,如果當前叢集中未安裝cert-manager組件或者cert-manager組件未就緒,此時安裝ack-kserve組件就會出現上述報錯。

解決方案

  1. 執行以下命令,確認叢集中是否已經安裝cert-manager組件。

    kubectl get crd |grep certificates.cert-manager.io

    預期輸出如下所示,表明叢集中已經安裝cert-manager組件。

    certificates.cert-manager.io                         2024-05-06T07:09:17Z

    如叢集中沒有cert-manager的CRD資源,請參見步驟一安裝cert-manager組件。

  2. 執行以下命令,確認cert-manager組件是否已經就緒。

    kubectl -n cert-manager get po

    預期輸出如下所示,表明cert-manager組件的Pod均已就緒。

    NAME                                       READY   STATUS    RESTARTS   AGE
    cert-manager-7f4bb44d5b-jrrfn              1/1     Running   0          23h
    cert-manager-cainjector-79544456cc-qp5pp   1/1     Running   0          23h
    cert-manager-webhook-f74ccb647-7m5dt       1/1     Running   0          23h

    如果所有Pod均為Ready狀態,請參見上文先卸載ack-kserve組件,然後再重新安裝即可解決報錯。