在ACK中安装KubeRay组件

更新时间:
复制 MD 格式

本文将指导您在ACK托管集群Pro版上部署KubeRay Operator组件,并集成阿里云日志服务SLS与Prometheus监控,从而增强日志管理、系统可观测性及高可用性。通过Kubernetes自定义资源(CR),您可管理Ray集群与应用。

前提条件

  • 已创建ACK托管集群Pro版,请参见 创建ACK托管集群。

    • 集群版本:v1.24及以上。如需升级集群版本,请参见手动升级集群。

    • 节点规格:集群中至少包含一台8 CPU 32 GiB 内存规格及以上的节点。关于ECS支持的实例规格,请参见实例规格族。。

      说明

      本示例推荐的节点规格仅适用于测试环境。生产环境中需以实际情况为准,如需使用GPU节点,请在集群中配置GPU节点。

  • 已通过kubectl连接Kubernetes集群,且已在本地安装kubectl。具体操作,请参见获取集群KubeConfig并通过kubectl工具连接集群。

安装KubeRay组件

登录容器服务管理控制台,在左侧导航栏选择集群列表。单击目标集群名称,进入集群详情页面,依次单击运维管理 > 组件管理 > 应用管理 > 点击安装Kuberay-Operator,为目标集群安装Kuberay-Operator组件。

KubeRay启用日志功能

  1. 进入对应集群,依次单击运维管理 > 日志中心 > 控制面组件日志 > 开启组件日志。image.png

  2. 在下拉菜单中,选择kuberay-operator。

    image.png

Ray集群日志持久化存储

您可以将阿里云日志服务SLS与Ray集群集成,实现Ray集群内日志的持久化存储。

  1. 创建一个全局的AliyunLogConfig资源对象,使集群中的Logtail组件自动收集Ray集群的Pod产生的日志,并将其存入对应的SLS Project中。

    展开查看完整命令代码

    cat <<EOF | kubectl apply -f -
    apiVersion: log.alibabacloud.com/v1alpha1
    kind: AliyunLogConfig
    metadata:
      name: rayclusters
      namespace: kube-system
    spec:
       # 设置Logstore名称。如果您所指定的Logstore不存在,日志服务会自动创建。
      logstore: rayclusters
      # 设置Logtail配置。
      logtailConfig:
        # 设置采集的数据源类型。采集文本日志时,需设置为file。
        inputType: file
        # 设置Logtail配置的名称,必须与资源名(metadata.name)相同。
        configName: rayclusters
        inputDetail:
          # 指定通过极简模式采集文本日志。
          logType: common_reg_log
          # 设置日志文件所在路径。
          logPath: /tmp/ray/session_*-*-*_*/logs
          # 设置日志文件的名称。支持通配符星号(*)和半角问号(?),例如log_*.log。
          filePattern: "*.*"
          # 采集容器的文本日志时,需设置dockerFile为true。
          dockerFile: true
          #设置容器过滤条件。
          advanced:
            k8s:
              IncludeK8sLabel:
                ray.io/is-ray-node: "yes"
              ExternalK8sLabelTag:
                ray.io/cluster: "_raycluster_name_"
                ray.io/node-type: "_node_type_"
    EOF

    参数

    描述

    logPath

    收集Pod中/tmp/ray/session_*-*-*_*/logs目录下的所有日志,可自定义路径。

    advanced.k8s.ExternalK8sLabelTag

    在收集的日志中增加Tag索引,便于查找日志。默认新增_raycluster_name_和_node_type_两个Tag。

    关于AliyunLogConfig参数配置的更多信息,请参见通过DaemonSet-CRD方式采集容器日志。日志服务SLS收费,具体费用,请参见计费概述。

  2. 按以下流程查看Ray Cluster日志信息。

    登录容器服务管理控制台,在左侧导航栏选择集群列表。单击目标集群名称,进入集群详情页面,依次单击集群信息 > 基本信息 > 集群资源,单击日志服务 Project右侧的链接进入对应的SLS Project。

  3. 在Project中选择rayclusters对应的Logstore并查看日志内容。

    您可以根据Tag,例如_raycluster_name_,查看从不同Ray集群中收集的日志。

    以下为两个Ray集群的GCS调试日志示例,通过_raycluster_name_标签区分不同集群标签区分不同集群:

    1  02-23 16:37:54
    __tag__:__user_defined_id__: k8s-group-c96fe15xxx
    __tag__:__cluster_id__: c96fe15xxx
    __tag__:__container_ip__: 192.xxx.0.63
    __tag__:__container_name__: ray-head
    __tag__:__image_name__: docker.io/rayproject/ray:2.7.0
    __tag__:__namespace__: raycluster
    __tag__:__node_ip__: 192.xxx.xxx.58
    __tag__:__node_name__: cn-hangzhou.192.xxx.xxx.58
    __tag__:__pod_name__: myfirst-ray-cluster-head-wpnld
    __tag__:__pod_uid__: 6235fabd-xxx-xxx-15b699
    __tag__:_raycluster_name_: myfirst-ray-cluster
    content:      NodeInfoGcsService.grpc_server.RegisterNode - 1 total (0 active), CPU time: mean = 94.638 us, total = 94.638 us
    
    2  02-23 16:37:52
    __tag__:__user_defined_id__: k8s-group-c96fe15xxx
    __tag__:__cluster_id__: c96fe15xxx
    __tag__:__container_ip__: 192.xxx.0.74
    __tag__:__container_name__: ray-head
    __tag__:__image_name__: docker.io/rayproject/ray:2.7.0
    __tag__:__namespace__: default
    __tag__:__node_ip__: 192.xxx.xxx.58
    __tag__:__node_name__: cn-hangzhou.192.xxx.xxx.58
    __tag__:__pod_name__: mysecond-ray-cluster-head-hfg77
    __tag__:__pod_uid__: xxx-xxx-xxx-df672
    __tag__:_raycluster_name_: mysecond-ray-cluster
    content:      GcsHealthCheckManager::AddNode - 1 total (0 active), CPU time: mean = 8.978 us, total = 8.978 us

启用监控功能

您可以将Ray集群与可观测监控 Prometheus 版集成,开启Ray集群监控功能。关于Prometheus监控功能的更多信息,请参见接入与配置阿里云Prometheus监控。相关计费信息,请参见Prometheus 实例计费。

KubeRay组件安装后,通过云监控 2.0 接入即可使用预置大盘,无需手动配置数据源和监控面板。

步骤一:接入云监控 2.0 大盘

  1. 登录云监控2.0控制台,选择目标工作空间,在左侧导航栏单击接入中心。

  2. 搜索Ray,选择ACK Ray 可观测。

  3. 选择目标集群,并在接入配置 - 选择接入 选择框中选择要接入的监控服务类型,监控服务类型包括:

    1. Ray集群:收集目标集群中各个Ray Cluster暴露的指标,并在预置监控大盘上展示。

    2. ACK KubeRay:收集ACK KubeRay控制器暴露的指标,并在预置监控大盘上展示。

  4. 完成接入向导。

步骤二:查看 ACK Ray 监控大盘

  1. 在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择运维管理 > Prometheus 监控。

  2. 在AI/大数据分类下找到 Ray 集群视角监控页签(对应于Ray集群监控服务类型)和 KubeRay Operator 页签(对应于ACK KubeRay监控服务类型)。

    1. Ray 集群视角监控大盘:在大盘中选择Cluster、SessionName、Pod和RayNodeType进行过滤,查看对应的 Ray Cluster 运行状态。

      image

    2. KubeRay Operator大盘:在大盘中选择Controller、ControllerPod、namespace进行过滤,查看KubeRay控制器的运行状态。

      image