KubeRay 可观测性#
Ray 仪表盘#
要将 Ray 仪表板与 Prometheus 和 Grafana 集成,请参阅 使用 Prometheus 和 Grafana 了解更多详情。
要启用“CPU 火焰图”和“堆栈跟踪”功能,请参阅 使用 py-spy 进行性能分析。
KubeRay 可观测性#
方法1和方法2解决控制平面的可观测性问题,而方法3、方法4和方法5则专注于数据平面的可观测性。
方法1:检查 KubeRay 操作符的日志以查找错误#
# Typically, the operator's Pod name is kuberay-operator-xxxxxxxxxx-yyyyy.
kubectl logs $KUBERAY_OPERATOR_POD -n $YOUR_NAMESPACE | tee operator-log
使用此命令将操作员的日志重定向到一个名为 operator-log
的文件。然后在文件中搜索错误。
方法2:检查自定义资源的状态和事件#
kubectl describe [raycluster|rayjob|rayservice] $CUSTOM_RESOURCE_NAME -n $YOUR_NAMESPACE
运行此命令后,检查事件以及自定义资源状态中的 state
和 conditions
,以查找任何错误和进度。
RayCluster .Status.State
#
.Status.State
字段,目前代表集群的情况,由于其表示能力有限,未来将被弃用。请改用新的 Status.Conditions
。
状态 |
描述 |
---|---|
准备 |
KubeRay 在集群中的所有 Pod 都准备就绪后,将状态设置为 |
暂停 |
当 KubeRay 将 |
RayCluster .Status.Conditions
#
尽管 Status.State
可以表示集群状况,但它仍然只是一个单一字段。通过在 KubeRay v1.2.1 上启用功能门 RayClusterStatusConditions
,您可以访问新的 Status.Conditions
,以获取更详细的集群历史和状态。
警告
RayClusterStatusConditions
仍然是一个 alpha 功能,未来可能会发生变化。
如果你通过 Helm 部署了 KubeRay,那么在你的 Helm 值的 featureGates
中启用 RayClusterStatusConditions
门控。
helm upgrade kuberay-operator kuberay/kuberay-operator --version 1.2.1 \
--set featureGates\[0\].name=RayClusterStatusConditions \
--set featureGates\[0\].enabled=true
或者,只需使用 --feature-gates=RayClusterStatusConditions=true
参数运行您的 KubeRay Operator 可执行文件。
类型 |
状态 |
原因 |
描述 |
---|---|---|---|
RayClusterProvisioned |
真 |
AllPodRunningAndReadyFirstTime |
一旦集群中的所有 Pod 都准备就绪,此条件将被设置为 |
假 |
RayClusterPodsProvisioning |
||
RayClusterReplicaFailure |
真 |
删除所有Pod失败 |
当出现协调错误时,KubeRay 将此条件设置为 |
真 |
删除头节点失败 |
查看条件的 |
|
真 |
创建头Pod失败 |
||
真 |
FailedDeleteWorkerPod |
||
真 |
创建工作Pod失败 |
||
HeadPodReady |
真 |
此条件仅在 HeadPod 当前准备就绪时为 |
|
假 |
HeadPodNotFound |
方法3:检查 Ray Pods 的日志#
通过访问Pod上的日志文件,直接检查Ray日志。更多详情请参见Ray日志配置。
kubectl exec -it $RAY_POD -n $YOUR_NAMESPACE -- bash
# Check the logs under /tmp/ray/session_latest/logs/
方法4:检查仪表板#
export HEAD_POD=$(kubectl get pods --selector=ray.io/node-type=head -o custom-columns=POD:metadata.name --no-headers)
kubectl port-forward $RAY_POD -n $YOUR_NAMESPACE 8265:8265
# Check $YOUR_IP:8265 in your browser to access the dashboard.
# For most cases, 127.0.0.1:8265 or localhost:8265 should work.
方法 5:Ray State CLI#
你可以在头节点上使用 Ray State CLI 来检查 Ray Serve 应用程序的状态。
# Log into the head Pod
export HEAD_POD=$(kubectl get pods --selector=ray.io/node-type=head -o custom-columns=POD:metadata.name --no-headers)
kubectl exec -it $HEAD_POD -- ray summary actors
# [Example output]:
# ======== Actors Summary: 2023-07-11 17:58:24.625032 ========
# Stats:
# ------------------------------------
# total_actors: 14
# Table (group by class):
# ------------------------------------
# CLASS_NAME STATE_COUNTS
# 0 ... ALIVE: 1
# 1 ... ALIVE: 1
# 2 ... ALIVE: 3
# 3 ... ALIVE: 1
# 4 ... ALIVE: 1
# 5 ... ALIVE: 1
# 6 ... ALIVE: 1
# 7 ... ALIVE: 1
# 8 ... ALIVE: 1
# 9 ... ALIVE: 1
# 10 ... ALIVE: 1
# 11 ... ALIVE: 1