在 Kubernetes 上升级 JupyterHub#
本节介绍通过更新 Helm Chart 升级 JupyterHub 部署的最佳实践。
Z2JH 遵循 语义化版本控制,每个版本采用 MAJOR.MINOR.PATCH
的形式。次要版本和补丁版本应该向后兼容,并且不需要更改您的部署。查看 变更日志 以了解影响您部署的新功能或错误修复,然后按照 helm 升级命令 操作。
主要版本可能包含重大更改,并且通常需要更改您的配置。除了本页上的通用说明外,它们还具有专门用于升级部署的说明。
如需更多帮助,请随时通过 gitter 或 Discourse 论坛 与我们联系。
主要 helm-chart 升级#
在执行主要升级之前,这些步骤至关重要。
始终备份您的数据库!
查看相应的升级指南,或 变更日志 以了解不兼容的更改和升级说明。
相应地更新您的配置。
用户服务器可能需要在升级之前停止,或在升级之后重新启动。
如果您计划升级关键的主要安装,建议您先在暂存集群上测试升级,然后再将其应用于生产环境。
helm upgrade
命令#
根据变更日志修改您的 config.yaml
文件后,您将需要 <helm-release-name>
来运行升级命令。要查找 <helm-release-name>
,请运行
helm list --namespace <k8s-namespace>
在生产系统上进行升级之前,请务必在暂存环境中测试升级!
要运行升级
helm upgrade --cleanup-on-fail <helm-release-name> jupyterhub/jupyterhub --version=<chart-version> --values config.yaml --namespace <k8s-namespace>
例如,要将版本升级到 1.1.1
,helm 发布名称为 jhub
,k8s 命名空间为 jhub
helm upgrade --cleanup-on-fail jhub jupyterhub/jupyterhub --version=1.1.1 --values config.yaml --namespace jhub
数据库#
Z2JH 的主要版本可能包含 JupyterHub 的主要版本,这需要升级数据库模式。如果您使用的是默认数据库提供程序(SQLite),则在执行 helm upgrade
时,将自动执行所需的数据库升级。旧数据库的备份会自动创建在 hub 卷上。
无法自动备份其他数据库提供程序,因此不会自动执行升级。
默认(SQLite):当您执行升级时,数据库升级将自动执行。
MySQL / PostgreSQL:您将执行以下步骤,其中包括手动更新您的数据库
备份您的数据库,以防万一出现问题。
确保 JupyterHub 用于连接到数据库的数据库用户可以执行模式迁移,例如添加新表、更改表等。
在您的
config.yaml
中,添加以下配置hub: db: upgrade: true
执行
helm upgrade
。这应该执行所需的数据库升级。删除步骤 3 中添加的行,并执行另一个
helm upgrade
,以便将来 JupyterHub 升级不会无意中升级模式。
自定义 Docker 镜像:JupyterHub 版本匹配#
如果您使用的是自定义构建的镜像,请确保其中安装的 JupyterHub 包的版本与 JupyterHub 的主要版本匹配,当前为 2.*。
例如,如果您使用 pip
在自定义 Docker 镜像中安装 JupyterHub,您将使用
RUN pip install --no-cache-dir jupyterhub==2.3.1
如果您使用 conda 或 mamba
RUN conda install --channel=conda-forge -y jupyterhub-base=2.3.1
更新配置以使用此新镜像,这通常通过 singleuser.image
或作为 singleuser.profileList
的一部分完成。
每个 Helm Chart 中安装的 JupyterHub 版本#
每个 Helm Chart 都打包了特定版本的 JupyterHub(以及其他软件)。有关相关软件包版本的详细信息,请参阅 Helm Chart 存储库。
故障排除#
如果升级在测试系统或不为用户提供服务的系统上失败,您可以尝试使用以下命令删除 helm chart
helm delete <helm-release-name> --namespace <k8s-namespace>
helm list --namespace <k8s-namespace>
可用于查找 <helm-release-name>
。