🦐 安装JupyterHub

# 安装JupyterHub 使用如下命令安装 ```shell helm upgrade --cleanup-on-fail \ --install jupyterhub jupyterhub/jupyterhub \ --namespace jupyterhub \ --version=1.2.0 \ --values config.yaml ``` 配置文件示例 ```yml # This file can update the JupyterHub Helm chart's default configuration values. # # For reference see the configuration reference and default values, but make # sure to refer to the Helm chart version of interest to you! # # Introduction to YAML: https://www.youtube.com/watch?v=cdLNKUoMc6c # Chart config reference: https://zero-to-jupyterhub.readthedocs.io/en/stable/resources/reference.html # Chart default values: https://github.com/jupyterhub/zero-to-jupyterhub-k8s/blob/HEAD/jupyterhub/values.yaml # Available chart versions: https://jupyterhub.github.io/helm-chart/ # # hub: allowNamedServers: true config: JupyterHub: admin_access: true admin_users: - ecidi DummyAuthenticator: password: ecidi@2022 db: type: sqlite-pvc pvc: accessModes: - ReadWriteOnce storage: 3Gi storageClassName: nfs-client # Configuration for the official JupyterHub Helm chart to accept traffic via proxy: service: type: NodePort singleuser: defaultUrl: "/lab" extraEnv: JUPYTERHUB_SINGLEUSER_APP: "jupyter_server.serverapp.ServerApp" storage: dynamic: storageClass: jy-nfs capacity: 1Gi profileList: - display_name: "Datascience environment" slug: "datascience" description: "If you want the additional bells and whistles: Python, R, and Julia.CPU 1 core" default: true kubespawner_override: image: reg.hdec.com/jupyter/datascience-notebook:python-3.8.5 cpu_limit: 1 mem_limit: "1G" - display_name: "pytorch1 environment" slug: "pytorch1" description: "pytorch/pytorch:1.9.0-cuda10.2-cudnn7-devel.GPU 1 core" kubespawner_override: image: reg.hdec.com/pytorch/pytorch:1.9.0-cuda10.2-cudnn7-devel mem_limit: "1G" extra_resource_limits: nvidia.com/gpu: "1" - display_name: "pytorch1 environment" slug: "pytorch2" description: "pytorch/pytorch:1.11.0-cuda11.3-cudnn8-devel.GPU 1 core" kubespawner_override: image: reg.hdec.com/pytorch/pytorch:1.11.0-cuda11.3-cudnn8-devel mem_limit: "1G" extra_resource_limits: nvidia.com/gpu: "1" - display_name: "tensorflow1 environment" slug: "tensorflow1" description: "tensorflow/tensorflow:1.15.0-gpu-py3-jupyter.GPU 1 core" kubespawner_override: image: reg.hdec.com/tensorflow/tensorflow:1.15.0-gpu-py3-jupyter mem_limit: "1G" - display_name: "tensorflow2 environment" slug: "tensorflow2" description: "tensorflow/tensorflow:1.10.0-devel-gpu-py3.GPU 1 core" kubespawner_override: image: reg.hdec.com/tensorflow/tensorflow:1.10.0-devel-gpu-py3 mem_limit: "1G" - display_name: "tensorflow3 environment" slug: "tensorflow3" description: "tensorflow/tensorflow:2.3.0-gpu-jupyter.GPU 1 core" kubespawner_override: image: reg.hdec.com/tensorflow/tensorflow:2.3.0-gpu-jupyter mem_limit: "1G" extra_resource_limits: nvidia.com/gpu: "1" - display_name: "tensorflow4 environment" slug: "tensorflow4" description: "tensorflow/tensorflow:2.8.1-gpu-jupyter.GPU 1 core" kubespawner_override: image: reg.hdec.com/tensorflow/tensorflow:2.8.1-gpu-jupyter mem_limit: "1G" - display_name: "paddlepaddle1 environment" slug: "paddle1" description: "paddlepaddle/paddle:2.1.0-gpu-cuda11.2-cudnn8.GPU 1 core" kubespawner_override: image: reg.hdec.com/paddlepaddle/paddle:2.1.0-gpu-cuda11.2-cudnn8 mem_limit: "1G" extra_resource_limits: nvidia.com/gpu: "1" - display_name: "paddlepaddle2 environment" slug: "paddle2" description: "paddlepaddle/paddle:2.1.0-gpu-cuda10.2-cudnn7.GPU 1 core" kubespawner_override: image: reg.hdec.com/paddlepaddle/paddle:2.1.0-gpu-cuda10.2-cudnn7 mem_limit: "1G" extra_resource_limits: nvidia.com/gpu: "1" - display_name: "paddlepaddle3 environment" slug: "paddle3" description: "paddlepaddle/paddle:2.3.1-gpu-cuda11.2-cudnn8.GPU 1 core" kubespawner_override: image: reg.hdec.com/paddlepaddle/paddle:2.3.1-gpu-cuda11.2-cudnn8 mem_limit: "1G" extra_resource_limits: nvidia.com/gpu: "1" - display_name: "mxnet1 environment" slug: "mxnet1" description: "mxnet/python:1.9.1_gpu_cu102_py3.GPU 1 core" kubespawner_override: image: reg.hdec.com/mxnet/python:1.9.1_gpu_cu102_py3 mem_limit: "1G" extra_resource_limits: nvidia.com/gpu: "1" - display_name: "mxnet2 environment" slug: "mxnet2" description: "mxnet/python:1.9.1_gpu_cu112_py3.GPU 1 core" kubespawner_override: image: reg.hdec.com/mxnet/python:1.9.1_gpu_cu112_py3 mem_limit: "1G" extra_resource_limits: nvidia.com/gpu: "1" cull: enabled: false ``` 配置文件可以设置用户和密码,还需要指定nfs存储的名字。 安装过程中如果遇到含有dig的错误,是helm过于老旧的缘故。[stackoverflow](https://stackoverflow.com/questions/68321891/jupyterhub-helm-install-function-dig-not-defined) 使用如下命令重新安装: ``` wget https://get.helm.sh/helm-v3.8.0-linux-amd64.tar.gz tar -zxvf helm-v3.8.0-linux-amd64.tar.gz mv linux-amd64/helm /usr/local/bin/helm chmod 700 /usr/local/bin/helm exec $SHELL helm version ``` [helm-chart 手动下载地址](https://hub.jupyter.org/helm-chart/)