Kubernetes已經Release 1.17.0,直接使用kubeadm建立高可用集羣成爲現實。這裏咱們將進一步快速建立並設置JupyterHub for K8s。因爲Helm在2019年已經大幅度更新,安裝方法也有比較大的區別。如下詳述具體步驟。html
helm是一個模版化的k8s服務安裝系統,其版本參考以下:python
獲取helm步驟以下:linux
wget https://get.helm.sh/helm-v3.0.2-linux-amd64.tar.gz tar -vxf helm-v3.0.2-linux-amd64.tar.gz sudo cp linux-amd64/helm /usr/local/bin/
添加repo的命令以下:git
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!⎈
建立一個 32 bytes的隨機數用做security token.。運行下面的命令並複製輸出結果:github
openssl rand -hex 32
建立並編輯文件 config.yaml。
使用 nano editor, 也可使用其它的。shell
nano config.yaml
將上面的token複製到 config.yaml
文件中,替代 <RANDOM-HEX>
這一部份內容。json
proxy: secretToken: "<RANDOM_HEX>"
安裝chart,使用配置文件 config.yaml
。以下:api
# Suggested values: advanced users of Kubernetes and Helm should feel # free to use different values. RELEASE=jhub NAMESPACE=jhub helm upgrade --install $RELEASE jupyterhub/jupyterhub \ --namespace $NAMESPACE \ --version=0.8.2 \ --values config.yaml
查看pod,咱們將jupyterhub安裝到了jhub命名空間中。瀏覽器
kubectl get pod --namespace jhub
注意:bash
建議 enable autocompletion for kubectl 並設置 --namespace
flag:
kubectl config set-context $(kubectl config current-context) --namespace ${NAMESPACE:-jhub}
缺省安裝使用LoadBalancer提供對外服務。
找到JupyterHub的服務IP。
運行下面的命令,直到 EXTERNAL-IP
of the proxy-public
service 可用。
kubectl get service --namespace jhub獲得:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE hub ClusterIP 10.51.243.14 <none> 8081/TCP 1m proxy-api ClusterIP 10.51.247.198 <none> 8001/TCP 1m proxy-public LoadBalancer 10.51.248.230 104.196.41.97 80:31916/TCP 1m
注意:
這裏 IP for proxy-public
若是顯示太長,考慮使用:
kubectl describe service proxy-public --namespace jhub
爲了使用 JupyterHub,輸入 external IP for the proxy-public
到瀏覽器地址欄。缺省狀況下,可使用任何的username and password 組合進入。
也可使用Proxy或NodePort來提供外部訪問(參考 Kubernetes 1.17.0管理界面Dashboard 2 的設置方法)。
注意:若是升級到最近的python3版本,JupyterHub運行時出現錯誤,Notebook Server沒法啓動,進pod日誌發現提示信息"NoneType",能夠採用下面的方法修復:
kubectl patch deploy -n jhub 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"]}]'
再去訪問JupyterHub的服務,恢復正常。