Skip to main content
NetApp artificial intelligence solutions
La version française est une traduction automatique. La version anglaise prévaut sur la française en cas de divergence.

Déploiement de JupyterHub

Cette section décrit les tâches que vous devez effectuer pour déployer JupyterHub dans votre cluster Kubernetes.

Remarque Il est possible de déployer JupyterHub sur d’autres plateformes que Kubernetes. Le déploiement de JupyterHub sur des plateformes autres que Kubernetes n'entre pas dans le cadre de cette solution.

Prérequis

Avant d’effectuer l’exercice de déploiement décrit dans cette section, nous supposons que vous avez déjà effectué les tâches suivantes :

  1. Vous disposez déjà d’un cluster Kubernetes fonctionnel.

  2. Vous avez déjà installé et configuré NetApp Trident dans votre cluster Kubernetes. Pour plus de détails sur Trident, reportez-vous au"Documentation Trident" .

Installer Helm

JupyterHub est déployé à l'aide de Helm, un gestionnaire de packages populaire pour Kubernetes. Avant de déployer JupyterHub, vous devez installer Helm sur votre nœud de contrôle Kubernetes. Pour installer Helm, suivez les instructions "instructions d'installation" dans la documentation officielle de Helm.

Définir la classe de stockage Kubernetes par défaut

Avant de déployer JupyterHub, vous devez désigner une StorageClass par défaut dans votre cluster Kubernetes. Pour désigner une StorageClass par défaut au sein de votre cluster, suivez les instructions décrites dans le"Déploiement de Kubeflow" section. Si vous avez déjà désigné une StorageClass par défaut dans votre cluster, vous pouvez ignorer cette étape.

Déployer JupyterHub

Après avoir terminé les étapes ci-dessus, vous êtes maintenant prêt à déployer JupyterHub. Le déploiement de JupyterHub nécessite les étapes suivantes :

Configurer le déploiement de JupyterHub

Avant le déploiement, il est recommandé d’optimiser le déploiement de JupyterHub pour votre environnement respectif. Vous pouvez créer un fichier config.yaml et l'utiliser lors du déploiement à l'aide du graphique Helm.

Un exemple de fichier config.yaml peut être trouvé à l'adresse https://github.com/jupyterhub/zero-to-jupyterhub-k8s/blob/HEAD/jupyterhub/values.yaml

Remarque Dans ce fichier config.yaml, vous pouvez définir le paramètre (singleuser.storage.dynamic.storageClass) pour NetApp Trident StorageClass. Il s’agit de la classe de stockage qui sera utilisée pour provisionner les volumes pour les espaces de travail des utilisateurs individuels.

Ajout de volumes partagés

Si vous souhaitez utiliser un volume partagé pour tous les utilisateurs JupyterHub, vous pouvez ajuster votre config.yaml en conséquence. Par exemple, si vous avez un PersistentVolumeClaim partagé appelé jupyterhub-shared-volume, vous pouvez le monter en tant que /home/shared dans tous les pods utilisateur comme suit :

singleuser:
  storage:
    extraVolumes:
      - name: jupyterhub-shared
        persistentVolumeClaim:
          claimName: jupyterhub-shared-volume
    extraVolumeMounts:
      - name: jupyterhub-shared
        mountPath: /home/shared
Remarque Il s'agit d'une étape facultative, vous pouvez ajuster ces paramètres selon vos besoins.

Déployer JupyterHub avec Helm Chart

Informez Helm du référentiel de graphiques JupyterHub Helm.

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

Cela devrait afficher une sortie comme :

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!⎈

Installez maintenant le graphique configuré par votre config.yaml en exécutant cette commande à partir du répertoire qui contient votre config.yaml :

helm upgrade --cleanup-on-fail \
  --install my-jupyterhub jupyterhub/jupyterhub \
  --namespace my-namespace \
  --create-namespace \
  --values config.yaml
Remarque Dans cet exemple :

<helm-release-name> est défini sur my-jupyterhub, qui sera le nom de votre version JupyterHub. <k8s-namespace> est défini sur my-namespace, qui est l'espace de noms dans lequel vous souhaitez installer JupyterHub. L'indicateur --create-namespace est utilisé pour créer l'espace de noms s'il n'existe pas déjà. L'indicateur --values spécifie le fichier config.yaml qui contient les options de configuration souhaitées.

Vérifier le déploiement

Pendant que l’étape 2 est en cours d’exécution, vous pouvez voir les pods créés à partir de la commande suivante :

kubectl get pod --namespace <k8s-namespace>

Attendez que le hub et le pod proxy entrent dans l’état d’exécution.

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

Accéder à JupyterHub

Trouvez l'IP que nous pouvons utiliser pour accéder au JupyterHub. Exécutez la commande suivante jusqu'à ce que l'adresse IP EXTERNE du service proxy-public soit disponible comme dans l'exemple de sortie.

Remarque Nous avons utilisé le service NodePort dans notre fichier config.yaml, vous pouvez l'ajuster en fonction de votre environnement en fonction de votre configuration (par exemple 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

Pour utiliser JupyterHub, saisissez l'adresse IP externe du service proxy-public dans un navigateur.