1. 概述
1.1 文档目的
本文介绍如何在腾讯云上完成 EMR Ray on TKE 的账号授权、基础资源准备、EMR on TKE 后训练与仿真实例创建、RayCluster 创建及功能验证。
完成本文操作后,用户将获得:
1. 一个运行中的 EMR on TKE 实例。
2. 已部署的 Ray/TCRay 服务。
3. 一个包含 Head 节点和 Worker 节点的 RayCluster。
4. 可通过控制台监控、Ray WebUI 或 Head Pod 提交任务的分布式 Ray 运行环境。
1.2 产品说明
EMR on TKE 是基于腾讯云容器服务 TKE 和开源计算引擎构建的容器化数据与 AI 计算平台,可使用 TKE 标准集群、TKE Serverless 集群或 EMR 配套计算资源承载服务 Pod。平台通过 EMR 控制台提供服务部署、配置管理、监控告警和运维管理能力。
Ray on TKE 采用两层资源结构:
EMR on TKE 实例:负责部署和管理 Ray/TCRay、KubeRay 等平台服务。
RayCluster:在 EMR on TKE 实例中创建的实际 Ray 计算集群,由 Head Group 和一个或多个 Worker Group 组成。
2. 整体开通流程
EMR Ray on TKE 的开通流程如下:
腾讯云账号与实名认证
EMR 服务角色授权
准备 TKE、网络和存储资源
创建 EMR on TKE 后训练与仿真实例
部署 Ray/TCRay 服务
创建 RayCluster
运行测试任务

3. 前置准备
3.1 账号要求
开通前应完成以下准备:
已注册腾讯云账号并完成实名认证。
账号余额充足。
已确认资源所属地域、项目和费用承担主体。
使用主账号,或具备相应 EMR、TKE、VPC、COS、CFS、CAM 等资源管理权限的子账号操作。
3.2 服务角色授权
3.2.1 EMR 默认服务角色
EMR_QCSRole:该角色用于允许 EMR 调用 TKE、COS 等腾讯云服务,完成集群创建和日志保存。
操作步骤:
1. 使用腾讯云主账号登录 EMR 控制台。
2. 进入 EMR on TKE 集群列表或创建集群页面。当控制台显示服务授权提示时,单击“前往访问管理”。
3. 在访问管理页面单击“同意授权”。
4. 授权完成后,刷新 EMR 控制台或购买页面。
3.3 开通信息确认
建议在创建前确认以下信息:
配置分类 | 需要确认的信息 |
地域 | EMR、TKE、VPC、COS、CFS 等资源所在地域 |
容器资源 | 使用已有 TKE、TKE Serverless,或新购 EMR 计算资源 |
网络 | VPC、子网、路由、NAT 网关及 DNS 配置 |
安全 | 安全组、访问来源、是否允许公网访问 |
计算资源 | CPU、内存、GPU 型号和数量 |
Ray 架构 | Head Group 和 Worker Group 的数量、规格及伸缩范围 |
存储 | COS Bucket、CFS 文件系统、挂载目录 |
镜像 | 使用官方镜像、自定义镜像、镜像地址 |
权限 | 操作账号、EMR 服务角色和 COS 访问角色 |
运维 | 告警接收人、资源标签、成本归属和销毁策略 |
4. 准备 TKE 与网络资源
4.1 选择容器资源类型
EMR on TKE 支持以下容器资源:
EMR 资源(推荐):EMR 资源是通过 EMR on TKE 联动购买的容器资源,为 EMR on TKE 实例提供容器资源,支持多个 EMR on TKE 实例关联使用。EMR 资源仅收取节点资源费用不额外增收服务费用。适合需要节点规格、GPU 节点、调度策略、网络配置等生产场景。
TKE 标准集群:适合需要管理节点规格、GPU 节点、节点池、调度策略和网络配置的生产场景。
4.2 地域与网络要求
EMR on TKE 创建完成后不能修改地域。
只有同地域的容器集群可以为该 EMR on TKE 实例提供资源。
EMR、TKE、数据库和依赖服务应使用相互连通的 VPC。
如果创建过程中涉及数据库或其他内网服务,应选择与容器集群网络一致的 VPC 和子网。
如 Ray 作业需要访问公网模型仓库、Python 软件源或外部 API,应提前配置 NAT 网关、路由和出口安全策略。
上述地域及网络限制以 EMR on TKE 创建页面的实际校验结果为准。
4.3 GPU 场景准备(如有)
如 RayCluster 需要使用 GPU,应提前完成:
在 TKE 集群中准备可用 GPU 节点(如有需要特殊卡型而显示库存不足,可提前联系架构师协调资源申请)。
确认 GPU 驱动和容器运行时正常。
确认 GPU 节点具有正确的 Kubernetes Label。
规划 Worker Group 的 GPU 数量。
必要时配置节点选择器、Tolerations 或节点调度策略,使 GPU Worker Pod 调度到指定节点池。
确认所用镜像中的 CUDA、Python、Ray 和深度学习框架版本兼容。
5. 创建 EMR on TKE 实例
5.1 进入创建页面
1. 登录腾讯云 EMR 控制台。
2. 进入 EMR on TKE 集群列表。
3. 单击创建实例。

5.2 资源配置
1. 单击创建实例后跳转至 资源配置,根据您的需要选择 地域。

2. 容器类型:首次使用可单击 EMR 资源进行新建。

3. 根据您的需要选择【计费模式】,并确认是否勾选【自动续费】。

4. 首次使用需要配置【EMR 资源网络】,您可单击 新建网络,进行配置。配置参考文档:私有网络 > 产品概述。

5. 容器网络插件:
Global Router:是腾讯云 TKE 基于 VPC 路由实现的容器网络插件,可设置独立平行于 VPC 的容器网段。
VPC-CNI 模式:是腾讯云 TKE 基于弹性网卡实现的容器网络插件,容器网络与云主机网络在同一个 VPC 内。
建议选择 VPC-CNI,只有在 VPC IP 地址非常紧张、节点不支持 ENI,或者业务非常简单且不需要 VPC 原生能力 时,再考虑 Global Router。


6. EMR 资源外网:如您需要外网登录 SSH,可单击勾选【开启 EMR 资源节点外网】,注意:EMR 资源创建成功暂不可更改,开启公网 IP 用于组件 WebUI 访问,开启后将增加安全组端口入侵风险,请谨慎选择开启。

7. 安全组配置:
如您之前已创建过安全组,可单击选择已有安全组。
如您之前未创建过安全组,可单击创建默认安全组,后台将为您自动创建默认安全组。

8. 节点配置。
单击修改,根据您的数据处理规模与需要选择机型、规格、磁盘大小与节点数量。


9. 高级配置:您可以设置 Labels、Taints 与自定义脚本,如暂不需要,此步骤非必填项。
10. 基础配置:完成以上配置后,设置 EMR 资源的相关基本信息后,注意请妥善保管好您的密码或密钥,完成后单击确认配置。

11. 新建 EMR 资源完成后,后台将自动定位当前创建的计算资源并读取相关网络、安全组等配置。


5.3 应用场景
在完成资源配置后,单击下一步来到应用场景,选择【后训练与仿真】场景以及【EMR-TKE-RL-V1.0.0】的产品版本。
【常驻服务】中建议均部署 jupyterlab、eg、mlflow、tcray,单击按钮开关,进行部署。

云数据 MySQL:开启 MLFLOW 将自动创建云数据 MySQL。
审计服务:若您需要开通审计服务,注意:审计类型默认全审计,日志保存时长30天,高频存储时长7天,若需调整审计规则和日志保存时长可在 MetaDB 创建成功后前往云数据库控制台调整。开通审计服务需要单独计费,计费标准请参见 SQL 洞察(原数据库审计)计费说明。

全局镜像配置:当前新建 EMR 资源暂不支持对常驻服务部署组件-镜像进行修改。

若您已有创建的计算资源,并对常驻服务部署组件有自定义镜像需求,可单击全局镜像配置进行设置,否则后台默认安装基础官方镜像。


自定义镜像:需用户在 镜像仓库 中提前上传。

镜像地址:支持 DockerHub、基于 JFrog Artifactory 搭建的或其它支持公网访问的自建镜像仓库。

全局访问配置:为了更好使用 jupyterlab 进行模型训练、使用 MLFLOW 查看模型训练过程效果(即使用相关服务的 WebUI),建议开启访问配置。如图单击全局访问配置。

您可按需要开启相关服务的【外部访问】,也可以直接单击一键开启。

默认开启公网,您可按照需要开启内网子网。


此外,为了代理 K8S 中计算服务(Spark/Ray)的外网访问,建议开启【计算服务外网访问】开启后将创建一个外网 LB。完成后单击下一步。

5.4 基本配置
选择应用场景后进入基本配置,填写【所属项目、密码、COS 桶、标签】等配置。注意:
此处 COS 桶:用于存储 EMR on TKE 实例的日志、jar 包等信息,建议采用独立 COS 桶,与业务 COS 桶进行区分。如果现有对象存储不合适,您可以去控制台修改。
标签:当前标签为实例维度标签,可基于标签鉴权和标签分账;标签是一个键-值对(Key-Value),您可以通过对云服务器设置标签实现资源的分类管理。通过标签,可以非常方便筛选过滤出对应的资源,进行操作。如现有标签/标签值不符合您的要求,可以去控制台登录 - 腾讯云。单击下一步,确认配置

5.5 确认配置
1. 完成上述配置后,检查所有配置项。

2. 确认无误后,勾选同意协议条款,单击提交即可进行实例创建。

3. 提交创建后,您可以在控制实例查看创建状态。

4. 创建完成后,可在控制台实例列表查看相应的创建流程,或单击任务中心查看。

6. 创建 RayCluster
6.1 进入 RayCluster 页面
1. 在 EMR on TKE 集群列表中找到已创建的后训练与仿真实例。
2. 单击实例 ID 或实例名称进入详情页。
3. 在二级菜单中选择 RayCluster。
4. 单击表单创建。
控制台同时支持表单和 YAML 两种创建方式。首次开通或功能验证建议使用表单方式;熟悉 Kubernetes 和 KubeRay 配置后,可使用 YAML 方式进行精细化配置。

6.2 基础配置
配置以下参数:
RayCluster 名称:按照控制台命名规则填写。官方文档当前说明名称长度为 1~53 个字符,并使用小写字母。
命名空间:一般选择 KubeRay 所在的默认命名空间;需要环境隔离时,可选择预先规划的独立命名空间。

6.3 镜像配置
官方镜像:没有特殊依赖时可直接使用平台默认官方镜像,单击【请选择】。

您可根据您的训练需要,选择 Ray、Xpark 等相关官方镜像。

需要安装特定版本的 Python 或 Ray。
需要预装 PyTorch、TensorFlow、Transformers 等依赖。
需要使用企业内部 Python 包。
需要预装模型、驱动或数据处理工具。
需要满足企业镜像安全扫描和供应链管控要求。

镜像地址:支持 DockerHub、基于 JFrog Artifactory 搭建的或其它支持公网访问的自建镜像仓库。

6.4 高可用
高可用:默认开启,生产环境建议保持开启。

6.5 资源组配置-Head Group 配置
每个 RayCluster 默认包含一个 Head Group。
主要配置项包括:
CPU。
内存。
GPU,按需配置。
Pod 数量。
Labels 和容忍调度。
环境变量 Env。
节点调度策略。
资源标签。
Head 节点承担 Ray 集群控制、调度和 WebUI 等职责。生产环境应避免将业务任务占满 Head 节点资源,并预留必要的 CPU 和内存。


高级配置中的前置命令和自定义 RayStartParams,如不需要可暂不开启。

每个 RayCluster 默认包含一个 Worker Group,可根据业务负载新增多个 Worker Group。
主要配置项包括:
Worker Group 名称。
单个 Worker Pod 的 CPU、内存和 GPU。
常驻 Pod 数量。
弹性伸缩最小值和最大值。
Labels 和 容忍调度。
环境变量。
节点调度策略。
资源标签。
可以分别创建 CPU Worker Group 和 GPU Worker Group,通过调度策略将不同工作负载分配到相应节点。单个 RayCluster 当前最多支持创建 20 个 Worker Group。

6.6 资源组通用配置
当作业需要使用持久化数据时,可开启资源组通用配置并关联:
COS:适合对象数据、数据集、日志和结果文件。
CFS:适合共享文件、模型文件、Python 环境缓存及训练输出。
CFS Turbo:适合对吞吐量、IOPS 和低时延要求较高的大规模训练、模型加载及高性能计算场景。
GooseFS(需要开白申请):适合通过分布式缓存加速 COS 等远端存储的数据访问,减少重复读取并提升训练效率。
资源组通用配置会应用到全部 Worker Group。使用存储挂载前,应确认目录权限、网络连通性和对应 CAM 角色权限。


6.7 高级配置
外部组件依赖
如 Ray 作业需要使用其他 EMR 集群中的组件,可配置外部组件依赖。
需要注意:当前 RayCluster 依赖其他集群的服务时,提供依赖服务的集群不能直接销毁,应先解除依赖或销毁依赖方资源。
Token 鉴权
建议开启 Token 鉴权。开启后,访问 RayCluster 时需要使用系统生成的 Token。Token 鉴权只能在创建 RayCluster 时设置,创建完成后不支持修改开启或关闭状态,因此生产环境应在首次创建时启用。

6.8 提交创建
1. 核对 Head Group、Worker Group、镜像、存储和鉴权配置。
2. 阅读并勾选相关协议。
3. 单击“确定”提交任务。
4. 在页面右上角“任务中心”查看创建进度。
5. 等待 RayCluster 状态变为运行中。



6.9 查看 RayCluster 详情
您可通过单击 RayCluster 名称来查看 RayCluster 详情。


7. 开通结果验证
7.1 控制台状态验证
确认以下状态正常:
EMR on TKE 实例状态为“运行中”。
Ray/TCRay 服务状态正常。
RayCluster 状态为“运行中”。
Head Pod 和 Worker Pod 均处于 Running 状态。
Worker Pod 数量符合常驻 Pod 或最小副本数配置。

7.2 监控与 WebUI 验证
进入 RayCluster 详情页后:
1. 打开“监控视图”。
2. 检查 CPU、内存、GPU 和 Pod 指标。
3. 单击 WebUI。
4. 确认可以查看 Ray 节点、任务拓扑、执行日志和 Pod 运行信息。
腾讯云控制台支持查看 RayCluster 的硬件指标、软件指标、任务拓扑、日志和 Pod 运行详情。


7.3 登录 Head Pod
如需通过命令行验证:
1. 在 EMR on TKE 实例详情页找到容器集群实例 ID。
2. 单击实例 ID 进入 TKE 集群详情页。
3. 进入“工作负载”或“Pod 管理”页面。
4. 选择 RayCluster 所在命名空间。
5. 根据 RayCluster 名称找到对应的 Head Pod。
6. 单击“登录”进入容器终端 或者 WebUI。

7.4 执行 Ray 测试任务
在 Head Pod 中创建测试文件:
cat > ray_smoke_test.py <<'PY'import rayray.init(address="auto")@ray.remotedef square(number: int) -> int:return number * numberresults = ray.get([square.remote(i) for i in range(5)])print("Cluster resources:", ray.cluster_resources())print("Task results:", results)PYpython ray_smoke_test.py
8. 开通验收清单
序号 | 验收项 | 验收标准 |
1 | EMR 服务授权 | 已存在 EMR_QCSRole |
2 | COS 授权 | 已授权默认角色或绑定自定义 COS 服务角色 |
3 | EMR 实例类型 | 后训练与仿真 |
4 | 产品版本 | EMR-TKE-RL-V1.0.0 |
5 | Ray 服务 | Ray/TCRay 服务正常运行 |
6 | RayCluster 状态 | 运行中 |
7 | Pod 状态 | Head 和 Worker Pod 均为 Running |
8 | WebUI | 可以正常打开并查看节点和任务 |
9 | 测试任务 | Ray 测试脚本执行成功 |
10 | 存储访问 | 能按业务要求访问 COS 或 CFS |
11 | 安全配置 | Token、CAM 和网络访问策略符合要求 |
12 | 监控告警 | 已配置资源监控和异常通知 |
13 | 标签管理 | 已设置业务、环境、负责人和成本标签 |
14 | 回收策略 | 已明确测试资源的销毁时间和负责人 |
9. 生产环境配置建议
9.1 权限与安全
使用最小权限 CAM 策略。
COS 权限尽量限制到指定 Bucket 和目录。
开启 RayCluster Token 鉴权。
不需要公网访问时,不创建公网负载均衡。
如必须提供公网访问,只允许固定办公网或堡垒机出口 IP。
自定义镜像应经过漏洞扫描和安全审核。
密码、Token 和密钥应存放在企业密钥管理系统中,不应写入代码或镜像。
9.2 资源隔离
测试和生产 RayCluster 使用不同命名空间。
CPU 与 GPU 任务使用不同 Worker Group。
使用 Label、Toleration 和节点调度策略隔离专用节点。
为 Head 节点预留资源,避免业务任务影响控制面。
根据任务并发度设置 Worker Group 的最小和最大 Pod 数量。
9.3 稳定性
生产环境保持高可用开启。
将模型、Checkpoint 和重要结果写入 COS 或 CFS,不依赖容器临时磁盘。
配置 CPU、内存、GPU、Pod 异常和作业失败告警。变更镜像、Pod 规格或调度策略前,先停止或迁移运行中的任务。
对长时间任务设置 Checkpoint 和失败重试机制。
9.4 成本控制
测试完成后及时销毁不再使用的 RayCluster。
对 Worker Group 设置合理的最小副本数和弹性上限。
GPU Worker Group 不使用时缩容至业务允许的最低水平。
定期检查负载均衡、COS、CFS、NAT 网关和 TKE 节点等关联资源费用。
使用标签区分环境、项目、团队和成本中心。
10. 常见问题处理
10.1 创建页面无法选择目标 TKE 集群
检查:
TKE 集群和 EMR 是否位于同一地域。
当前账号是否有 TKE 集群查看和使用权限。
TKE 集群状态是否正常。
EMR 服务角色是否授权完成。
容器集群是否满足当前产品版本要求。
10.2 未显示后训练或 EMR-TKE-RL-V10.0
检查当前地域和账号的控制台可售情况。不同地域或账号看到的产品版本可能存在差异。确认配置无误后仍未展示时,可通过腾讯云工单咨询产品开通范围。
10.3 创建 RayCluster 后 Pod 一直处于 Pending
重点检查:
TKE 节点 CPU、内存或 GPU 是否充足。
Worker Pod 申请的资源是否超过单节点可分配资源。
节点 Label、Toleration 和调度策略是否匹配。
命名空间资源配额是否不足。
PVC 或 CFS 是否挂载失败。
镜像是否能够正常拉取。
GPU 节点驱动和设备插件是否正常。
10.4 COS 访问出现 AccessDenied
检查:
是否已授权 EMR_QCSLinkedRoleInApplicationDataAccess。
自定义 COS 服务角色是否包含目标 Bucket 权限。
Bucket 所属账号和地域是否正确。
策略中的 AppID、Bucket 名称和路径是否正确。
是否存在显式 Deny 策略。
10.5 WebUI 无法访问
检查:
RayCluster 是否运行正常。
Head Pod 是否处于 Running 状态。
Token 是否正确。
相关 Service 或负载均衡是否正常。
安全组和网络 ACL 是否允许访问。
客户端与 VPC 是否具备网络连通性。
10.6 重启后正在运行的任务失败
RayCluster、Head Group 或 Worker Group 重启会重新拉起相关 Pod,并可能导致正在运行的任务失败。执行重启、变更规格或镜像更新前,应先评估业务影响并做好任务 Checkpoint。
11. 资源销毁
测试结束或业务下线后,建议按照以下顺序清理资源:
1. 停止并备份正在运行的 Ray 作业。
2. 将任务结果、模型和 Checkpoint 保存到持久化存储。
3. 销毁 RayCluster。
4. 确认不存在其他 RayCluster 或服务依赖。
5. 销毁不再使用的 EMR on TKE 实例。
6. 检查并删除不再使用的负载均衡、CFS、COS 临时数据、NAT 网关和 TKE 节点。
7. 在费用中心确认没有遗留按量计费资源。
销毁 RayCluster 会释放其关联的计算和存储资源,正在运行或尚未提交完成的任务将无法恢复,应在销毁前确认数据已经持久化。