KubeRay 可观测性#

Ray 仪表盘#

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

运行此命令后,检查事件以及自定义资源状态中的 stateconditions,以查找任何错误和进度。

RayCluster .Status.State#

.Status.State 字段,目前代表集群的情况,由于其表示能力有限,未来将被弃用。请改用新的 Status.Conditions

状态

描述

准备

KubeRay 在集群中的所有 Pod 都准备就绪后,将状态设置为 ReadyState 保持 Ready 状态,直到 KubeRay 暂停集群。

暂停

当 KubeRay 将 Spec.Suspend 设置为 true 并删除集群中的所有 Pod 时,它会将状态设置为 Suspended

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 都准备就绪,此条件将被设置为 True,并且即使某些 Pod 稍后失败,此条件仍保持 True

RayClusterPodsProvisioning

RayClusterReplicaFailure

删除所有Pod失败

当出现协调错误时,KubeRay 将此条件设置为 True,否则 KubeRay 将清除该条件。

删除头节点失败

查看条件的 ReasonMessage 以获取更详细的调试信息。

创建头Pod失败

FailedDeleteWorkerPod

创建工作Pod失败

HeadPodReady

此条件仅在 HeadPod 当前准备就绪时为 True;否则为 False

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