Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

Cómo configurar PodDefaults en Notebook Servers de Kubeflow

By Vinay GandhiAug 25, 20202 min read

Esta página también está disponible en English, Deutsch, Français, Italiano, 日本語 y Português.

Tarde o temprano vas a necesitar acceder a variables de entorno, secretos (como usuario o contraseña) o propiedades de configuración desde un notebook de Jupyter mientras desarrollas el código de tus modelos de machine learning.

En Kubernetes, los secretos y las propiedades de configuración se almacenan en la base de datos "etcd". Pero ¿cómo se accede a ellos desde los Notebook Servers de Kubeflow?

Esta guía paso a paso te muestra un método para acceder a variables de entorno, secretos y propiedades de configuración desde los notebooks.

Configurar PodDefaults en Notebook Servers de Kubeflow

Requisitos previos: tener conocimientos básicos de Kubernetes y Kubeflow, y contar con Kubeflow ya instalado.

Kubeflow está pensado para que puedas experimentar y desplegar pipelines de machine learning dentro de Kubernetes Engine. La instalación de Kubeflow crea nueve namespaces:

El Notebook Server, uno de los componentes de Kubeflow, se instala por defecto en el namespace "kubeflow-".

Estos son los pasos a seguir:

  1. Crea los secretos para las variables de entorno DB_USER y DB_PASSWORD en el namespace kubeflow-.

2. Crea un archivo "db-root-secret.yaml" con el siguiente contenido:

Luego ejecuta el siguiente comando en el namespace kubeflow-:

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

3. Crea un configMap con la configuración de la base de datos en un archivo llamado "max_allowed_packet.cnf"; la clave del map es "db-config" y el namespace es kubeflow-.

Al terminar correctamente los tres pasos anteriores, deberías ver lo siguiente en la configuración de Kubernetes.

4. Crea un archivo llamado "add-db-info-poddefaults.yaml" con el siguiente contenido:

Luego ejecuta el comando kubectl apply así:

kubectl apply -f kubeflow-poddefaults.yaml

Revisa los objetos de Kubernetes del pod default "add-database-info":

5. Crea un nuevo Notebook Server en Kubeflow. Verás que el pod default que acabas de agregar aparece en el menú desplegable de configuración.

6. Por último, conéctate al Notebook Server recién creado y ejecuta el código de ejemplo para verificar que todo funciona.

Variables de entorno

El archivo de configuración en una ruta montada

Referencias:

Descarga la versión en texto de los comandos y archivos de este post desde 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