《OpenShift / RHEL / DevSecOps 汇总目录》
说明:本文已经在 OpenShift 4.14 + RHODS 2.50 的环境中验证
文章目录
- 启停 Notebook Server
- 启动
- 停止
- Notebook 镜像
- Notebook Image 和 ImageStream
- 使用定制的 Notebook Image
- 定制服务器的运行配置
- 应用和项目
- 用户和访问权限
- 参考
启停 Notebook Server
RHOAI 使用 StatefulSet 来运行 Applications > Enabled 中的 Jupyter 环境,该 StatefulSet 和其他相关资源全部运行在 rhods-notebook 项目中。
启动
- 登录 RHOAI 控制台,然后进入 Applications > Enabled,再点击 Jupyter 下方的 Launch application 链接。
- 在 Start a notebook server 页面选中一个 Notebook 使用的镜像以及其他选项,然后点击 Start server 按钮。
- 在下图的 Starting server 窗口点击任意按钮即可转到登录页面,然后使用可用用户登录 Jupyter Notebook 即可。
- 此时在 rhods-notebooks 项目中会运行名为 jupter-nb-user1 的 StatefulSet 和对应的资源。
$ oc get all -n rhods-notebooks
Warning: apps.openshift.io/v1 DeploymentConfig is deprecated in v4.14+, unavailable in v4.10000+
NAME READY STATUS RESTARTS AGE
pod/jupyter-nb-user1-0 2/2 Running 0 14m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/jupyter-nb-user1 ClusterIP 172.31.145.240 <none> 80/TCP 14m
service/jupyter-nb-user1-tls ClusterIP 172.31.157.129 <none> 443/TCP 14m
NAME READY AGE
statefulset.apps/jupyter-nb-user1 1/1 14m
NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD
route.route.openshift.io/jupyter-nb-user1 jupyter-nb-user1-rhods-notebooks.apps.cluster-4gwc7.dynamic.redhatworkshops.io jupyter-nb-user1-tls oauth-proxy reencrypt/Redirect None
$ oc get pvc -n rhods-notebooks
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
jupyterhub-nb-user1-pvc Bound pvc-379c22b3-ddc8-4c7c-b6ae-59311f2a1383 20Gi RWO ocs-external-storagecluster-ceph-rbd 41m
停止
- 在 Jupyter Notebook 页面中选择 File > Hub Control Panel 菜单。
- 此时会跳转到 RHOAI 控制台,点击 Stop notebook server 即可停止运行。
- 运行命令,确认在 StatefulSet 中已经没有运行的 Pod 了。
$ oc get statefulset -n rhods-notebooks
NAME READY AGE
jupyter-nb-user1 0/0 16m
Notebook 镜像
在 RHOAI 中是通过容器运行 Jupyter notebook 的。可以在 RHOAI 控制台中看到缺省提供的容器镜像类型,它们包括:Minimal Python、Standard Data Science、CUDA、Pytorch、TensorFlow、HabanaAI、TrustAI。另外用户也可以使用自己定制的容器镜像。
注意:每个镜像包含的预安装包见详细说明。
Notebook Image 和 ImageStream
在创建 Jupyter notebook server 的界面中需要我们选择所使用的镜像。这些镜像是通过 redhat-ods-applications 项目中的 ImageStream 被访问到的。
- 执行命令,可以查看到 redhat-ods-applications 项目中的 ImageStream。
$ oc get is -n redhat-ods-applications
NAME IMAGE REPOSITORY TAGS UPDATED
habana-notebook image-registry.openshift-image-registry.svc:5000/redhat-ods-applications/habana-notebook 2023.2 9 minutes ago
minimal-gpu image-registry.openshift-image-registry.svc:5000/redhat-ods-applications/minimal-gpu 1.2,2023.1,2023.2 9 minutes ago
odh-trustyai-notebook image-registry.openshift-image-registry.svc:5000/redhat-ods-applications/odh-trustyai-notebook 2023.1,2023.2 9 minutes ago
pytorch image-registry.openshift-image-registry.svc:5000/redhat-ods-applications/pytorch 1.2,2023.1,2023.2 9 minutes ago
s2i-generic-data-science-notebook image-registry.openshift-image-registry.svc:5000/redhat-ods-applications/s2i-generic-data-science-notebook 1.2,2023.1,2023.2 9 minutes ago
s2i-minimal-notebook image-registry.openshift-image-registry.svc:5000/redhat-ods-applications/s2i-minimal-notebook 1.2,2023.1,2023.2 9 minutes ago
tensorflow image-registry.openshift-image-registry.svc:5000/redhat-ods-applications/tensorflow 1.2,2023.1,2023.2 9 minutes ago
- 查看名为 tensorflow 的 ImageStream,注意:Image 的相关信息都保存在 annotations 中,例如:软件版本、python 依赖软件版本等。
$ oc get is -n redhat-ods-applications tensorflow -ojsonpath={.spec.tags[2]} | jq
{
"annotations": {
"opendatahub.io/notebook-build-commit": "d0ce8b0",
"opendatahub.io/notebook-python-dependencies": "[{\"name\":\"TensorFlow\",\"version\":\"2.13\"},{\"name\":\"Tensorboard\",\"version\":\"2.13\"}, {\"name\":\"Boto3\",\"version\":\"1.28\"},{\"name\":\"Kafka-Python\",\"version\":\"2.0\"},{\"name\":\"Kfp-tekton\",\"version\":\"1.5\"},{\"name\":\"Matplotlib\",\"version\":\"3.6\"},{\"name\":\"Numpy\",\"version\":\"1.24\"},{\"name\":\"Pandas\",\"version\":\"1.5\"},{\"name\":\"Scikit-learn\",\"version\":\"1.3\"},{\"name\":\"Scipy\",\"version\":\"1.11\"},{\"name\":\"Elyra\",\"version\":\"3.15\"},{\"name\":\"PyMongo\",\"version\":\"4.5\"},{\"name\":\"Pyodbc\",\"version\":\"4.0\"}, {\"name\":\"Codeflare-SDK\",\"version\":\"0.12\"}, {\"name\":\"Sklearn-onnx\",\"version\":\"1.15\"}, {\"name\":\"Psycopg\",\"version\":\"3.1\"}, {\"name\":\"MySQL Connector/Python\",\"version\":\"8.0\"}]",
"opendatahub.io/notebook-software": "[{\"name\":\"CUDA\",\"version\":\"11.8\"},{\"name\":\"Python\",\"version\":\"v3.9\"},{\"name\":\"TensorFlow\",\"version\":\"2.13\"}]",
"opendatahub.io/workbench-image-recommended": "true",
"openshift.io/imported-from": "quay.io/modh/cuda-notebooks"
},
"from": {
"kind": "DockerImage",
"name": "quay.io/modh/cuda-notebooks@sha256:59d571d0d245c050eb9f79de5c3c40517a575d8fdfb41385a324ee45a42b597b"
},
"generation": 2,
"importPolicy": {
"importMode": "Legacy"
},
"name": "2023.2",
"referencePolicy": {
"type": "Source"
}
}
使用定制的 Notebook Image
- 使用管理员登录 OpenShift AI 的控制台,然后进入 Settings > Notebook image settings,
- 在 Import notebook image 窗口中按下图配置定制的镜像,最后点击 Import。
其中 Image localion 为 quay.io/opendatahub-contrib/workbench-images:jupyter-spark-ubi9-py39_2023a_latest
- 完成后可以看到定制的 Notebook 镜像列表。
- 此时再进入 Applications > Enabled 的 Notebook Server 界面,可以看到定制的镜像已经成为可选项。
定制服务器的运行配置
- 进入 OpenShift 控制台的 API Explorer 页面,然后搜索 OdhDashboardConfig 类型对象,点击进入该对象。
- 切换到 redhat-ods-applications 项目,在对象的实例列表中点击进入 odh-dashborad-config。
- 在 YAML 中的 notebookSizes 部分就是运行 Notebook 服务器的几档配置。
应用和项目
在 RHOAI 控制台中每个有权限的用户都可在 Applications 中创建并运行一个 Notebook Server 环境。所有用户的 Notebook Server 都是以 StatefulSet 方式运行在 rhods-notebook 项目中。然而一个用户的多个 AI/ML 都在 Applications 中的这个 Notebook Server 环境中运行往往是不够的,因此用户可以在 Data Science Projects 中创建多个项目以运维不同的 AI/ML。
- 用一个一般用户登录 RHOAI 控制台,然后进入 Data Science Projects 菜单,再点击 Create data science project 按钮。
- 在 Create data science project 窗口填写 Name 和 Resource name。
- 在 Create workbench 页面中按照下图配置,然后点击 Create workbench 按钮。
- 查看 Data Science Project 的详细信息,如下图。其中可以在 Data connection 中配置可用的 S3 对象存储,用来从外部向应用提供模型训练数据。
- 当上图的 Status 为 Running 后,可以点击 Open 链接打开 Jupyter Notebook。另外还可以进入 OpenShift 控制台对应的项目,确认已经有运行的 StatefulSet 对象。
- 当上图的 Status 为 Running 后,可以在对应的项目中看到对应 Workbench 的 StatefulSet 对象。
用户和访问权限
- 使用管理员登录 RHOAI 的控制台,然后进入 Settings > User management 页面。在下图中配置可以使用 RHOAI 的一般用户和管理员用户。默认 OpenShift 系统管理员可以管理 RHOAI,而所有登录用户都可访问 RHOAI 控制台。
- 使用一般用户 user1 和 user2 分别登录 RHOAI 控制台,然后都在 Applications 中创建 Notebook Server。此时在管理员的管理视图中可以在 Applications > Enabled 中的 Administration 页面中看到 user1 和 user2 用户的 notebook 运行环境。
- 确保先完成上一节 “应用和项目”,然后进入 ds-license-plate 项目的 Permissions,
- 在 Users 中按下图增加一项,让 user2 可以管理 ds-license-plate 项目。
- 用 user2 登录 RHOAI,确认该用户可以访问并管理 user1 创建的 ds-license-plate 项目。
参考
https://ai-on-openshift.io/odh-rhods/configuration/