JupyterHub on Kubernetes-Helm安装
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.
- 更多內(nèi)容,參考?JupyterHub on Kubernetes部署與應(yīng)用指南?。
當(dāng)我們有了?Kubernetes cluster?和?helm?安裝好后,就可以開始安裝 JupyterHub了。
1、快速安裝指南
- 參考配置和一些腳本工具在?github.com/openthings/kubernetes-tools/jupyter?。
- 下面的helm安裝方法中,helm .... -f config.yaml會出錯,報缺失參數(shù)錯誤。
- 直接復(fù)制Helm Chart到自己的目錄,然后修改。
- 修改proxy:secretToken:為執(zhí)行?openssl rand -hex 32產(chǎn)生的字符串,帶引號。
- 在values.yaml文件中,搜索“storageClass”,有兩處,改為"nfs"或其它的存儲引擎。
- 修改singleuser:storage:capacity:為 1Gi,以免=耗用資源過多。
- 如果需要持久化,參考:Kubernetes搭建NFS原生服務(wù)?。
- 所有的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版本等都有關(guān)系,還需要完善。建議參照上面的方法來安裝。
2、準備配置文件
準備一個配置文件 (config file). 使用?YAML?文件格式來指定JupyterHub的配置參數(shù)。
保存該配置文件到安全的地方,以后還會用來更新JupyterHub的設(shè)置。
執(zhí)行下面的步驟,我們使用?nano?編輯器。
-
創(chuàng)建文件?config.yaml,執(zhí)行?nano config.yaml然后編輯。
-
創(chuàng)建隨機hex string作為安全令牌,運行:
openssl rand -hex 32復(fù)制下來。
-
插入文件?config.yaml?。當(dāng)編輯YAML 文件時,使用空格縮進,不要用tab鍵。替換?RANDOM_STRING?為上面?openssl rand -hex 32?生成的字符串。
proxy:secretToken: "<OUTPUT-OF-`openssl rand -hex 32`>" -
Azure AKS有效,如果使用 Azure AKS, 必須關(guān)閉RBAC,設(shè)置如下的配置:
rbac:enabled: false查看?RBAC documentation?獲得更多細節(jié)。
-
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?設(shè)為一樣,以減少混淆,雖然不是必須。
注意:
- --name?helm deployment的名稱,可使用helm list查看。
- --namespace?是?Kubernetes?(among other things) 的命名空間,安裝時會自動創(chuàng)建。后續(xù)的?kubectl執(zhí)行操作需要指明在特定的命名空間下操作,如 -n mynamespace。
- 這需要一些時間,沒有任何輸出,請耐心等待一會。JupyterHub安裝在后臺執(zhí)行。
- 如果返回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?對應(yīng)于helm chart的版本,而不是JupyterHub版本。每一個JupyterHub helm chart 對應(yīng)于JupyterHub的版本,比如v0.5的 helm chart運行JupyterHub v0.8。
4、使用JupyterHub
查看安裝后產(chǎn)生的pod:
kubectl --namespace=<YOUR-NAMESPACE> get pod等到 hub 和 proxy pod 開始運行。
查到JupyterHub的服務(wù) 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?,可以使用預(yù)先構(gòu)建的用戶容器鏡像,或者自己構(gòu)建一個,使用不同的權(quán)限和安裝不同的軟件,里面的軟件包使用conda管理。后續(xù)再介紹詳細的方法。
總結(jié)
以上是生活随笔為你收集整理的JupyterHub on Kubernetes-Helm安装的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spring+SpringMVC+Myb
- 下一篇: 图片打标