全部產品
Search
文件中心

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

更新時間:Aug 13, 2024

KServe是一個開源專案,旨在簡化在Kubernetes上部署和運行機器學習模型的過程,支援多種機器學習架構、具備彈性擴容能力。KServe通過定義簡單的YAML檔案,提供聲明式的API來部署模型,使得配置和管理模型服務變得更加容易。本文介紹如何在ACK叢集中部署和管理ack-kserve組件以及常見問題的解決方案。

前提條件

步驟一: 安裝cert-manager組件

如果您的叢集中已經安裝cert-manager組件,請跳過此步驟。

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

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

  3. Helm頁面單擊建立,然後在建立頁面,將應用程式名稱設定為cert-manager,在Chart地區的搜尋欄搜尋並選中cert-manager,完成後單擊下一步,在彈出的對話方塊中單擊,確認採用cert-manager為Chart的預設的命名空間。

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

    部署成功後,頁面自動跳轉至Helm頁面,供您查看cert-manager的Helm組件資訊。

步驟二:安裝ack-kserve組件

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

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

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

  3. Helm頁面單擊建立,然後在建立頁面,將應用程式名稱設定為ack-kserve,在Chart地區的搜尋欄搜尋並選中ack-kserve,完成後單擊下一步,在彈出的對話方塊中單擊,確認採用kserve為Chart的預設的命名空間。

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

    部署成功後,頁面自動跳轉至Helm頁面,供您查看ack-kserve的Helm組件資訊。

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

    執行以下命令,查看kserve命名空間下的Pod是否處於running狀態。

    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組件,然後再重新安裝即可解決報錯。