当咱们有了 Kubernetes cluster 和 helm 安装好后,就能够开始安装 JupyterHub了。html
如下为官方文档描述的方法,目前按照下面方法自建的config.yaml安装时会出错,可能与helm chart编写、Helm版本等都有关系,还须要完善。建议参照上面的方法来安装。git
准备一个配置文件 (config file). 使用 YAML 文件格式来指定JupyterHub的配置参数。github
保存该配置文件到安全的地方,之后还会用来更新JupyterHub的设置。浏览器
执行下面的步骤,咱们使用 nano 编辑器。安全
建立文件 config.yaml
,执行 nano config.yaml
而后编辑。app
建立随机hex string做为安全令牌,运行:编辑器
openssl rand -hex 32
复制下来。ide
插入文件 config.yaml
。当编辑YAML 文件时,使用空格缩进,不要用tab键。替换 RANDOM_STRING
为上面 openssl rand -hex 32
生成的字符串。工具
proxy: secretToken: "<OUTPUT-OF-`openssl rand -hex 32`>"
Azure AKS有效,若是使用 Azure AKS, 必须关闭RBAC,设置以下的配置:
spa
rbac: enabled: false
查看 RBAC documentation 得到更多细节。
ctl+x保存 config.yaml
文件。
添加 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。release named <YOUR-RELEASE-NAME> already exists
error,经过运行 helm delete --purge <YOUR-RELEASE-NAME> 来删除已有的安装。若是换是不行,使用
kubectl delete <YOUR-NAMESPACE>
来删除,再从新安装。helm delete --purge <YOUR-RELEASE-NAME>
。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。查看安装后产生的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管理。后续再介绍详细的方法。