KServe は、Kubernetes 上での機械学習モデルのデプロイおよび管理プロセスを簡素化するための宣言型 API を提供するオープンソースプロジェクトです。Alibaba Cloud では、オープンソースの KServe を基に最適化し、Alibaba Cloud のストレージ、ロギング、ネットワーク機能などエコシステムと統合した ack-kserve コンポーネントを提供しています。ack-kserve は、Container Service for Kubernetes (ACK) クラスターにおける KServe のデプロイおよび運用保守(O&M)を簡素化します。本トピックでは、ACK クラスターにおける ack-kserve のデプロイおよび管理方法について説明します。
前提条件
-
バージョン 1.22 以降の ACK Edge クラスター を作成済みである必要があります。詳細については、「ACK Edge クラスターの作成」をご参照ください。
-
NGINX Ingress Controller コンポーネントをインストール済みである必要があります。詳細については、「ACK Edge クラスターへの Ingress Controller のデプロイ」をご参照ください。
ステップ 1:cert-manager コンポーネントのインストール
Container Service Management Console にログインします。左側のナビゲーションウィンドウで、クラスターリスト をクリックします。
クラスターリスト ページで、ご利用のクラスター名をクリックします。左側のナビゲーションウィンドウで、 をクリックします。
Helm ページの左上隅にある デプロイ をクリックします。デプロイパネルの 基本情報 ステップで、アプリケーション名 パラメーターを指定し、チャート セクションから
cert-managerを選択して、次へ をクリックします。パラメーター ステップで、チャートバージョン パラメーターの値および パラメーター フィールドに表示される情報を確認し、OK をクリックします。
cert-manager コンポーネントのデプロイが完了すると、Helm ページで cert-manager コンポーネントに関する情報を確認できます。
ステップ 2:ack-kserve コンポーネントのインストール
デフォルトでは、ack-kserve コンポーネントは RawDeployment モードでデプロイされ、NGINX Ingress コントローラーと統合されます。
Container Service Management Console にログインします。左側のナビゲーションウィンドウで、クラスターリスト をクリックします。
クラスターリスト ページで、ご利用のクラスター名をクリックします。左側のナビゲーションウィンドウで、 をクリックします。
Helm ページの左上隅にある デプロイ をクリックします。デプロイパネルの 基本情報 ステップで、アプリケーション名 パラメーターを指定し、チャート セクションから
ack-kserveを選択して、次へ をクリックします。パラメーター ステップで、チャートバージョン パラメーターの値および パラメーター フィールドに表示される情報を確認し、OK をクリックします。
cert-manager コンポーネントのデプロイが完了すると、Helm ページで ack-kserve コンポーネントに関する情報を確認できます。
-
kserve の inferenceservice-config 設定項目を更新します。
Helm ページで、kserve をクリックし、続いて inferenceservice-config をクリックします。YAML の編集 をクリックします。YAML ファイル内で、
ingressClassNameフィールドを、NGINX Ingress Controller のインストール時 に指定したingressClassResource.nameの値に設定します。
ack-kserve コンポーネントが実行中であるかを確認します。
以下のコマンドを実行して、ack-kserve Pod のステータスを照会します:
kubectl get pod -n kserve出力結果の
STATUSパラメーターにrunningが表示された場合、ack-kserve コンポーネントは正常にインストールされています。
(任意)ステップ 3:ack-kserve コンポーネントの表示または更新
Container Service Management Console にログインします。左側のナビゲーションウィンドウで、クラスターリスト をクリックします。
クラスターリスト ページで、ご利用のクラスター名をクリックします。左側のナビゲーションウィンドウで、 をクリックします。
ack-kserve コンポーネントの詳細情報を表示します。
Helm ページで ack-kserve コンポーネントを見つけ、操作 列の 詳細の表示 をクリックします。ack-kserve コンポーネントの詳細ページでは、[基本情報]、[パラメーター]、[履歴] タブの情報を確認できます。
ack-kserve コンポーネントを更新します。
Helm ページで ack-kserve コンポーネントを見つけ、操作 列の 更新 をクリックします。更新リリースパネルで、コンポーネントのバージョンを変更し、パラメーター設定を修正します。
(任意)ステップ 4:リソースの削除およびコンポーネントのアンインストール
ack-kserve コンポーネントのアンインストール前に、KServe のカスタムリソースおよび関連する CustomResourceDefinitions (CRD) を削除します。これにより、リソースの無駄を防ぎます。
重要カスタムリソースおよび CRD を削除する前に、それらがビジネスで不要であることを確認してください。CRD を削除すると、関連するカスタムリソースも自動的に削除されます。また、削除されたカスタムリソースは復元できません。
すべての KServe カスタムリソースを削除する前に、それらが不要であることを確認してください。以下のコマンドを実行してカスタムリソースを削除できます:
# クラスター内のすべてのカスタムリソースを表示します。 kubectl get isvc --all-namespaces # クラスター内のすべてのカスタムリソースを保存します。 kubectl get isvc --all-namespaces -oyaml > isvc.yaml.bak # 不要であることが確認された後、カスタムリソースを削除します。 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 コンポーネントをアンインストールします。
Container Service Management Console にログインします。左側のナビゲーションウィンドウで、クラスターリスト をクリックします。
クラスターリスト ページで、ご利用のクラスター名をクリックします。左側のナビゲーションウィンドウで、 をクリックします。
Helm ページで、ack-kserve コンポーネントを見つけ、操作 列の 削除 をクリックします。[削除] ダイアログボックスで、[OK] をクリックします。
cert-manager コンポーネントをアンインストールします。
警告cert-manager をアンインストールする前に、クラスター内の他のコンポーネントで cert-manager が使用されていないことを確認してください。これにより、cert-manager のアンインストールに起因するサービス中断を防止できます。
Container Service Management Console にログインします。左側のナビゲーションウィンドウで、クラスターリスト をクリックします。
クラスターリスト ページで、ご利用のクラスター名をクリックします。左側のナビゲーションウィンドウで、 をクリックします。
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 コンポーネントのインストール中に、以下のエラーメッセージが表示されます: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 がインストールされていない、または準備完了状態になっていない場合、ack-kserve コンポーネントのインストール時に上記エラーが発生します。
解決方法:
以下のコマンドを実行して、クラスター内に 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 コンポーネントをインストールしてください。詳細については、本トピックの「ステップ 1:cert-manager コンポーネントのインストール」セクションをご参照ください。
以下のコマンドを実行して、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 コンポーネントをアンインストールした後、再インストールできます。詳細については、本トピックの「ack-kserve コンポーネントのアンインストール」セクションをご参照ください。