Kubernetes に機械学習モデルをデプロイするには、クラスターのストレージ、ネットワーク、可観測性スタックと統合するモデルサービングインフラストラクチャをセットアップする必要があります。ack-kserve は、オープンソース KServe の Alibaba Cloud に最適化されたディストリビューションであり、この統合を自動的に処理します。Alibaba Cloud のストレージ、ロギング、ネットワーク機能と接続することで、インフラストラクチャの構成ではなく、モデルの提供に集中できます。
このトピックでは、ACK クラスターで ack-kserve をインストール、管理、およびアンインストールする方法について説明します。
前提条件
開始する前に、以下を確認してください。
Kubernetes 1.22 以降を実行している ACK マネージド Pro クラスター。詳細については、「ACK マネージドクラスターの作成」をご参照ください。
NGINX Ingress コントローラーがインストール済みであること。詳細については、「NGINX Ingress コントローラーの管理」をご参照ください。
ステップ 1: cert-manager のインストール
ack-kserve は TLS 証明書管理のために cert-manager に依存しています。ack-kserve をインストールする前に cert-manager をインストールしてください。
ACK コンソールにログインします。左側のナビゲーションウィンドウで、[クラスター]をクリックします。
[クラスター] ページで、クラスターの名前をクリックします。左側のナビゲーションウィンドウで、[アプリケーション] > [Helm] を選択します。
[Helm] ページの左上隅で、[デプロイ] をクリックします。 [基本情報] ステップで、[アプリケーション名] フィールドを設定し、[チャート] セクションで
cert-managerを選択して、[次へ] をクリックします。[パラメーター] ステップで、[チャートバージョン] と [パラメーター] の値を確認し、[OK] をクリックします。
デプロイ後、cert-manager コンポーネントは [Helm] ページに表示されます。
ステップ 2: ack-kserve のインストール
デフォルトでは、ack-kserve は RawDeployment モードでデプロイされ、NGINX Ingress コントローラーと統合されています。
「ACK コンソール」にログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、クラスター名をクリックします。左側のナビゲーションウィンドウで、[アプリケーション] > [Helm] を選択します。
Helm ページの左上隅で、[Helm] をクリックします。[デプロイ] をクリックします。「基本情報」ステップで、[アプリケーション名] フィールドを設定し、[チャート] セクションで
ack-kserveを選択して、[次へ] をクリックします。[パラメーター] ステップで、[チャートバージョン] と [パラメーター] の値を確認し、[OK] をクリックします。デプロイメント後、ack-kserve コンポーネントが [Helm] ページに表示されます。
ack-kserve が実行中であることを確認します。
kubectl get pod -n kserve出力の
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 の削除
カスタムリソースは削除後に復元できません。続行する前に、ご利用のワークロードで InferenceService リソースが不要であることを確認してください。
すべての InferenceService カスタムリソースをバックアップして削除します。
# クラスター内のすべての InferenceService リソースを一覧表示します kubectl get isvc --all-namespaces # すべてのリソースをファイルにバックアップします kubectl get isvc --all-namespaces -oyaml > isvc.yaml.bak # すべてのリソースを削除します kubectl delete isvc --allKServe 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 が使用されていないことを確認してください。これにより、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 をインストールします。詳細については、「ステップ 1: 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 をアンインストールして再インストールします。詳細については、「ack-kserve のアンインストール」をご参照ください。