Ray在ACK集群高效部署与优化实践

开源框架Ray支持构建可扩展的人工智能(AI)和Python应用程序,广泛应用于机器学习领域。您可以在ACK集群上快速创建Ray Cluster,与阿里云日志服务SLS、Prometheus监控、Redis等快速集成,增强日志管理、可观测、高可用等能力。同时,Ray autoscaler与ACK autoscaler的弹性功能结合能更充分地发挥云的弹性能力,提高计算资源供给效率和性价比。

Ray简介

Ray是一个开源框架,支持构建可扩展的人工智能(AI)和Python应用程序,还提供了简单直观的API简化分布式计算,便于高效地编写并行和分布式Python应用程序,广泛应用于机器学习领域。Ray的统一计算框架由Ray AI libraries、Ray Core和Ray Cluster三层组成。

 

展开查看计算框架的详细介绍

Ray on Kubernetes

KubeRay Operator提供了一种Kubernetes原生的方式管理Ray Cluster。您可以通过KubeRay Operator在Kubernetes(包括阿里云ACK)环境中部署Ray Cluster。安装KubeRay Operator时需要部署Operator Deployment和RayCluster、RayJob和RayService的CRD。

将Ray部署在Kubernetes上能够极大地简化分布式应用程序的部署与管理。优势如下。更多信息,请参见Ray on Kubernetes

  • 弹性伸缩:Kubernetes能够根据集群工作负载自动伸缩节点数量。与Ray autoscaler集成后,您可以根据工作负载实现Ray Cluster的动态伸缩,优化资源利用率,轻松管理大规模分布式应用程序。

  • 容错性:Ray本身设计了容错机制。在Kubernetes上运行时,该特性得以增强。如果某个Ray节点失败,Kubernetes会自动替换失败节点,保证集群的稳定性和可用性。

  • 资源管理:在Kubernetes中,您可以通过资源请求(Request)和限制(Limit),精细地控制和管理Ray节点使用的资源,例如CPU和内存,以更有效地利用集群资源,避免资源浪费。

  • 简化部署:Kubernetes提供了一套统一的部署、管理和监控容器化应用的机制。通过Kubernetes部署Ray Cluster,可以简化配置和管理流程,确保在不同环境中(开发、测试、生产)部署的一致性。

  • 服务发现和负载均衡:Kubernetes能够提供服务发现和负载均衡。Ray节点之间的通信以及客户端到Ray Cluster的连接都可以通过Kubernetes实现自动管理,从而简化网络配置并提高性能。

  • 多租户支持:Kubernetes中的命名空间可以实现多用户、多团队在同一个Kubernetes集群中同时运行各自的Ray Cluster且互不干扰,便于资源共享。

  • 监控和日志:Kubernetes集成提供监控和日志的可观测能力,可以跟踪Ray Cluster的状态和性能。例如,您可以使用Prometheus和Grafana监控集群的性能指标。

  • 兼容性:Kubernetes是云原生生态系统的核心,与多种云服务提供商和技术栈兼容。通过Kubernetes部署Ray Cluster后,可以在不同的云平台或混合云环境之间快速迁移和扩展。

Ray on ACK

容器服务 Kubernetes 版是全球首批通过Kubernetes一致性认证的容器服务平台,提供高性能的容器应用管理服务,支持企业级Kubernetes容器化应用的生命周期管理。结合ACK的云原生化部署方式,您可以通过KubeRay在ACK集群上快速创建Ray Cluster。

  • 与阿里云SLS日志、ARMS Prometheus监控、Redis等产品无缝对接,可以增强日志管理、可观测和高可用等能力。

  • Ray autoscaler与ACK autoscaler的弹性功能相结合,可以充分发挥云的弹性能力,按需提供计算资源。

image.png

计费说明

本文在ACK集群上创建Ray Cluster后,与阿里云日志服务SLS、Prometheus监控、Redis等快速集成,以增强日志管理、可观测、高可用等能力。

除ACK本身产生的费用外,其他产品也会根据使用的资源产生相应的费用。关于其他产品的计费说明,请参见:

1.环境准备

1.1 创建集群

关于如何创建集群,请参见创建ACK托管集群;如需升级集群版本,请参见手动升级集群。创建ACK集群Pro版且符合以下要求。

  • 集群版本:v1.24及以上。

  • 节点规格:已配置一台8 CPU 32 GB规格及以上的节点。

  • 测试环境可使用推荐的最低规格:生产环境中需以实际情况为准,如需使用GPU节点,请配置GPU节点。

    关于ECS支持的实例规格,请参见实例规格族

  • 已开启日志服务SLS。

  • 已开启阿里云可观测监控Prometheus版。

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

(可选)创建云数据库Tair

本文使用Redis实例实现Ray Cluster的容错性和高可用性,您可按需进行创建。创建阿里云云数据库Tair(兼容 Redis)实例,且满足以下要求。

  • 新建的云数据库Tair(兼容 Redis)实例需要与本文使用的ACK集群Pro版处于同Region、同VPC。具体操作,请参见步骤1:创建实例

  • 添加白名单分组,允许VPC地址段访问。具体操作,请参见步骤2:设置白名单

  • 获得Redis实例的连接地址(推荐使用专有连接地址)。具体操作,请参见查看连接地址

  • 获得Redis实例的密码。具体操作,请参见修改或重置密码

1.2 安装Kuberay-Operator组件

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

重要

ACK集群提供的Kuberay-Operator托管组件当前处于邀测阶段,如您有使用需求, 请提交工单申请。

image

1.3 部署Ray Cluster

执行以下命令创建名为myfirst-ray-cluster的Ray Cluster,并查看部署情况。

  1. 执行以下命令创建Ray Cluster资源。

    展开查看完整命令代码

  2. 执行以下命令查看Ray Cluster部署情况。

    kubectl get raycluster
    
    NAME                  DESIRED WORKERS   AVAILABLE WORKERS   CPUS   MEMORY   GPUS   STATUS   AGE
    myfirst-ray-cluster   1                 1                   5      5G       0      ready    4m19s

    查看Ray Cluster对应Pod。

    kubectl get pod
    
    NAME                                     READY   STATUS    RESTARTS   AGE
    myfirst-ray-cluster-head-5q2hk           1/1     Running   0          4m37s
    myfirst-ray-cluster-work1-worker-zkjgq   1/1     Running   0          4m31s

    查看Ray Cluster对应Service。

    kubectl get svc
    
    NAME                           TYPE        CLUSTER-IP    EXTERNAL-IP   PORT(S)                                         AGE
    kubernetes                     ClusterIP   192.168.0.1   <none>        443/TCP                                         21d
    myfirst-ray-cluster-head-svc   ClusterIP   None          <none>        10001/TCP,8265/TCP,8080/TCP,6379/TCP,8000/TCP   6m57s

2. 集成日志服务SLS能力

您可以在Ray Cluster中集成阿里云日志服务SLS,实现日志的持久化存储。

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

    展开查看完整命令代码

    参数

    描述

    logPath

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

    advanced.k8s.ExternalK8sLabelTag

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

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

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

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

    image

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

    您可以根据Tag,例如_raycluster_name_,查看不同Ray Cluster的日志。

    image

3. 集成阿里云Prometheus监控能力

您可以在Ray Cluster中使用阿里云Prometheus监控能力,关于Prometheus监控功能的更多信息,请参见使用阿里云Prometheus监控

您可执行以下命令部署Pod Monitor和Service Monitor资源,用于收集Ray Cluster 的Metric数据。

  1. 执行以下命令部署Pod Monitor资源。

    展开查看完整代码示例

  2. 执行以下命令部署Service Monitor资源。

    展开查看完整代码示例

  3. 登录控制台查看资源部署接入情况。

    1. 登录ARMS控制台。在左侧导航栏单击接入中心,在基础设置页面,如下图所示按照序号依次单击②搜索Ray > ③选中Ray,然后在Ray面板选择上文新建的集群,单击确定

      image

    2. 接入成功后,单击接入管理,跳转至ARMS接入管理页面。在组件管理页签,单击组件类型区域的大盘,选择Ray Cluster

      image

    3. 在大盘中选择对应NamespaceRayClusterNameSessionName进行过滤,查看Ray Cluster运行中任务的监控数据。

      image.png

<think>好的,用户想了解阿里云容器服务ACK集群的使用指南或常见问题。首先,我需要整理ACK的基本概念和使用场景。根据引用[1],ACK用于容器化应用的部署和管理,很多企业都在使用。接下来,使用指南应该包括集群创建、应用部署、监控运维等步骤。比如引用[4]提到使用Alibaba Cloud Toolkit进行镜像打包和上传,这部分需要详细说明。 然后是常见问题,用户可能遇到集群创建失败、节点无法连接、存储配置问题等。引用[2]提到备份服务使用OSS,所以备份配置也是常见问题之一。另外,扩缩容方面,引用[3]和[5]提到自定义指标和HPA,这部分需要解释如何实现自动扩缩容。 性能优化方面,用户可能需要了解如何优化集群性能,比如资源分配和网络配置。安全部分需要强调权限管理和镜像安全,比如RBAC和私有镜像仓库的使用。 还需要考虑用户可能对成本优化感兴趣,比如合理分配资源和使用Spot实例。同时,故障排查部分要提供日志查看和事件监控的方法,帮助用户自主解决问题。 最后,生成相关问题时要覆盖部署、监控、备份、扩缩容、安全和成本等方面,确保全面覆盖用户潜在需求。需要确保所有信息准确,并正确引用提供的资料,比如备份服务使用OSS[^2],扩缩容依赖ack-alibaba-cloud-metrics-adapter[^3]等。同时,保持回答结构清晰,分点说明,便于用户理解。</think>### 阿里云容器服务 ACK 集群使用指南 #### 一、核心功能使用场景 1. **容器化应用管理** 支持通过 Kubernetes 原生方式部署和管理容器化应用,适用于微服务架构、DevOps 流程等场景[^1]。 2. **混合云多云部署** 提供统一控制台管理跨地域、跨云平台的 Kubernetes 集群。 3. **AI/LLM 推理加速** 集成 NVIDIA NIM 技术,支持 GPU 资源调度优化,加速大语言模型推理任务[^3][^5]。 #### 二、快速入门步骤 1. **集群创建** ```bash # 通过阿里云控制台或 CLI 创建 ACK 集群 aliyun cs CreateCluster --name my-cluster --region cn-hangzhou ``` 注意:创建时需选择网络插件(Flannel/Terway)、节点规格等参数。 2. **应用部署** - **镜像推送** 使用 Alibaba Cloud Toolkit 插件自动打包镜像并推送至 ACR 镜像仓库[^4]: ```dockerfile FROM openjdk:11 COPY target/app.jar /app CMD ["java", "-jar", "/app.jar"] ``` - **YAML 部署示例** ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: web-app spec: replicas: 2 template: spec: containers: - name: nginx image: registry.cn-hangzhou.aliyuncs.com/my-repo/nginx:1.20 ``` 3. **运维监控** - 通过 Prometheus 监控集群指标 - 使用 **ack-alibaba-cloud-metrics-adapter** 组件实现自定义指标 HPA #### 三、常见问题解决方案 | 问题类型 | 排查步骤 | 工具/命令 | |---------|----------|-----------| | 节点不可用 | 1. 检查节点状态 `kubectl get nodes`<br>2. 查看系统日志 `journalctl -u kubelet` | kubectl, SSH | | Pod 启动失败 | 1. 检查事件 `kubectl describe pod <pod-name>`<br>2. 查看容器日志 `kubectl logs <pod-name>` | kubectl | | 存储挂载异常 | 1. 验证 PV/PVC 绑定状态<br>2. 检查 OSS 存储桶权限[^2] | CSI 插件检查工具 | #### 四、高级功能实践 1. **自动扩缩容配置** ```yaml apiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler metadata: name: llm-inference-hpa spec: metrics: - type: Pods pods: metric: name: gpu_utilization target: type: AverageValue averageValue: 70% ``` 注:压测期间 Pod 可自动扩容,结束后 5 分钟内缩容[^5] 2. **数据备份恢复** ```bash # 创建备份仓库(OSS) velero install --provider alibabacloud --bucket my-backup-bucket # 执行定时备份 velero schedule create daily-backup --schedule="@daily" ``` §§ 1. 如何通过 ACK 实现混合云场景下的应用统一管理? 2. 在 ACK 中使用 GPU 资源需要注意哪些配额限制? 3. ACK 集群如何阿里云日志服务 SLS 集成? 4. 如何配置跨可用区的高可用 ACK 集群? 5. ACK Serverless 集群传统托管集群的性能差异?[^4]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值