JupyterHub 安装说明(Kubernetes)

有 Kubernetes 集群并安装了Helm,我们可以使用 JupyterHub Helm Chart 在 Kubernetes 集群中安装 JupyterHub。

原文:https://z2jh.jupyter.org/en/stable/jupyterhub/installation.html

先决条件

  • 熟悉一些命令行。
  • 有 Kubernetes 集群并安装了Helm

初始化 Helm chart 配置

Helm chart 包含可呈现给要安装的Kubernetes 资源的模板。Helm chart 的用户可以覆盖图表的默认值以影响模板的呈现方式。

在此步骤中,我们将初始化一个 chart 配置文件,以便您调整 JupyterHub 的安装。我们将命名并引用它config.yaml

从 1.0.0 版本开始,您不需要任何配置即可开始,因此您只需创建一个config.yaml包含一些有用注释的文件即可。

# This file can update the JupyterHub Helm chart's default configuration values.
#
# For reference see the configuration reference and default values, but make
# sure to refer to the Helm chart version of interest to you!
#
# Introduction to YAML:     https://www.youtube.com/watch?v=cdLNKUoMc6c
# Chart config reference:   https://zero-to-jupyterhub.readthedocs.io/en/stable/resources/reference.html
# Chart default values:     https://github.com/jupyterhub/zero-to-jupyterhub-k8s/blob/HEAD/jupyterhub/values.yaml
# Available chart versions: https://hub.jupyter.org/helm-chart/
#

如果您正在使用终端工作并且不确定如何创建此文件,可以尝试使用。nano config.yaml

安装 JupyterHub

  • 1、让 Helm 添加 JupyterHub Helm Chart 存储库,这样您就可以从中安装 JupyterHub Chart,而不必使用长 URL 名称。

    helm repo add jupyterhub https://hub.jupyter.org/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!⎈
  • 2、通过从包含您的目录运行下面的命令,使用 config.yaml 来安装您配置的chat:

    helm upgrade --cleanup-on-fail \
    --install <helm-release-name> jupyterhub/jupyterhub \
    --namespace <k8s-namespace> \
    --create-namespace \
    --version=<chart-version> \
    --values config.yaml
    • <helm-release-name>指的是Helm 版本名称,用于区分图表安装的标识符。更改或删除此图表安装的配置时需要它。如果您的 Kubernetes 集群将包含多个 JupyterHub,请确保区分它们。您可以使用列出您的 Helm 版本。helm list
    • <k8s-namespace>指的是Kubernetes 命名空间,这是用于对 Kubernetes 资源进行分组的标识符,在本例中是与 JupyterHub 图表关联的所有 Kubernetes 资源。您需要命名空间标识符才能使用 执行任何命令kubectl。
    • 此步骤可能需要一点时间,在此期间您的终端不会有任何输出。JupyterHub 正在后台安装。
    • 如果出现错误,则应通过运行删除该版本。然后重复此步骤重新安装。如果问题仍然存在,请重复此步骤并重试。release named <helm-release-name> already existshelm delete <helm-release-name>kubectl delete namespace <k8s-namespace>
    • 一般来说,如果安装步骤出现问题,请 在重新运行安装命令之前通过运行删除 Helm 版本。helm delete <helm-release-name>
    • 如果您从大型 Docker 映像中提取,则可能会出现 错误,请 向命令添加参数。Error: timed out waiting for the condition–timeout=mhelm
    • 该–version参数对应于Helm chart 的版本,而不是 JupyterHub 的版本。每个版本的 JupyterHub Helm chart 都与特定版本的 JupyterHub 配对。例如, 0.11.1Helm chart 运行 JupyterHub 1.3.0。有关每个版本的 JupyterHub Helm Chart 中安装的 JupyterHub 版本的列表,请参阅Helm Chart 存储库。
  • 3、在步骤 2 运行时,您可以通过输入不同的终端来查看正在创建的 pod:

    kubectl get pod --namespace <k8s-namespace>

    为了保持理智,我们建议您为 kubectl 启用自动完成功能(按照适合您平台的 kubectl 安装说明 查找 shell 自动完成说明),并为标志设置一个默认值--namespace

    kubectl config set-context $(kubectl config current-context) --namespace <k8s-namespace>
  • 4、等待hub和proxy pod进入Running状态。

    NAME                    READY     STATUS    RESTARTS   AGE
    hub-5d4ffd57cf-k68z8    1/1       Running   0          37s
    proxy-7cb9bc4cc-9bdlp   1/1       Running   0          37s

    -5、找到我们可以用来访问 JupyterHub 的 IP。运行以下命令,直到proxy-public服务的EXTERNAL-IP 是如示例输出所示的可用状态。

    kubectl --namespace <k8s-namespace> get service proxy-public
    NAME           TYPE           CLUSTER-IP     EXTERNAL-IP     PORT(S)        AGE
    proxy-public   LoadBalancer   10.51.248.230   104.196.41.97   80:31916/TCP   1m

    或者,使用缩写形式:

    kubectl --namespace <k8s-namespace> get service proxy-public --output jsonpath='{.status.loadBalancer.ingress[].ip}'
  • 6、要使用 JupyterHub,请在浏览器中输入 proxy-public 服务的外部 IP。JupyterHub使用默认的虚拟身份验证器运行,因此输入任何用户名和密码组合都可以让您进入中心。

    恭喜!现在您已经运行了基本的 JupyterHub,您可以通过多种方式扩展和优化它以满足您的需求。

以下是一些定制的示例:

  • 配置登录以使用对您有意义的帐户(Google、GitHub 等)。
  • 为用户容器使用合适的预构建图像或构建您自己的图像。
  • 将其托管在https://your-domain.com上。
作者:Jeebiz  创建时间:2024-11-16 21:44
最后编辑:Jeebiz  更新时间:2024-11-16 22:04