こちらのk0sクラスターの構築チュートリアルの続きとして、Kubernetesクラスター上にサンプルアプリケーションをデプロイしましょう。このチュートリアルはk0s以外の任意のKubernetesクラスター上でも実行できます。
本チュートリアルの対象者は、以下のような学習者です。作業自体の所要時間は1.5時間程度です。
- DockerやKubernetesについての基礎知識がある
- Kubernetesクラスターの構築経験がある(CRI, CNI, CSIなどをある程度理解している)
- Dockerでアプリケーションのビルドをしたことがある
必要なもの:
- インターネット接続のあるKubernetesクラスターノード
- スタンドアロンクラスターの場合は、4GB memory + 4 CPU以上
- Dockerコマンドを利用できるビルド環境
タスク概要
以下のサンプルアプリケーションのデプロイを行ってください。
完成品:
以下のようなページにアクセスし、モノクロ画像を色付きの画像に変更できれば成功です。
アプリケーションの詳細については、こちらのブログシリーズで説明されています。
- How to colourise black & white pictures: OpenVINO™ on Ubuntu containers demo (Part 1)
- How to colourise black & white pictures with OpenVINO™ on Ubuntu containers (Part 2)
以下の順に進めてください。
1. PV/PVC(Persistent Volume/Persistent Volume Claim)を利用できるようにセットアップする
2. Docker registryをデプロイする
3. Kubernetes clusterが2で構築したDocker registryからイメージをプルできるように設定する
4. colouriser-demoアプリケーションをビルドし、Docker registryにpushする
5. colouriser-demoをkubernetesクラスター上にデプロイする
6. Web UIからアクセスしてモノクロ画像の変換をテストする
1. PV/PVCを利用できるようにセットアップする
Kubernetesクラスターでは、DBなどのステートフルなアプリケーションのデータの保存先として、PV/PVC(Persistent Volume/ Persistent Volume Claim)を利用します。Docker Registryにpushしたイメージが外部のボリュームに保存されるように、PV/PVCを利用できるようにクラスターを設定します。
任意のVolumeストレージを利用できるように設定してください。k0sクラスターでは、こちらのページにしたがってOpenEBSを有効化し、hostpathでPVCを作成できるようにします。
設定完了後、以下のコマンドでdefaultのストレージクラスが表示されれば成功です。
1 |
kubectl get storageclass |
2. Docker registryをデプロイする
colouriser-demoアプリケーションでは、アプリケーションのバックエンド、フロントエンド、モデルサーバーのコンテナイメージをビルドします。ビルドしたイメージの保存先として、Private Docker RegistryをKubernetesクラスター上に構築してください。
次のHelmチャートが利用可能です。
HelmはKubernetesクラスターにおけるパッケージマネージャです。アプリケーションに必要なリソースをパッケージ化し、設定やデプロイなどを自動化するためのツールです。チャートと呼ばれるパッケージと設定を定義したYAMLファイルを利用して、Kubernetesクラスター上に簡単にアプリケーションをデプロイすることができます。
このページからHelmコマンドをインストールしてください。
なお、構築したDocker RegistryのPodがリスタート後もデータを保持できるように、PVCをマウントしていることを確認してください。
3. Kubernetes clusterがDocker registryからイメージをプルできるように設定する
使用しているCRIにあわせて、以前の手順で構築したPrivate Docker registryからイメージをpullできるように設定してください。
4. colouriser-demoアプリケーションをビルドし、Docker registryにpushする
colouriser-demoのGithubレポジトリのこちらの説明を参考にして、イメージをビルドしてください。 なお、pushするdocker registryにあわせて、タグを変更してください。
2023年6月現在、元のレポジトリのDockerfileにはいくつかのバグがあり、正しく動作しません。
以下の修正を適用して、Dockerイメージをビルドしてください。
- Frontend の Dockerfile にて base image のタグを
node:18.6
に固定 - Backend の requirement.txt にて
numpy
のバージョン指定を削除
5. colouriser-demoをkubernetesクラスター上にデプロイする
colouriser-demoのGithubレポジトリのこちらのページを参考にデプロイを行ってください。
6. Web UIからアクセスしてモノクロ画像の変換をテストする
デフォルトでは、Node Portを使用して、port 30000番でアプリケーションが公開されます。別のポートを使用したい場合は、デプロイしたServiceを編集してください。
ブラウザでhttp://<host-ip-address>:30000
にアクセスします。
モノクロのイメージをアップロードし、推論の結果を待ちます。 以下のように色付きの画像が出力されたら成功です。
注意点: backendはタイムアウトでエラーを出す場合があります。(デフォルトで10秒)Podのログとbackendのpythonスクリプトを調べて、タイムアウト時間を延長しましょう。
以下、ovmsclientに関するドキュメントです。
- ovmsclient python library
- predictメゾットについて
あなたも、Avintonでこのような最先端技術を習得し活用してみませんか?
社員の成長を導きながら、AIやビッグデータなどの最先端技術をプロジェクトに活用していくことが私たちのビジョンです。Avintonの充実した技術研修でスキルアップを図り、あなたのキャリア目標を一緒に達成しませんか?