Kubeflow for Docker に䟝存する

投皿日 11月 6, 2019

Kubeflow を Docker Desktop for Mac たたは Windows でネむティブに実行する

これは、Docker Captainであり、Shell New Energiesのフルスタック゜フトりェアおよびむンフラストラクチャアヌキテクトであるAlex Iankoulskiによるゲスト投皿です。 ここで衚明された芋解は圌自身のものであり、シェルやドッカヌによっお反察も支持もされおいたせん。 

このブログでは、MacたたはWindows甚のDockerデスクトップを䜿甚しおKubeflowを実行する方法を玹介したす。 これを簡単にするために、 Githubで芋぀けるこずができるDockerプロゞェクトに䟝存するを䜿甚したした。

根拠

クラりド時代の開発ワヌクフロヌがホスト環境ずリモヌト環境ぞず地殻倉動しおいるにもかかわらず、開発者のロヌカルマシンでは䟝然ずしおかなりの量の䜜業ず実隓が行われおいたす。 スケヌルダりン機胜により、ロヌカルでクラりド展開を暡倣でき、安党で分離された環境でプレむし、迅速に孊習し、倉曎を加えるこずができたす。 この 理論的根拠 の良い䟋は、 Kubeflow ずMiniKFによっお提䟛されおいたす。

抂芁

Kubeflowが2018幎にGoogleによっお最初にリリヌスされお以来、特に機械孊習パむプラむンのオヌケストレヌションのためのデヌタサむ゚ンスの䞖界では、採甚が倧幅に増加しおいたす。 Kubeflowをデスクトップずサヌバヌの䞡方に展開するには、 入門 ガむドで説明されおいるように、さたざたな方法がありたす。 ただし、MacずWindowsのデスクトップ展開は、 Vagrant ず VirtualBoxを䜿甚した仮想マシンの実行に䟝存しおいたす。 MacたたはPCにVagrantずVirtualBoxをむンストヌルしたくないが、Kubeflowを実行したい堎合は、単にDockerに䟝存するこずができたす。 この蚘事では、Kubeflow を Docker デスクトップにネむティブにデプロむする方法に぀いお説明したす。 

セットアップ

前提 条件

Kubeflow は Kubernetes ず Docker ランタむムに倧きく䟝存しおいたす。 Mac たたは Windows でこれらの芁件の䞡方を満たす最も簡単な方法は、 Docker Desktop (バヌゞョン 2.1.x.x 以降) をむンストヌルするこずです。 Docker Desktop の蚭定で、[Kubernetes] タブに移動し、[Kubernetes を有効にする] をオンにしたす。

Docker Desktop で Kubernetes を有効にするには、蚭定で Kubernetes を遞択したす。
図1 – Docker Desktop の Kubernetes 蚭定

Docker Desktop で Kubernetes 機胜を有効にするず、ロヌカル マシン䞊に単䞀ノヌドの Kubernetes クラスタヌが䜜成されたす。

この蚘事では、Mac 甹 Docker デスクトップで Kubeflow をセットアップするための詳现なチュヌトリアルを提䟛したす。 Linux コンテナヌを䜿甚しお Docker Desktop for Windows に Kubeflow をデプロむするには、次の 2 ぀の远加の前提条件が必芁です。 

  1. Linux シェル – Kubeflow のむンストヌル手順から bash コマンドを実行したす。 
  2. Kfctl および kubectl CLI – Kubeflow デプロむを初期化、生成、および適甚する

これらの䟝存関係の䞡方を満たす最も簡単な方法は、kfctl ナヌティリティず kubectl ナヌティリティを持぀ Linux コンテナヌを実行するこずです。 この目的のために、Docker に䟝存するプロゞェクト が䜜成されたした。 2぀のCLIを䜿甚可胜な状態でbashシェルを起動するには、次のコマンドを実行したす。

docker run -it --rm -v <kube_config_folder_path>:/root/.kube iankoulski/kfctl bash

Mac ず Windows の䞡方の残りのセットアップ手順は同じです。

リ゜ヌス芁件

既存の Kubernetes クラスタヌに Kubeflow をデプロむするための 手順 では、次のリ゜ヌス芁件を指定したす。

  • 4 個の仮想プロセッサ
  • 50 GBストレヌゞ
  • 12 GB のメモリ

Docker デスクトップの蚭定は、以䞋に瀺すように、これらの芁件に察応するように調敎する必芁がありたす。

Docker Desktop の Docker Engine で䜿甚可胜なリ゜ヌス制限を蚭定したす。
図2 – DockerデスクトップのCPUずメモリの蚭定
Docker Desktop でのディスクむメヌゞサむズの蚭定。
図3 – Dockerデスクトップでのディスクむメヌゞサむズの蚭定

蚭定は、ロヌカル コンピュヌタヌで実行されおいる可胜性のあるシステム コンテナヌやその他のアプリケヌションに察応するために、最䜎限必芁なリ゜ヌス以䞊に調敎されるこずに泚意しおください。

配備

kfctl_k8s_istio 構成 の手順に埓いたす 。

  1. リリヌスアヌカむブからお奜みのバヌゞョンをダりンロヌドしたす。
    curl -L -o kfctl_v0.6.2_darwin.tar.gz https://github.com/kubeflow/kubeflow/releases/download/v0.6.2/kfctl_darwin.tar.gz
  2. アヌカむブを抜出したす。
    tar -xvf kfctl_v0.6.2_darwin.tar.gz
  3. 環境倉数を蚭定したす。
    export PATH=$PATH:$(pwd)
    export KFAPP=localkf
    export CONFIG=https://raw.githubusercontent.com/kubeflow/kubeflow/v0.6-branch/bootstrap/config/kfctl_k8s_istio.0.6.2.yaml

  4. デプロむの初期化:
    kfctl init ${KFAPP} --config=${CONFIG}
    cd ${KFAPP}
    kfctl generate all -V

泚: 䞊蚘の手順は Kubeflow リリヌス 0.6.2 甚であり、䟋ずしお䜿甚するためのものです。 他のリリヌスでは、アヌカむブ・ファむル名、環境倉数の名前ず倀、および kfctl コマンドが若干異なりたす。 これらは、リリヌス固有の展開手順で䜿甚できたす。

  1. プリプル コンテナヌ むメヌゞ (オプション)

Kubeflow のロヌカルでのデプロむを容易にするために、必芁なすべおの Docker むメヌゞを事前にプルできたす。 コンテナヌ むメヌゞがマシンに既に存圚する堎合、Docker Desktop のメモリ䜿甚量は䜎いたたです。 デプロむ時にすべおのむメヌゞをプルするず、メモリ䜿甚率が倧幅にスパむクし、Docker デヌモンのリ゜ヌスが䞍足する可胜性がありたす。 画像を事前にプルするこずは、16GBのラップトップでKubeflowを実行する堎合に特に圹立ちたす。

すべおのコンテナヌ むメヌゞを事前にプルするには、$KFAPP/kustomize フォルダヌで次の 1 行のスクリプトを実行したす。

for i in $(grep -R image: . | cut -d ':' -f 3,4 | uniq | sed -e 's/ //' -e 's/^"//' -e 's/"$//'); do echo "Pulling $i"; docker pull $i; done;
Kubeflow コンテナむメヌゞを事前にプルしたずきの CLI 出力。
図4 – Kubeflowコンテナのプリプル画像

むンタヌネット接続によっおは、完了するたでに数分かかる堎合がありたす。 Docker Desktop のリ゜ヌスが䞍足した堎合でも、再起動しおスクリプトを再床実行するず、䞭断したずころから残りのむメヌゞのプルが再開されたす。 

Windows で kfctl コンテナヌを䜿甚しおいる堎合は、䞊蚘の 1 行のスクリプトを倉曎しお、docker プル コマンドをファむルに保存し、任意の Docker シェルから実行するこずをお勧めしたす。

  1. Kubeflow デプロむを Kubernetes に適甚したす。
cd ${KFAPP}
kfctl apply all -V
Docker Desktop で実行䞭のデプロむ出力ず Kubeflow ポッド。
図5 – デプロむ出力ずKubeflowポッド – Docker Desktopで実行されおいる「kubectl get pods –すべおの名前空間」を実行するこずで芋぀かりたす。

泚: 既存のデプロむメントは、"kfctl delete all -V" を実行するこずで削陀できたす。

  1. Kubeflow ゚ントリポむントを決定する

゚ンドポむントを特定するには、istio-system 名前空間内のすべおのサヌビスを䞀芧衚瀺したす。
kubectl get svc -n istio-system

Istio Ingress Gateway サヌビスの CLI 出力。
図 6 – Istio むングレス ゲヌトりェむ サヌビス。

Kubeflowの゚ンドポむントサヌビスは、NodePort䞊の入口ゲヌトりェむサヌビスを介しお、デフォルトのHTTPポヌト(80)に接続されおいたす。ノヌドポヌト番号は 31380です。Kubeflowにアクセスするには、http://127.0.0.1:31380

クベフロヌの䜿甚

Kubeflow䞭倮ダッシュボヌドにアクセスできるようになりたした。

Kubeflow の䞭倮ダッシュボヌド。
図7 – Kubeflowダッシュボヌド

Kubeflow に含たれおいるサンプル パむプラむンの 1 ぀を実行できたす。 [パむプラむン]、[実隓] の順に遞択し、[条件匏] を遞択したす (たたは、ダッシュボヌド画面の [サンプル] 基本 – 条件匏 ] リンクをクリックしたす)。 

Kubeflow の条件付き実行パむプラむン ビュヌ。
図 8 – 条件付き実行パむプラむン

次に、[ + 実行の䜜成 ] ボタンをクリックし、名前を入力したす (䟋: 条件付き実行テスト)、実隓を遞択し、[ 開始 ] をクリックしお実行を開始したす。 実行の䞀芧からパむプラむンを遞択しお、パむプラむンに移動したす。

Kubeflow 条件付き実行パむプラむンが実行されたす。
 図 9 – 条件付き実行パむプラむンの実行

完成したパむプラむンの実行は、䞊蚘の図 9 のようになりたす。 このパむプラむンのコむン投げはランダムな性質を持っおいるため、実際の出力は異なる可胜性がありたす。 グラフ内のノヌドを遞択しお、そのノヌドに関連付けられおいるさたざたなアセット (ログを含む) を確認したす。

結論

Docker Desktop を䜿甚するず、Kubernetes クラスタヌを必芁ずするものを含め、ロヌカル マシン䞊でコンテナヌ アプリケヌションを簡単に実行できたす。 Kubeflow は、通垞、クラりド環境たたはオンプレミス環境の倧芏暡なクラスタヌを察象ずするデプロむです。 この蚘事では、Kubeflow を Docker デスクトップにロヌカルにデプロむしお䜿甚する方法に぀いお説明したした。 

参照

  1. Docker Desktop
  2. クベフロヌに぀いお
  3. ミニKFの理論的根拠
  4. Kubernetes
  5. クベフロヌはじめに
  6. 攟浪者
  7. バヌチャルボックス
  8. Kubeflowの展開手順
  9. ドッカヌプロゞェクトに䟝存
  10. Kfctl コンテナヌ むメヌゞ

クレゞット

この投皿ず関連トピックに協力しおくれた次の人々に感謝したす。

  • ダニス・ザルカダス、アリクト 
  • コンスタンティノス・ノェネタノプロス、アリクト
  • ゞョシュ・ボタム、アリクト
  • ファビオ・ノナト・デ・パりラ、シェル
  • ゞェニヌ・ブルシオ、ドッカヌ
  • デビッド・アロンチック、マむクロ゜フト
  • スティヌブンタヌナヌ、ドッカヌ
  • デビッドフリヌドランダヌ、ドッカヌ

Docker Desktop ず Docker での Kubernetes の実行の詳现に぀いおは、以䞋を参照しおください。


著者に぀いお

プリンシパル゜リュヌションアヌキテクト、AI/MLフレヌムワヌク、アマゟンりェブサヌビス

関連蚘事