Jupyterhub部署到k8s

Jupyterhub部署到k8s

JupyterHub
JupyterHub是为多个用户提供Jupyter笔记本的最佳方式。由于JupyterHub为每个用户管理一个单独的Jupyter环境,因此它可以用于学生班级、企业数据科学组或科学研究组。它是一个多用户Hub,生成、管理和代理单用户Jupyter笔记本服务器的多个实例。JupyterHub可以在协作环境中用于小型(0-100个用户)和大型团队(超过100个用户),例如一个班级的学生、企业数据科学小组或科学研究小组。它有两个主要的发行版,分别为满足这些团队的需求而开发。
少量用户(1-100)和具有简单环境的单个服务器官方推荐使用little JupyterHub发行版。
并且JupyterHub允许在云上部署动态服务器,在需要更多的用户的情况下我们可以在Kubernetes之上运行JupyterHub。

一、具体部署过程

1.安装 helm

下载需要的版本官方版本地址

tar -zxvf 你的helm 压缩包 
mv linux-amd64/helm /usr/local/bin/helm #移动到软件安装目录
helm version

安装完毕

2.部署 jupyterhub

参考官方文档
2.1 创建一个config.yaml:
YAML

# 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://hub.jupyter.org/helm-chart/

2.2 添加repo.

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

2.3修改以下命令并执行:

helm upgrade --cleanup-on-fail \
  --install <helm-release-name> jupyterhub/jupyterhub \ #helm安装的名称
  --namespace <k8s-namespace> \ #替换成你的命名空间名称
  --create-namespace \ 
  --version=<chart-version> \ #需要安装的版本
  --values config.yaml

如果没有报错,部署完毕。
ps:
!!!
注意⚠️部署jupyterhub时可能会出现以下报错信息:

解决办法: 下载jupyterhub进行本地安装
•解压jupyterhub查看使用了这个镜像源的文件

tar -zxvf jupyterhub-3.3.7.tgz
grep -r "registry.k8s.io" --include="*.yaml" .

•修改镜像源

sed -i 's#registry.k8s.io#registry.cn-hangzhou.aliyuncs.com/google_containers#g' values.yaml
sed -i 's#registry.k8s.io#registry.cn-hangzhou.aliyuncs.com/google_containers#g' Chart.yaml

•修改本地的containerd

cat > /etc/containerd/config.toml <<'EOF'
> version = 2
> root = "/var/lib/containerd"
> state = "/run/containerd"
> oom_score = 0
> 
> [grpc]
>   max_recv_message_size = 16777216
>   max_send_message_size = 16777216
> 
> [debug]
>   level = "info"
> 
> [metrics]
>   address = ""
>   grpc_histogram = false
> 
> [plugins]
>   [plugins."io.containerd.grpc.v1.cri"]
>     sandbox_image = "registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.7"
>     max_container_log_line_size = -1
>     [plugins."io.containerd.grpc.v1.cri".containerd]
>       default_runtime_name = "runc"
>       snapshotter = "overlayfs"
>       [plugins."io.containerd.grpc.v1.cri".containerd.runtimes]
>         [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc]
>           runtime_type = "io.containerd.runc.v2"
>           runtime_engine = ""
>           runtime_root = ""
> 
>           [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]
>             systemdCgroup = true
>     [plugins."io.containerd.grpc.v1.cri".registry]
>       [plugins."io.containerd.grpc.v1.cri".registry.mirrors]
>         [plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]
>           endpoint = ["https://registry-1.docker.io"]
>         [plugins."io.containerd.grpc.v1.cri".registry.mirrors."registry.k8s.io"]
>           endpoint = ["https://registry.cn-hangzhou.aliyuncs.com/google_containers"]
>         [plugins."io.containerd.grpc.v1.cri".registry.mirrors."Harbor 地址"]
>           endpoint = ["Harbor 地址"]
> EOF
systemctl restart containerd.service
•安装
Bash
helm upgrade --cleanup-on-fail \
  --install <helm-release-name> ./jupyterhub \ #helm安装的名称
  --namespace <k8s-namespace> \ #替换成你的命名空间名称
  --create-namespace \ 
  --version=<chart-version> \ #需要安装的版本
  --values config.yaml

二、鉴权

jupyterhub部署完成之后不需要创建用户,并且不校验密码。而 jupyterhub 官方提供多种鉴权模式,详情请看官方文档:
以下是私有gitlab鉴权登录教程:

1. 在 gitlab 上生成需要的信息

	参考[gitlab 官方文档](https://docs.gitlab.com/ee/integration/oauth_provider.html)

2. 修改 jupyterhub 配置文件

参考jupyterhub官方文档

c.JupyterHub.authenticator_class = "gitlab"
c.OAuthenticator.oauth_callback_url = "http://hubip地址/hub/oauth_callback"
c.OAuthenticator.client_id = "你的 application 🆔"
c.OAuthenticator.client_secret = "对应的 secret"
c.GitLabOAuthenticator.allow_all = True

done.
  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值