Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

Kubeflow Notebook ServerのPodDefaults設定手順

By Vinay GandhiAug 25, 20202 min read

このページはEnglishDeutschEspañolFrançaisItalianoPortuguêsでもご覧いただけます。

機械学習モデルのコードをJupyterノートブックで開発していると、環境変数や、ユーザー名・パスワードといったシークレット、構成プロパティを参照したい場面が出てきます。

Kubernetesでは、シークレットや構成プロパティは「etcd」データベースに格納されますが、Kubeflow Notebook Serverからこれらを参照するにはどうすればよいのでしょうか。

本ガイドでは、ノートブック内から環境変数・シークレット・構成プロパティを参照する方法を、ステップごとに解説します。

Kubeflow Notebook ServerのPodDefaults設定

前提条件: KubernetesおよびKubeflowに関する基本的な知識があり、Kubeflowのインストールが完了していること。

Kubeflowは、Kubernetes Engine上で機械学習パイプラインの実験とデプロイを行うために設計されています。Kubeflowのインストールを実行すると、以下の9つのnamespaceが作成されます。

Kubeflowのコンポーネントの1つであるNotebook Serverは、デフォルトで「kubeflow-」namespaceにインストールされます。

手順は以下のとおりです。

  1. kubeflow- namespaceに、DB_USERおよびDB_PASSWORD環境変数用のシークレットを作成します。

2. 以下の内容で「db-root-secret.yaml」を作成します。

続いて、kubeflow- namespaceで以下のコマンドを実行します。

kubectl apply -n kubeflow-vinay -f db-root-secret.yaml

3. 「max_allowed_packet.cnf」というファイル名で、データベース構成を含むconfigMapを作成します。マップのキーは「db-config」、namespaceはkubeflow-です。

上記3つの手順が完了すると、Kubernetesの構成に以下が反映されているはずです。

4. 以下の内容で「add-db-info-poddefaults.yaml」を作成します。

続いて、以下のようにkubectl applyコマンドを実行します。

kubectl apply -f kubeflow-poddefaults.yaml

「add-database-info」のpod defaultに紐づくKubernetesオブジェクトを確認します。

5. Kubeflowで新しいNotebook Serverを作成します。追加したpod defaultが構成のドロップダウンに表示されていることが確認できます。

6. 最後に、作成したNotebook Serverに接続し、サンプルコードを実行して動作を確認します。

環境変数

マウントしたパス上の構成ファイル

参考資料:

本記事に登場するコマンドとファイルのテキスト版は、以下からダウンロードできます: https://bit.ly/3k8B08d

Set Up Your Notebooks \ \ Getting started with Jupyter notebooks on Kubeflow Your Kubeflow deployment includes services for spawning and managing…\ \ www.kubeflow.org

kubeflow/kubeflow \ \ We need a way to inject common data (env vars, volumes) to pods (e.g. notebooks). See issue. K8s has PodPreset resource…\ \ github.com

Inject Information into Pods Using a PodPreset \ \ FEATURE STATE: Kubernetes v1.6 [alpha] This page shows how to use PodPreset objects to inject information like…\ \ kubernetes.io

An Introduction to Kubernetes Secrets and ConfigMaps \ \ Kubernetes has two types of objects that can inject configuration data into a container when it starts up: Secrets and…\ \ opensource.com