k8s和helm安装jupyterhub

参考jupyterhub官网给的安装教程Zero to JupyterHub for Kubernetes

下载docker

docker官网下载docker desktop的安装包,并安装。

安装Kubernetes

在docker dashboard上点击设置按钮,选择Kubernetes,勾选Enable Kubernetes,等待下载完成之后Apply & Restart重启。

安装helm

mac下运行brew install helm即可。
有可能需要修改国内镜像源,如切换清华源:

$ cd "$(brew --repo)"
$ git remote set-url origin https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/brew.git
$ cd "$(brew --repo)/Library/Taps/homebrew/homebrew-core"
$ git remote set-url origin https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/homebrew-core.git
$ brew update

安装JupyterHub

# 添加chart
$ helm repo add jupyterhub https://jupyterhub.github.io/helm-chart/
$ helm repo update
# 生成一个随机字符串作为JupyterHub的安全Token
$ openssl rand -hex 32
# 新建一个config.yaml文件,如下配置:
$ vim config.yaml

# 默认打开jupyterlab
singleuser:
  defaultUrl: "/lab"
hub:
  extraConfig:
    myConfig.py: |
      c.Spawner.cmd = ['jupyter-labhub']
proxy:
  secretToken: "0d7db40535787b779bceb04806235978c5e1c28cbcb240cda9adf8820af8bb40" # 这里写刚刚生成的Token

# 创建并编辑helm install脚本,如下内容:
$ vim helm-install-jupyterhub.sh

RELEASE=jhub
NAMESPACE=jhub
helm upgrade --cleanup-on-fail \
  --install $RELEASE jupyterhub/jupyterhub \
  --namespace $NAMESPACE  \
  --create-namespace \
  --version=1.1.3 \
  --values config.yaml \
  --timeout 600s

# 运行安装jupyterhub
$ chmod +x helm-install-jupyterhub.sh
$ ./helm-install-jupyterhub.sh

按理来说,但现在就算安装完成了,但是在最后一步安装的时候由于网络墙的原因会出现拉取镜像失败。

kubectl get pod -n jhub。查看pod命名空间下的所有容器,会发现有容器的STATUS为ErrImagePull。

kubectl describe pod hook-image-puller-8wrxh -n jhub。这个时候我们就要去看这个容器在拉取哪个镜像的时候出错了。

发现是k8s.gcr.io/pause:3.5,打开科学的上网方法,docker pull k8s.gcr.io/pause:3.5。

重新运行安装脚本./helm-install-jupyterhub.sh。

kubectl get pod -n jhub。查看pod命名空间下的所有容器,会发现有容器的STATUS为ImagePullBackoff。

kubectl describe pod user-scheduler-78d486d6fb-ksdzm -n jhub。同样去看这个容器在拉取哪个镜像的时候出错了。

发现是k8s.gcr.io/kube-scheduler:v1.19.13,打开科学的上网方法,docker pull k8s.gcr.io/kube-scheduler:v1.19.13。

然后再次运行kubectl get pod -n jhub,发现容器都运行正常。

kubectl get svc -n jhub,查看jhub命名空间下的所有服务,
kubectl edit service proxy-public -n jhub,修改proxy-public的type为NodePort。

浏览器打开http://localhost:31832

由于是用的dummyAuth,所以用户名密码可以随便输入。

posted @ 2021-09-19 17:28  仲夏冬蕴Mm  阅读(875)  评论(0编辑  收藏  举报