9.5. 管理员对分布式工作负载的常见问题
如果您的用户在与分布式工作负载的 Red Hat OpenShift AI 中遇到错误,请阅读本节以了解导致问题的原因,以及如何解决这个问题。
如果此处或发行注记中没有记录这个问题,请联系红帽支持团队。
9.5.1. 用户的 Ray 集群处于暂停状态 复制链接链接已复制到粘贴板!
问题
集群队列配置中指定的资源配额可能不足,或者资源类别可能尚未创建。
诊断
用户的 Ray 集群头 pod 或 worker pod 处于暂停状态。检查使用 RayCluster 资源创建的 Workload 资源的状态。status.conditions.message 字段提供暂停状态的原因,如下例所示:
status:
conditions:
- lastTransitionTime: '2024-05-29T13:05:09Z'
message: 'couldn''t assign flavors to pod set small-group-jobtest12: insufficient quota for nvidia.com/gpu in flavor default-flavor in ClusterQueue'
解决方案
检查是否创建了资源类别,如下所示:
- 在 OpenShift 控制台中,从 Project 列表中选择用户的项目。
-
点 Home
Search,然后从 Resources 列表中选择 ResourceFlavor。 - 如有必要,创建资源类别。
- 检查用户代码中的集群队列配置,以确保它们请求的资源在为项目定义的限值内。
- 如有必要,增加资源配额。
有关配置资源类型和配额的详情,请参考为分布式工作负载配置配额管理。
9.5.2. 用户的 Ray 集群处于失败状态 复制链接链接已复制到粘贴板!
问题
用户可能没有足够的资源。
诊断
用户的 Ray 集群 head pod 或 worker pod 没有运行。创建 Ray 集群时,它最初会进入 失败状态。这个失败状态通常在协调过程完成并且 Ray 集群 pod 正在运行后解决。
解决方案
如果失败的状态仍然存在,请完成以下步骤:
- 在 OpenShift 控制台中,从 Project 列表中选择用户的项目。
-
点 Workloads
Pods。 - 单击用户的 Pod 名称,以打开 Pod 详情页面。
- 点 Events 选项卡,并查看 pod 事件以确定问题的原因。
-
检查使用
RayCluster资源创建的Workload资源的状态。status.conditions.message字段提供失败状态的原因。
问题
用户运行 cluster.apply () 命令后,会显示以下错误:
ApiException: (500)
Reason: Internal Server Error
HTTP response body: {"kind":"Status","apiVersion":"v1","metadata":{},"status":"Failure","message":"Internal error occurred: failed calling webhook \"mraycluster.ray.openshift.ai\": failed to call webhook: Post \"https://codeflare-operator-webhook-service.redhat-ods-applications.svc:443/mutate-ray-io-v1-raycluster?timeout=10s\": no endpoints available for service \"codeflare-operator-webhook-service\"","reason":"InternalError","details":{"causes":[{"message":"failed calling webhook \"mraycluster.ray.openshift.ai\": failed to call webhook: Post \"https://codeflare-operator-webhook-service.redhat-ods-applications.svc:443/mutate-ray-io-v1-raycluster?timeout=10s\": no endpoints available for service \"codeflare-operator-webhook-service\""}]},"code":500}
诊断
CodeFlare Operator pod 可能没有运行。
解决方案
- 在 OpenShift 控制台中,从 Project 列表中选择用户的项目。
-
点 Workloads
Pods。 - 验证 CodeFlare Operator pod 是否正在运行。如有必要,重启 CodeFlare Operator pod。
查看 CodeFlare Operator pod 的日志,以验证 webhook 服务器是否服务,如下例所示:
INFO controller-runtime.webhook Serving webhook server {"host": "", "port": 9443}
9.5.4. 用户的 Ray 集群没有启动 复制链接链接已复制到粘贴板!
问题
用户运行 cluster.apply () 命令后,当运行 cluster.details () 命令或 cluster.status () 命令时,Ray 集群状态会保留为 Starting,而不是更改为 Ready。没有创建 pod。
诊断
检查使用 RayCluster 资源创建的 Workload 资源的状态。status.conditions.message 字段提供处于 Starting 状态的原因。同样,检查 RayCluster 资源的 status.conditions.message 字段。
解决方案
- 在 OpenShift 控制台中,从 Project 列表中选择用户的项目。
-
点 Workloads
Pods。 - 验证 KubeRay pod 是否正在运行。如有必要,重启 KubeRay pod。
- 查看 KubeRay pod 的日志以识别错误。
9.5.5. 用户不能创建 Ray 集群或提交作业 复制链接链接已复制到粘贴板!
问题
用户运行 cluster.apply () 命令后,会显示类似以下文本的错误:
RuntimeError: Failed to get RayCluster CustomResourceDefinition: (403)
Reason: Forbidden
HTTP response body: {"kind":"Status","apiVersion":"v1","metadata":{},"status":"Failure","message":"rayclusters.ray.io is forbidden: User \"system:serviceaccount:regularuser-project:regularuser-workbench\" cannot list resource \"rayclusters\" in API group \"ray.io\" in the namespace \"regularuser-project\"","reason":"Forbidden","details":{"group":"ray.io","kind":"rayclusters"},"code":403}
诊断
用户笔记本代码的 TokenAuthentication 部分中没有指定正确的 OpenShift 登录凭证。
解决方案
建议用户识别并指定正确的 OpenShift 登录凭证,如下所示:
- 在 OpenShift 控制台标头中,单击您的用户名,再单击 Copy login command。
- 在打开的新标签页中,以您要使用的凭据的用户身份登录。
- 单击 Display Token。
-
从 带有此令牌部分的 Log in 中,复制
token和server值。 在笔记本代码中指定复制的
令牌和服务器值,如下所示:auth = TokenAuthentication( token = "<token>", server = "<server>", skip_tls=False ) auth.login()
-
验证用户具有正确的权限,并且是
rhods-users组的一部分。