當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旅程!

相關文章
相關標籤/搜索