當AI遇上K8S:使用Rancher安裝機器學習必備工具JupyterHub


Jupyter Notebook是用於科學數據分析的利器,JupyterHub可以在服務器環境下為多個用戶托管Jupyter運行環境。本文將詳細介紹如何使用Rancher安裝JupyterHub來為數據科學和機器學習開發創建可擴展的工作區。


本文來自 Rancher Labs

人工智能(AI)和機器學習(ML)正在成為技術領域的關鍵差異化因素。從本質上講,人工智能和機器學習都是計算量巨大的工作負載,它們需要一流的分布式計算環境才能夠蓬勃發展。因此,AI和ML為Kubernetes提供了一個完美的用例,他們能夠最大化展現Kubernetes可以運行大量工作負載的特點。

什么是JupyterHub?

Jupyter Notebook是用於科學數據分析的利器,JupyterHub可以在服務器環境下為多個用戶托管Jupyter運行環境。JupyterHub是一個多用戶數據探索工具,通常是數據科學和機器學習研究與開發的關鍵工具。它為工程師、科學家、研究人員和學生提供了雲或數據中心的計算能力,同時仍然像本地開發環境一樣易於使用。本質上,JupyterHub使用戶可以訪問計算環境和資源,而不會給他們增加安裝和維護任務的負擔。用戶可以在工作區中使用共享資源,系統管理員會對其進行有效管理。

在AI/ML工作負載中使用Kubernetes

Kubernetes非常擅長讓我們利用大型分布式計算環境。因為其聲明式設計和基於發現的服務器尋址方法,所以將計算資源應用於工作負載很容易。通常在AI/ML工作負載中,工程師或研究人員需要分配更多的資源。而Kubernetes讓在物理基礎架構之間遷移工作負載更加可行。在本文中,我們將展示如何使用Rancher安裝JupyterHub。

使用Rancher安裝JupyterHub

首先,假設我們在Rancher環境中擁有現代化的Kubernetes部署。在本文發布時,Kubernetes的穩定版本是1.16。對於JupyterHub來說,其中一個前期准備是持久化存儲,所以你將需要思考如何在這個集群中提供它。出於演示的目的,我們可以使用Rancher Catalog中包含的實驗性NFS提供程序來提供持久化存儲。點開App Catalog並選擇【啟動】。然后搜索NFS提供程序。保留默認設置,然后單擊屏幕底部的【啟動】。如果你已經有持久化存儲的解決方案,也可以直接使用它。

導航到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旅程!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM