KServe は、Kubernetes 上での機械学習モデルのデプロイと管理のプロセスを簡素化する宣言型 API を提供するオープンソースプロジェクトです。Alibaba Cloud は、オープンソースの KServe に基づいて最適化され、Alibaba Cloud が提供するストレージ、ロギング、ネットワーク機能などの Alibaba Cloud エコシステムと統合された ack-kserve コンポーネントを提供しています。 ack-kserve は、Container Service for Kubernetes (ACK)クラスタでの KServe のデプロイと O&M を簡素化します。このトピックでは、ACK クラスタに ack-kserve をデプロイおよび管理する方法について説明します。
前提条件
Kubernetes 1.22 以降を実行する ACK マネージド プロ クラスター が作成されていること。詳細については、「ACK マネージドクラスターを作成する」をご参照ください。
NGINX Ingress コントローラーがインストールされていること。詳細については、「NGINX Ingress コントローラーを管理する」をご参照ください。
ステップ 1: cert-manager コンポーネントをインストールする
ACK コンソール にログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターを見つけ、その名前をクリックします。左側のナビゲーションウィンドウで、 を選択します。
[Helm] ページの左上隅にある [デプロイ] をクリックします。[デプロイ] パネルの [基本情報] ステップで、[アプリケーション名] パラメーターを指定し、[チャート] セクションで
cert-manager
を選択して、[次へ] をクリックします。[パラメーター] ステップで、[チャートバージョン] パラメーターの値と [パラメーター] フィールドに表示される情報を確認し、[OK] をクリックします。
cert-manager コンポーネントがデプロイされると、[Helm] ページで cert-manager コンポーネントに関する情報を表示できます。
ステップ 2: ack-kserve コンポーネントをインストールする
デフォルトでは、ack-kserve コンポーネントは RawDeployment モードでデプロイされ、Nginx Ingress コントローラーと統合されます。
ACK コンソール にログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターを見つけ、その名前をクリックします。左側のナビゲーションウィンドウで、 を選択します。
[Helm] ページの左上隅にある [デプロイ] をクリックします。[デプロイ] パネルの [基本情報] ステップで、[アプリケーション名] パラメーターを指定し、[チャート] セクションで
ack-kserve
を選択して、[次へ] をクリックします。[パラメーター] ステップで、[チャートバージョン] パラメーターの値と [パラメーター] フィールドに表示される情報を確認し、[OK] をクリックします。
cert-manager コンポーネントがデプロイされると、[Helm] ページで ack-kserve コンポーネントに関する情報を表示できます。
ack-kserve コンポーネントが実行されているかどうかを確認します。
次のコマンドを実行して、ack-kserve ポッドのステータスをクエリします。
kubectl get pod -n kserve
出力の
STATUS
パラメーターにrunning
が返された場合、ack-kserve コンポーネントはインストールされています。
(オプション)ステップ 3: ack-kserve コンポーネントを表示または更新する
ACK コンソール にログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターを見つけ、その名前をクリックします。左側のナビゲーションウィンドウで、 を選択します。
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 コンポーネントをアンインストールします。
ACK コンソール にログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターを見つけ、その名前をクリックします。左側のナビゲーションウィンドウで、 を選択します。
[Helm] ページで、[ack-kserve] コンポーネントを見つけ、[アクション] 列の [削除] をクリックします。[削除] ダイアログボックスで、[OK] をクリックします。
cert-manager コンポーネントをアンインストールします。
警告cert-manager をアンインストールする前に、クラスター内の他のコンポーネントで cert-manager が使用されていないことを確認してください。これにより、cert-manager のアンインストールによって発生するサービス中断を防ぎます。
ACK コンソール にログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターを見つけ、その名前をクリックします。左側のナビゲーションウィンドウで、 を選択します。
[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
FAQ
問題: 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 コンポーネントに大きく依存しています。クラスターにインストールされていないか、準備ができていない場合、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 コンポーネントのポッドは準備完了です。
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
すべてのポッドが Ready 状態にある場合は、ack-kserve コンポーネントをアンインストールしてから再インストールできます。詳細については、このトピックの「ack-kserve コンポーネントをアンインストールする」セクションをご参照ください。