Skip to main content
NetApp Solutions
Se proporciona el idioma español mediante traducción automática para su comodidad. En caso de alguna inconsistencia, el inglés precede al español.

Puesta en marcha de JupyterHub

Colaboradores

Esta sección describe las tareas que debe completar para implementar JupyterHub en su clúster de Kubernetes.

Nota Es posible poner en marcha JupyterHub en plataformas que no sean Kubernetes. La implementación de JupyterHub en plataformas diferentes a Kubernetes no está fuera del alcance de esta solución.

Requisitos previos

Antes de realizar el ejercicio de implementación descrito en esta sección, asumimos que ya ha realizado las siguientes tareas:

  1. Ya tiene un clúster de Kubernetes en funcionamiento.

  2. Ya ha instalado y configurado NetApp Trident en su clúster de Kubernetes. Para obtener más información sobre Trident, consulte la "Documentación de Trident".

Instale el Helm

JupyterHub se pone en marcha usando Helm, un popular administrador de paquetes para Kubernetes. Antes de implementar JupyterHub, debe instalar Helm en su nodo de control de Kubernetes. Para instalar Helm, siga el "instrucciones de instalación" en la documentación oficial de Helm.

Establezca el tipo de almacenamiento de Kubernetes predeterminado

Antes de implementar JupyterHub, debe designar un StorageClass predeterminado dentro de su clúster de Kubernetes. Para designar una clase de almacenamiento predeterminada en su clúster, siga las instrucciones descritas en la "Despliegue de Kubeflow" sección. Si ya ha designado un tipo de almacenamiento predeterminado en el clúster, puede omitir este paso.

Implemente JupyterHub

Después de completar los pasos anteriores, ya está listo para implementar JupyterHub. La implementación de JupyterHub requiere los siguientes pasos:

Configurar el despliegue de JupyterHub

Antes de la implementación, es una buena práctica optimizar la implementación de JupyterHub para su entorno respectivo. Puede crear un archivo config.yaml y utilizarlo durante la implementación usando el diagrama Helm.

Un ejemplo de archivo config.yaml se puede encontrar en https://github.com/jupyterhub/zero-to-jupyterhub-k8s/blob/HEAD/jupyterhub/values.yaml

Nota En este archivo config.yaml, puede establecer el parámetro (singleuser.storage.dynamic.storageClass) para la clase de almacenamiento de NetApp Trident. Esta es la clase de almacenamiento que se utilizará para aprovisionar los volúmenes para los espacios de trabajo de usuarios individuales.

Adición de volúmenes compartidos

Si desea utilizar un volumen compartido para todos los usuarios de JupyterHub, puede ajustar su config.yaml en consecuencia. Por ejemplo, si tiene un PersistentVolumeClaim compartido denominado jupyterhub-shared-volume, podría montarlo como /home/shared en todos los pods de usuario del siguiente modo:

singleuser:
  storage:
    extraVolumes:
      - name: jupyterhub-shared
        persistentVolumeClaim:
          claimName: jupyterhub-shared-volume
    extraVolumeMounts:
      - name: jupyterhub-shared
        mountPath: /home/shared
Nota Este es un paso opcional, puede ajustar estos parámetros a sus necesidades.

Despliegue JupyterHub con Helm Chart

Informe a Helm del repositorio de diagramas de JupyterHub Helm.

helm repo add jupyterhub https://hub.jupyter.org/helm-chart/
helm repo update

Esto debería mostrar una salida como:

Hang tight while we grab the latest from your chart repositories...
...Skip local chart repository
...Successfully got an update from the "stable" chart repository
...Successfully got an update from the "jupyterhub" chart repository
Update Complete. ⎈ Happy Helming!⎈

Ahora instale el gráfico configurado por su config.yaml ejecutando este comando desde el directorio que contiene su config.yaml:

helm upgrade --cleanup-on-fail \
  --install my-jupyterhub jupyterhub/jupyterhub \
  --namespace my-namespace \
  --create-namespace \
  --values config.yaml
Nota En este ejemplo:

<helm-release-name> está configurado para my-jupyterhub, que será el nombre de su lanzamiento de JupyterHub. <k8s-namespace> está configurado en my-namespace, que es el espacio de nombres donde desea instalar JupyterHub. El indicador --create-namespace se utiliza para crear el espacio de nombres si aún no existe. El indicador --values especifica el archivo config.yaml que contiene las opciones de configuración deseadas.

Comprobar despliegue

Mientras se ejecuta el paso 2, puede ver los pods que se crean a partir del siguiente comando:

kubectl get pod --namespace <k8s-namespace>

Espere a que el concentrador y el pod del proxy entren en el estado de ejecución.

NAME                    READY     STATUS    RESTARTS   AGE
hub-5d4ffd57cf-k68z8    1/1       Running   0          37s
proxy-7cb9bc4cc-9bdlp   1/1       Running   0          37s

Acceda a JupyterHub

Encuentra la IP que podemos usar para acceder al JupyterHub. Ejecute el siguiente comando hasta que la IP EXTERNA del servicio proxy-public esté disponible como en la salida del ejemplo.

Nota Utilizamos el servicio NodePort en nuestro archivo config.yaml, puede ajustar su entorno en función de su configuración (por ejemplo, LoadBalancer).
kubectl --namespace <k8s-namespace> get service proxy-public
NAME           TYPE           CLUSTER-IP     EXTERNAL-IP     PORT(S)        AGE
proxy-public   NodePort   10.51.248.230   104.196.41.97   80:30000/TCP   1m

Para utilizar JupyterHub, introduzca la IP externa para el servicio proxy-public en un navegador.