当AI赶上K8S:使用Rancher安装机器学习必备工具JupyterHub

Jupyter Notebook是用于科学数据分析的利器,JupyterHub能够在服务器环境下为多个用户托管Jupyter运行环境。本文将详细介绍如何使用Rancher安装JupyterHub来为数据科学和机器学习开发建立可扩展的工做区。python


本文来自 Rancher Labsgit

人工智能(AI)和机器学习(ML)正在成为技术领域的关键差别化因素。从本质上讲,人工智能和机器学习都是计算量巨大的工做负载,它们须要一流的分布式计算环境才可以蓬勃发展。所以,AI和ML为Kubernetes提供了一个完美的用例,他们可以最大化展示Kubernetes能够运行大量工做负载的特色。github

什么是JupyterHub?

Jupyter Notebook是用于科学数据分析的利器,JupyterHub能够在服务器环境下为多个用户托管Jupyter运行环境。JupyterHub是一个多用户数据探索工具,一般是数据科学和机器学习研究与开发的关键工具。它为工程师、科学家、研究人员和学生提供了云或数据中心的计算能力,同时仍然像本地开发环境同样易于使用。本质上,JupyterHub使用户能够访问计算环境和资源,而不会给他们增长安装和维护任务的负担。用户能够在工做区中使用共享资源,系统管理员会对其进行有效管理。json

在AI/ML工做负载中使用Kubernetes

Kubernetes很是擅长让咱们利用大型分布式计算环境。由于其声明式设计和基于发现的服务器寻址方法,因此将计算资源应用于工做负载很容易。一般在AI/ML工做负载中,工程师或研究人员须要分配更多的资源。而Kubernetes让在物理基础架构之间迁移工做负载更加可行。在本文中,咱们将展现如何使用Rancher安装JupyterHub。浏览器

使用Rancher安装JupyterHub

首先,假设咱们在Rancher环境中拥有现代化的Kubernetes部署。在本文发布时,Kubernetes的稳定版本是1.16。对于JupyterHub来讲,其中一个前期准备是持久化存储,因此你将须要思考如何在这个集群中提供它。出于演示的目的,咱们可使用Rancher Catalog中包含的实验性NFS提供程序来提供持久化存储。点开App Catalog并选择【启动】。而后搜索NFS提供程序。保留默认设置,而后单击屏幕底部的【启动】。若是你已经有持久化存储的解决方案,也能够直接使用它。bash

导航到Rancher App Catalog服务器

搜索NFS提供程序架构

启动NFS提供程序机器学习

如今咱们已经有了存储提供程序而且定义了默认存储类,咱们能够继续部署应用程序组件。咱们将使用Helm3来完成这一操做。查看helm官方文档(https://helm.sh/docs/intro/install/ ),在你的电脑上安装helm3客户端。另外,你也可使用Rancher Catalog来部署helm chart,而无需任何其余工具。须要确保将repo添加到Rancher catalog中。分布式

在咱们使用helm以前,咱们须要为应用程序建立一个命名空间。在Rancher UI中,进入集群并选择顶端菜单栏的【项目/命名空间】。你能够为JupyterHub建立一个新的命名空间。例如,咱们将命名空间称为“jhub“。请注意此名称,由于咱们将以后会使用。

建立一个命名空间

接下来,咱们能够为将要使用的JupyterHub Chart添加Helm repo。若是使用的是Rancher catalog,你须要在UI上完成此操做而不是Helm CLI:

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

而后,让咱们建立一个config文件,其中包含了咱们要与此chart一块儿使用的设置。咱们将该文件命名为config.yaml:

proxy:
  secretToken: "<secret token>"
ingress:
  enabled: true
  hosts:
    - <host name>

让咱们替换几个项目,使它们是惟一的。用如下输出替换secretToken:

openssl rand -hex 32

并替换为你打算用来访问JyupiterHub UI的可解析DNS名称。

有了配置文件以后,就能够安装chart了。咱们将引用该配置文件,所以请确保该文件存在你当前的工做目录中:

RELEASE=jhub
NAMESPACE=jhub
helm upgrade --install $RELEASE jupyterhub/jupyterhub   --namespace $NAMESPACE    --version=0.8.2   --values config.yaml

Helm如今应该部署所需的组件。这将须要一些时间,可是最终你应该可以经过以前设置的主机名访问UI。你也能够经过转到Rancher UI中的“工做负载“选项卡来检查状态。当咱们尝试在浏览器中设置的主机名时,它将显示如下登陆界面:

主机名登陆界面

在撰写本文时,有一个issue是Kubernetes 1.16中的更改致使Jyupiter Hub的代码在尝试与Kuberentes API交互时中断。若是要当即修复,咱们能够运行如下patch命令:

kubectl patch deploy -n $NAMESPACE hub --type json --patch '[{"op": "replace", "path": "/spec/template/spec/containers/0/command", "value": ["bash", "-c", "\nmkdir -p ~/hotfix\ncp -r /usr/local/lib/python3.6/dist-packages/kubespawner ~/hotfix\nls -R ~/hotfix\npatch ~/hotfix/kubespawner/spawner.py << EOT\n72c72\n<             key=lambda x: x.last_timestamp,\n---\n>             key=lambda x: x.last_timestamp and x.last_timestamp.timestamp() or 0.,\nEOT\n\nPYTHONPATH=$HOME/hotfix jupyterhub --config /srv/jupyterhub_config.py --upgrade-db\n"]}]'

你如今已经在Rancher上部署了能够正常工做的JupyterHub环境。默认状况下,JupyterHub使用PAM身份验证。所以,可使用系统上的任何有效Linux用户登陆。登陆后,咱们应该可以建立新的notebook:

Jupyter登陆界面

建立新的notebook

另外,你能够查看其余你可能想配置的身份验证选项。例如,你可使用Github身份验证来容许用户登陆而且建立基于他们Github ID的notebook。你选择好一个身份验证的工具以后,须要按照说明更新咱们以前建立的config.yml文件,而后从新运行helm upgrade命令。

总 结

在本文中,咱们展现了如何使用Rancher安装JupyterHub来为数据科学和机器学习开发建立可扩展的工做区。若是你想要安装功能齐全的JupyterHub安装,你可能还须要考虑其余因素。本文只是向你展现了如何快速搭建一个基础功能的JupyterHub,但愿能帮助你快速开启AI旅程!

相关文章
相关标签/搜索