You need to enable JavaScript to run this app.
导航
RayCluster 挂载 PersistentVolumeClaim
最近更新时间:2025.05.21 19:15:48首次发布时间:2025.05.21 19:15:48
我的收藏
有用
有用
无用
无用

功能简介

EMR on VKE 支持对 RayCluster 挂载 PersistentVolumeClaim。

前提条件

  1. 已创建包含 Ray 服务的 EMR on VKE 集群。
  2. 需要在 VKE 集群中已经创建好相应的存储卷,详细操作请参考:创建存储卷

通过控制台创建

创建 RayCluster 时绑定 PersistentVolumeClaim。

通过表单添加

  1. 登录 EMR 控制台
  2. 服务列表界面,单击 Ray,进入到 Ray 的服务详情界面。
  3. 单击添加 RayCluster 按钮,选择通过表单添加
  1. 在需要挂载 PVC 的组,单击对应的存储配置下的设置按钮。
  1. 在弹出的存储配置页面中,单击打开存储配置选项。
  1. 添加卷这一行选择对应的存储卷声明,输入自定义的添加卷名称。
  2. 挂载卷这一行选择上一步输入的卷名称,配置挂载路径和读写权限。
  3. 单击确定,完成配置。

通过 YAML 添加

  1. 登录 EMR 控制台
  2. 服务列表界面,单击 Ray 服务,进入到 Ray 的服务详情界面。
  3. 单击添加 RayCluster 按钮,选择通过 YAML 添加
  4. 手动在 YAML 中添加 volumes 和 volumeMount 相关配置。
  5. 单击确定,完成配置。

YAML 改动部分示例:

apiVersion: ray.io/v1alpha1
kind: RayCluster
metadata:
  name: example-raycluster
spec:
  headGroupSpec:
    template:
      spec:
        containers:
        - name: ray-head
          volumeMounts:
          - mountPath: /mnt/data
            name: head-v
        volumes:
        - name: head-v
          persistentVolumeClaim:
            claimName: head-pvc
  workerGroupSpecs:
  - groupName: worker-group
    template:
      spec:
        containers:
        - volumeMounts:
          - mountPath: /mnt/data
            name: worker-v
        volumes:
        - name: worker-v
          persistentVolumeClaim:
            claimName: worker-pvc

通过OpenAPI创建

使用 AddComponentInstance,示例:

{
    "ApplicationName": "Ray",
    "ComponentName": "RayCluster",
    "InstanceName": "rayclusterName",
    "ClusterId": "emr-xxx",
    "ApplicationConfigs": [
        {
            "ConfigFileName": "raycluster-values.yaml",
            "ConfigItemKey": "replicas",
            "ConfigItemValue": "1",
            "ComponentName": "RayCluster",
            "UnitType": "headgroup",
            "UnitInstanceName": "headgroup"
        },
        {
            "ConfigFileName": "raycluster-values.yaml",
            "ConfigItemKey": "head_cpu",
            "ConfigItemValue": "1",
            "ComponentName": "RayCluster",
            "UnitType": "headgroup",
            "UnitInstanceName": "headgroup"
        },
        {
            "ConfigFileName": "raycluster-values.yaml",
            "ConfigItemKey": "head_memory",
            "ConfigItemValue": "2Gi",
            "ComponentName": "RayCluster",
            "UnitType": "headgroup",
            "UnitInstanceName": "headgroup"
        },
        {
            "ConfigFileName": "raycluster-values.yaml",
            "ConfigItemKey": "head_volumes",
            "ConfigItemValue": "[{\"name\":\"core-site-volume\",\"configMap\":{\"defaultMode\":420,\"name\":\"ray-cluster-core-site\"}},{\"name\":\"head\",\"persistentVolumeClaim\":{\"claimName\":\"testpvc\"}}]",
            "ComponentName": "RayCluster",
            "UnitType": "headgroup",
            "UnitInstanceName": "headgroup"
        },
        {
            "ConfigFileName": "raycluster-values.yaml",
            "ConfigItemKey": "head_volumeMounts",
            "ConfigItemValue": "[{\"mountPath\":\"/opt/hadoop/etc/hadoop\",\"name\":\"core-site-volume\"},{\"name\":\"head\",\"mountPath\":\"/opt/head\",\"readOnly\":false}]",
            "ComponentName": "RayCluster",
            "UnitType": "headgroup",
            "UnitInstanceName": "headgroup"
        },
        {
            "ConfigFileName": "raycluster-values.yaml",
            "ConfigItemKey": "replicas",
            "ConfigItemValue": "1",
            "ComponentName": "RayCluster",
            "UnitType": "workergroup",
            "UnitInstanceName": "workgroup"
        },
        {
            "ConfigFileName": "raycluster-values.yaml",
            "ConfigItemKey": "worker_cpu",
            "ConfigItemValue": "1",
            "ComponentName": "RayCluster",
            "UnitType": "workergroup",
            "UnitInstanceName": "workgroup"
        },
        {
            "ConfigFileName": "raycluster-values.yaml",
            "ConfigItemKey": "worker_gpu",
            "ConfigItemValue": "0",
            "ComponentName": "RayCluster",
            "UnitType": "workergroup",
            "UnitInstanceName": "workgroup"
        },
        {
            "ConfigFileName": "raycluster-values.yaml",
            "ConfigItemKey": "worker_memory",
            "ConfigItemValue": "1Gi",
            "ComponentName": "RayCluster",
            "UnitType": "workergroup",
            "UnitInstanceName": "workgroup"
        },
        {
            "ConfigFileName": "raycluster-values.yaml",
            "ConfigItemKey": "worker_volumes",
            "ConfigItemValue": "[{\"name\":\"core-site-volume\",\"configMap\":{\"defaultMode\":420,\"name\":\"ray-cluster-core-site\"}},{\"name\":\"worker\",\"persistentVolumeClaim\":{\"claimName\":\"testpvc\"}}]",
            "ComponentName": "RayCluster",
            "UnitType": "workergroup",
            "UnitInstanceName": "workgroup"
        },
        {
            "ConfigFileName": "raycluster-values.yaml",
            "ConfigItemKey": "worker_volumeMounts",
            "ConfigItemValue": "[{\"mountPath\":\"/opt/hadoop/etc/hadoop\",\"name\":\"core-site-volume\"},{\"name\":\"worker\",\"mountPath\":\"/opt/worker\",\"readOnly\":false}]",
            "ComponentName": "RayCluster",
            "UnitType": "workergroup",
            "UnitInstanceName": "workgroup"
        },
        {
            "ComponentName": "RayCluster",
            "ConfigFileName": "raycluster-values.yaml",
            "ConfigItemKey": "repository_url",
            "ConfigItemValue": "xxx"
        },
        {
            "ComponentName": "RayCluster",
            "ConfigFileName": "raycluster-values.yaml",
            "ConfigItemKey": "repository_tag",
            "ConfigItemValue": "xxx"
        }
    ]
}

提交 RayJob 时手动指定

  1. 火山引擎 E-MapReduce 控制台,点击作业管理 > 作业列表 > 创建作业
  2. 创建作业页面,作业类型选择 Ray Job,并选择对应集群。
  3. 开启存储配置,并选择对应存储卷。
  • 添加卷:选择已有存储卷,并对其命名。
  • 挂载卷:将卷挂载到 pod 中指定路径,并指定相应读写权限。

    说明

    • 可以添加多个卷,并对其进行挂载。
    • 云盘为火山存储团队提供的非共享存储,只能同时被一个 Pod 挂载,仅支持 ReadWriteOnce 使用模式。
  1. 单击创建,完成挂载。