kuberay 安装和使用

KubeRay 是一个基于 Kubernetes 的项目,旨在简化在 Kubernetes 上部署和管理 Ray 集群的过程。先贴点正确的废话:

1. 简化集群管理 KubeRay 提供了一个易于使用的界面和工具,允许用户快速创建、配置和管理 Ray 集群,而不需要深入了解底层 Kubernetes 的细节。

2. 自动化部署  通过使用 Kubernetes 的自定义资源定义(CRD),用户可以通过简单的 YAML 配置文件来定义 Ray 集群的结构和参数,KubeRay 自动处理资源的创建和配置。

3. 资源调度与管理  KubeRay 能够根据用户定义的资源需求(如 CPU、内存)自动调度和管理集群中的节点,确保资源的高效利用。

4. 支持弹性伸缩  KubeRay 支持动态扩展和缩减 Ray 集群的规模,以适应不同的计算需求。这使得用户能够根据工作负载的变化灵活调整资源。

5. 集成监控与可视化  KubeRay 集成了 Ray Dashboard,提供了集群状态的可视化界面,帮助用户监控任务执行情况和资源使用状态。

6. 易于与其他 Kubernetes 生态系统集成  KubeRay 作为 Kubernetes 的一部分,可以与其他 Kubernetes 工具和生态系统(如 Helm、Prometheus、Grafana 等)无缝集成,增强集群的功能和可用性。

7. 支持多种工作负载  KubeRay 可以支持多种类型的工作负载,包括机器学习、深度学习、数据处理等,适用于不同的应用场景。

离线安装方式也比价简单

https://github.com/ray-project/kuberay-helm/releases/download/kuberay-operator-1.1.0-rc.0/kuberay-operator-1.1.0-rc.0.tgz

https://github.com/ray-project/kuberay-helm/releases/download/ray-cluster-1.1.0-rc.0/ray-cluster-1.1.0-rc.0.tgz

下载解压到/opt/kuberay/ 目录下

在kuberay-operator目录下执行

helm install kuberay-operator . --namespace kuberay-system --create-namespace

在ray-cluster/ 目录下下执行

helm install ray-cluster . --namespace kuberay-system --create-namespace

ray-cluster-kuberay-head-fkn22ray-cluster-kuberay-worker-workergroup 是同一个 Ray Cluster 中的两种不同角色,它们的启动命令体现了它们之间的关系。以下是它们的具体关系解析:

1. 头节点 (ray-cluster-kuberay-head-fkn22)

  • 启动命令
    ulimit -n 65536; ray start --head --block --dashboard-agent-listen-port=52365 --num-cpus=1 --memory=2000000000 --dashboard-host=0.0.0.0 --metrics-export-port=8080
    
  • 角色
    • 负责整个 Ray Cluster 的管理和调度。
    • 提供 Dashboard,供用户监控集群状态。
  • 关键参数
    • --head:表示该节点是头节点。
    • --dashboard-agent-listen-port=52365:Dashboard 监听的端口。
    • --num-cpus=1--memory=2000000000:分配给头节点的资源。

2. 工作节点 (ray-cluster-kuberay-worker-workergroup)

  • 启动命令
    ulimit -n 65536; ray start --address=ray-cluster-kuberay-head-svc.kuberay-system.svc.cluster.local:6379 --metrics-export-port=8080 --block --dashboard-agent-listen-port=52365 --num-cpus=1 --memory=1000000000
    
  • 角色
    • 负责执行实际的计算任务,处理用户提交的工作。
  • 关键参数
    • --address=ray-cluster-kuberay-head-svc.kuberay-system.svc.cluster.local:6379:指定连接到头节点的地址和端口,确保工作节点可以与头节点通信。
    • --dashboard-agent-listen-port=52365:同样监听 Dashboard 端口,以便收集和上报指标。
    • --num-cpus=1--memory=1000000000:为工作节点分配资源。

使用命令查看ray集群信息

k get RayCluster -n kube-system

修改workerGroupSpecs下的replicas 控制ray worker节点数量

通过托管的Kuberay-Operator组件创建的Ray Cluster会自动为Head Pod生成一个ClusterIP类型的Service。然而,由于Ray Dashboard目前没有内置的认证和授权机制,不建议将此Service类型更改为LoadBalancer以暴露给公网访问。作为一种安全替代方案可以使用kubectl port-forward命令在本地机器上转发端口,从而实现对Ray Dashboard的安全访问。

Ray Cluster Dashboard目前默认禁用了Metrics的展示。执行以下命令,查询命名空间下Ray Cluster集群的服务信息。

[root@node126 ray-cluster]# kubectl get svc -n kuberay-system
NAME                           TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)                                         AGE
kuberay-operator               ClusterIP   10.68.51.126   <none>        8080/TCP                                        24h
ray-cluster-kuberay-head-svc   ClusterIP   10.68.77.12    <none>        10001/TCP,8265/TCP,8080/TCP,6379/TCP,8000/TCP   24h

执行以下命令,利用port-forward将发送到本地8265端口的流量转发至RayCluster集群内服务的8265端口,日志显示如下信息:


[root@node126 ray-cluster]# kubectl port-forward svc/ray-cluster-kuberay-head-svc --address 0.0.0.0 8265:8265 -n kuberay-system
Forwarding from 0.0.0.0:8265 -> 8265

查看下ray-dashboard

加一个ray的调用任务看下job监控

import ray

# 连接到指定的 IP 和端口
ray.init(address='ray://192.168.110.126:10001')

@ray.remote
def hello():
    return "Hello, Ray!"

# 调用远程函数
print(ray.get(hello.remote()))

可能会有这样得报错, ray和python得版本得对应上,注意调整版本号

RuntimeError: Version mismatch: The cluster was started with:
    Ray: 2.9.0
    Python: 3.8.18
This process on Ray Client was started with:
    Ray: 2.10.0
    Python: 3.10.11

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CHEN_RUI_2200

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值