ACK 上で ML モデルをサービングするため、Alibaba Cloud に最適化された KServe ディストリビューションである ack-kserve をインストールします。
前提条件
バージョン 1.22 以降のACK Edge クラスターが必要です。 詳細については、「ACK Edge クラスターの作成」をご参照ください。
NGINX Ingress コントローラーがインストールされている必要があります。 詳細については、「ACK Edge クラスターへの Ingress コントローラーのデプロイ」をご参照ください。
手順1:cert-manager のインストール
ack-kserve は、TLS 証明書の管理のために cert-manager に依存します。
-
ACKコンソールにログインします。左側メニューで、[クラスター] をクリックします。
-
[クラスター] ページで、対象クラスターの名前をクリックします。左側メニューで、[アプリケーション] > [Helm] を選択します。
-
[Helm] ページで、[デプロイ] をクリックします。[基本情報] で [アプリケーション名] を設定し、[Chart] セクションで
cert-managerを選択し、[次へ] をクリックします。 -
[パラメーター] で [Chart バージョン] と [パラメーター] を確認し、[OK] をクリックします。
デプロイ後、cert-manager が [Helm] ページに表示されます。
手順2:ack-kserve コンポーネントのインストール
デフォルトでは、ack-kserve は RawDeployment モードでデプロイされ、NGINX Ingress コントローラーと統合されます。
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターの名前をクリックします。 左側のナビゲーションウィンドウで、 を選択します。
[Helm] ページで、[デプロイ] をクリックします。[基本情報] で [アプリケーション名] を設定し、[Chart] セクションで
ack-kserveを選択し、[次へ] をクリックします。[パラメーター] で [Chart バージョン] と [パラメーター] を確認し、[OK] をクリックします。デプロイ後、ack-kserve が [Helm] ページに表示されます。
kserve の inferenceservice-config を変更します。
Helm ページで [kserve] をクリックし、[inferenceservice-config] をクリックしてから、YAML の編集 をクリックします。 YAML ファイルで、
ingressClassNameフィールドを、NGINX Ingress コントローラーのインストールで設定したingressClassResource.nameと一致するように変更します。-
ack-kserve が実行中であることを確認します。
kubectl get pod -n kserveすべての Pod の
STATUS列にrunningと表示されていれば、ack-kserve は正常にインストールされています。
(オプション) 手順3:ack-kserve の表示または更新
コンポーネント詳細の表示
[Helm] ページで ack-kserve を見つけ、[アクション] 列の [詳細] をクリックします。 詳細ページには、[基本情報]、[パラメーター]、および[履歴] のタブが表示されます。
コンポーネントの更新
[Helm] ページで ack-kserve を探し、[アクション] 列の [更新] をクリックします。[リリースを更新] パネルで、チャートバージョンを変更するか、パラメーターを編集します。
(オプション) 手順4:ack-kserve アドオンのアンインストール
孤立リソースの発生を避けるため、次の順序でコンポーネントをアンインストールしてください。
-
KServe カスタムリソースの削除
-
KServe CustomResourceDefinition (CRD) の削除
-
ack-kserve のアンインストール
-
cert-manager のアンインストール
-
cert-manager CRD の削除
KServe カスタムリソースと CRD の削除
CRD を削除すると、関連するすべてのカスタムリソースが自動的に削除されます。削除されたカスタムリソースは復元できません。InferenceService リソースが不要になったことを確認してください。
-
すべての InferenceService カスタムリソースをバックアップして削除します。
# クラスター内のすべての InferenceService リソースを一覧表示 kubectl get isvc --all-namespaces # すべての InferenceService リソースをファイルにバックアップ kubectl get isvc --all-namespaces -oyaml > isvc.yaml.bak # すべての InferenceService リソースを削除 kubectl delete isvc --all -
KServe CRD を削除します。
説明CRD を削除する前に、すべてのカスタムリソースを削除してください。そうしないと、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
ack-kserve のアンインストール
-
ACKコンソールにログインします。左側メニューで、[クラスター] をクリックします。
-
[クラスター] ページで、対象クラスターの名前をクリックします。左側メニューで、[アプリケーション] > [Helm] を選択します。
-
[Helm] ページでack-kserve の [アクション] 列にある [削除] をクリックします。ダイアログボックスで [OK] をクリックします。
cert-manager のアンインストール
アンインストールする前に、他のクラスターコンポーネントが cert-manager に依存していないことを確認してください。使用中に cert-manager を削除すると、サービスの中断が発生します。
-
ACKコンソールにログインします。左側メニューで、[クラスター] をクリックします。
-
[クラスター] ページで、対象クラスターの名前をクリックします。左側メニューで、[アプリケーション] > [Helm] を選択します。
-
[Helm] ページでcert-manager の [アクション] 列にある [削除] をクリックします。ダイアログボックスで [OK] をクリックします。
-
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 のインストール中のエラー:TLS 証明書の検証に失敗しました
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 authorityack-kserve は、cert-manager の準備が完了している必要があります。 このエラーは、cert-manager がインストールされていないか、その Pod がまだ実行されていない場合に発生します。
cert-manager がインストールされているかどうかを確認します:
kubectl get crd | grep certificates.cert-manager.iocert-manager がインストールされている場合の期待される出力:
certificates.cert-manager.io 2024-05-06T07:09:17Z出力がない場合は、まずcert-manager をインストールしてください。
cert-manager の Pod の準備ができているかどうかを確認します:
kubectl -n cert-manager get poすべての Pod の
READY列に1/1と表示される必要があります: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 の準備が整っている場合は、ack-kserve をアンインストールし、再インストールしてください。