JupyterHub on Kubernetes-Helm安装

  • 本文编译自 https://zero-to-jupyterhub.readthedocs.io/en/latest/setup-jupyterhub.html
  • 本文地址,https://my.oschina.net/u/2306127/blog/1836933,by openthings, 2018.06.28.
  • 更多内容,参考 JupyterHub on Kubernetes部署与应用指南 。

当我们有了 Kubernetes cluster 和 helm 安装好后,就可以开始安装 JupyterHub了。

1、快速安装指南

  • 参考配置和一些脚本工具在 github.com/openthings/kubernetes-tools/jupyter 。
  • 下面的helm安装方法中,helm .... -f config.yaml会出错,报缺失参数错误。
    • 直接复制Helm Chart到自己的目录,然后修改。
  • 修改proxy:secretToken:为执行 openssl rand -hex 32产生的字符串,带引号。
  • 在values.yaml文件中,搜索“storageClass”,有两处,改为"nfs"或其它的存储引擎。
    • 修改singleuser:storage:capacity:为 1Gi,以免=耗用资源过多。
    • 如果需要持久化,参考:Kubernetes搭建NFS原生服务 。
  • 所有的image的tag改为具体的版本号。目前安装时自动替换占位符功能不可用。
    • 参考:github.com/openthings/kubernetes-tools/jupyter/getimages.sh
    • 最好使用上面的脚本事先下载,以免安装时等待时间过长或超时退出。
  • 修改proxy:service: type:为 NodePort。
  • 运行安装:
    • helm install ./jupyterhub --version=v0.6 --name=jupyter --namespace=jupyter
  • 运行 kubectl --namespace=jupyter get svc proxy-public,查看端口。
    • 显示类似PORT(S)80:32600/TCP,浏览器打开 localhost:32600即可。

以下为官方文档描述的方法,目前按照下面方法自建的config.yaml安装时会出错,可能与helm chart编写、Helm版本等都有关系,还需要完善。建议参照上面的方法来安装。

2、准备配置文件

准备一个配置文件 (config file). 使用 YAML 文件格式来指定JupyterHub的配置参数。

保存该配置文件到安全的地方,以后还会用来更新JupyterHub的设置。

执行下面的步骤,我们使用 nano 编辑器。

  • 创建文件 config.yaml,执行 nano config.yaml然后编辑。

  • 创建随机hex string作为安全令牌,运行:

    openssl rand -hex 32

    复制下来。

  • 插入文件 config.yaml 。当编辑YAML 文件时,使用空格缩进,不要用tab键。替换 RANDOM_STRING 为上面 openssl rand -hex 32 生成的字符串。

    proxy:secretToken: "<OUTPUT-OF-`openssl rand -hex 32`>"
  • Azure AKS有效,如果使用 Azure AKS, 必须关闭RBAC,设置如下的配置

    rbac:enabled: false

    查看 RBAC documentation 获得更多细节。

  • ctl+x保存 config.yaml 文件。

3、安装 JupyterHub

  • 添加 JupyterHub helm repository 到本地 repo中,以便从中直接安装JupyterHub。这使使用 JupyterHub chart 更为方便,而不必输入长长的URL。

    helm repo add jupyterhub https://jupyterhub.github.io/helm-chart/
    helm repo update

    输出如下:

    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!⎈
  • 从包含 config.yaml 文件的目录运行如下命令,来安装JupyterHub:

    helm install jupyterhub/jupyterhub \--version=v0.6 \--name=<YOUR-RELEASE-NAME> \--namespace=<YOUR-NAMESPACE> \-f config.yaml

    建议 --name 和 --namespace 设为一样,以减少混淆,虽然不是必须。

    注意:

    • --name helm deployment的名称,可使用helm list查看。
    • --namespace 是 Kubernetes (among other things) 的命名空间,安装时会自动创建。后续的 kubectl执行操作需要指明在特定的命名空间下操作,如 -n mynamespace。
    • 这需要一些时间,没有任何输出,请耐心等待一会。JupyterHub安装在后台执行。
    • 如果返回release named <YOUR-RELEASE-NAME> already exists error,通过运行 helm delete --purge <YOUR-RELEASE-NAME> 来删除已有的安装。如果换是不行,使用 kubectl delete <YOUR-NAMESPACE> 来删除,再重新安装。
    • 彻底删除使用 helm delete --purge <YOUR-RELEASE-NAME> 。
    • 如果拉去大的Docker Image,可能报错 Error: timed out waiting for the condition error, 添加 --timeout=SOME-LARGE-NUMBER 到 helm install 命令。
    • 这里的 --version 对应于helm chart的版本,而不是JupyterHub版本。每一个JupyterHub helm chart 对应于JupyterHub的版本,比如v0.5的 helm chart运行JupyterHub v0.8。

4、使用JupyterHub

查看安装后产生的pod:

kubectl --namespace=<YOUR-NAMESPACE> get pod

等到 hub 和 proxy pod 开始运行。

查到JupyterHub的服务 IP,如下:

kubectl --namespace=<YOUR-NAMESPACE> get svc

这里的 proxy-public service 的external IP一会儿就可以访问了。

注意:

如果proxy-public 输出过长,可以使用:

kubectl --namespace=<YOUR-NAMESPACE> describe svc proxy-public --output=wide

到浏览器,输入proxy-public service 的 external IP。在登录页面输入任何username 和 password 的组合都可以进入jupyterhub页面。

你还可以很多种方式 extend it ,可以使用预先构建的用户容器镜像,或者自己构建一个,使用不同的权限和安装不同的软件,里面的软件包使用conda管理。后续再介绍详细的方法。

JupyterHub on Kubernetes-Helm安装相关推荐

  1. K8S+Helm 安装 Jupyterhub

    准备配置文件 生成随机数 openssl rand -hex 32 # 8fc2826e9ce6930ec26c9fd541c0620b448a947357edbdf9647516af16bbc798 ...

  2. helm安装postgres_Helm 入门介绍 Kubernetes 上的包管理软件

    这篇文章介绍一下云原生应用在 Kubernetes 上安装时,经常会用到的一个重要工具,Helm. Helm 是 Kubernetes 的包管理软件.提到包管理软件,很多人都不陌生.Maven.Gra ...

  3. Kubernetes - - k8s - v1.12.3 使用Helm安装harbor

    1,Helm 介绍 核心术语: Chart:一个helm程序包 Repository:Charts仓库,https/http 服务器 Release:特定的Chart部署与目标集群上的一个实例 Cha ...

  4. Kubernetes中安装Helm及使用

    Helm 致力于成为 Kubernetes 的包管理工具,可以方便地发现.共享和使用为 Kubernetes 构建的应用,它包含几个基本概念: Chart:一个 Helm 包,其中包含了运行一个应用所 ...

  5. helm安装_Helm部署和体验jenkins

    运行在Kubernetes上的Jenkins 下图来自rancher官方博客,在kubernetes环境下,jenkins任务被交给各个pod执行,这些pod在需要时被创建,任务结束后被销毁,这样既能 ...

  6. kubernetes安装_在 Kubernetes 上安装 Gitlab CI Runner

    在 Kubernetes 上安装 Gitlab CI Runner​www.qikqiak.com 上节课我们使用 Helm 快速的将 Gitlab 安装到了我们的 Kubernetes 集群中,这节 ...

  7. helm部署mysql_使用 helm 安装 MySQL (包括持久化存储)

    背景 本文介绍如何使用 helm 安装 mysql ,使用本地存储的方式. 1. 安装storage kind: StorageClass apiVersion: storage.k8s.io/v1 ...

  8. Helm安装Harbor

    前言 文章中用到的harbor存储是hostpath,service的类型是ingress.根据harbor官网提示,需要提前创建pv和pvc,既然选择了hostpath,那么就需要将pod固定到某一 ...

  9. helm安装cert-manager自动化Https(1.8)

    Helm安装cert-manager自动化 HTTPS 查看支持版本 一. 老版本v0.12.0(不推荐,好久没用这个版本了) 1.1 安装CustomResourceDefinition资源 1.2 ...

  10. 在 Kubernetes 上安装和运行极狐GitLab实例

    目录 写在前面 极狐GitLab 在 Kubernetes 上的安装 前提条件 Chart 准备 values.yaml 定制 Helm 安装 在前面的文章中分别演示了如何用安装包. docker 在 ...

最新文章

  1. jquery text方法html,jquery text(),html()方法的区别
  2. ART的安装和简单使用
  3. 001-SDK框架之Unity游戏调用SDK
  4. 使用 JSSE 定制 SSL 连接的属性--转载
  5. student consulting system
  6. matlab计算联合熵,如何用matlab软件计算一幅图像信息的熵以及两幅图像间的联合熵?...
  7. 杠杆原理的形象演示,你都懂了吗?
  8. 【每日SQL打卡】​​​​​​​​​​​​​​​DAY 13丨每位学生的最高成绩【难度中等】
  9. python 共享文件夹 密码_用不同的用户名和密码登录网络上的共享文件夹
  10. jquery+ajax验证不通过也提交表单问题处理
  11. 直播卖房和VR看房,到底是噱头还是新趋势?
  12. 混亂的思維 ~ 很高興能邂逅到常年不見的竹子
  13. 迅雷“去中心化”再升级 转型中All in 区块链
  14. 1960-2018年世界各国GDP排名变化--Python动图实现
  15. 2022华中杯数学建模思路实时更新-ABC思路已更新(A一二程序已更新)-4月30日19时
  16. 分布式矩阵和分布式kvm的区别
  17. OpenCV利用鼠标操作测量角度
  18. js 在js字符串中添加空格
  19. 经验模态分解python_如何提高希尔伯特黄变换中经验模态分解(EMD)的速度?
  20. day01-docker安装mysql5.7

热门文章

  1. SPS2003升级到MOSS2007相关资料及问题总结
  2. mycat 1.6.5 for mysql 8分表攻略
  3. 工作所用的模块回滚脚本
  4. Python自动化运维之常用模块—logging
  5. Jsoup 数据修改
  6. nginx(五)rewrite
  7. C#学习笔记(十三):I/O操作
  8. node.js编程错误记录集
  9. Chromium OS 开源项目
  10. ASP.NET 生成唯一不重复的订单号 支持多用户并发、持多数据库的实现参考(C#.NET通用权限管理系统组件源码组成部分)...