结合Ray autoscaler能力,您可以在ACK集群中创建Ray Cluster并配置在Ray Cluster内自动弹出ECI节点,以享用免运维、强隔离、能快速启动的容器运行环境。使用ECI时,您无需购买和管理底层ECS服务器,可以更加关注容器应用而非底层基础设施的维护工作,且仅为实际使用的资源付费。
前提条件
(可选)已了解如何在Ray Cluster中提交一个Job,例如提交Ray Job。
已部署ack-virtual-node组件并将Pod调度到ECI节点上运行。具体操作,请参见 通过虚拟节点将Pod调度到ECI上运行。
示例集群架构
操作步骤
执行以下命令,查看Node节点,确认其中有新增
virtual-kubelet
虚拟节点。kubectl get node
预期输出:
NAME STATUS ROLES AGE VERSION cn-hangzhou.172.XX.XX.20 Ready <none> 19h v1.26.3-aliyun.1 cn-hangzhou.172.XX.XX.236 Ready <none> 82m v1.26.3-aliyun.1 cn-hangzhou.172.XX.XX.41 Ready <none> 19h v1.26.3-aliyun.1 virtual-kubelet-cn-hangzhou-k Ready agent 16m v1.26.3-aliyun.1
执行以下命令,创建values.yaml文件。
cat > values.yaml <<EOF worker: groupName: workergroup labels: alibabacloud.com/eci: "true" EOF
执行以下命令,安装支持ECI的Ray Cluster。
helm uninstall ${RAY_CLUSTER_NAME} -n ${RAY_CLUSTER_NS} helm install ${RAY_CLUSTER_NAME} aliyunhub/ack-ray-cluster -n ${RAY_CLUSTER_NS} -f values.yaml
执行以下命令,确认Ray Cluster的Pod运行正常。
kubectl get pod
预期输出:
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES myfirst-ray-cluster-head-7fgp4 2/2 Running 0 7m2s 172.16.0.241 cn-hangzhou.172.16.0.240 <none> <none>
执行以下命令,登录Head节点。
请将Pod名称替换为实际的Ray Cluster的Pod名称。
kubectl -n ${RAY_CLUSTER_NS} exec -it myfirst-ray-cluster-head-7fgp4 -- bash
向Ray Cluster提交并运行Python Job。
下方代码启动了2个Task,每个Task需要1核CPU调度资源。默认创建的Ray Cluster的Head Pod的
--num-cpus
为0,即不允许调度task;Work Pod的CPU内存默认为1核1 GB。因此,Ray Cluster会自动扩容2个ECI Work Pod。import time import ray import socket ray.init() @ray.remote(num_cpus=1) def get_task_hostname(): time.sleep(120) host = socket.gethostbyname(socket.gethostname()) return host object_refs = [] for _ in range(2): object_refs.append(get_task_hostname.remote()) ray.wait(object_refs) for t in object_refs: print(ray.get(t))
执行以下命令,确认Pod运行正常,即扩容成功。
kubectl get pod -o wide # 预期输出: NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES myfirst-ray-cluster-head-7fgp4 2/2 Running 0 4m56s 172.16.0.241 cn-hangzhou.172.16.0.240 <none> <none> myfirst-ray-cluster-worker-workergroup-6s2cl 0/1 Init:0/1 0 4m5s 172.16.0.17 virtual-kubelet-cn-hangzhou-k <none> <none> myfirst-ray-cluster-worker-workergroup-l9qgb 1/1 Running 0 4m5s 172.16.0.16 virtual-kubelet-cn-hangzhou-k <none>
相关文档
关于虚拟节点的更多信息,请参见虚拟节点。
您也可以在普通ECS节点中基于Ray autoscaler与ACK autoscaler实现弹性伸缩。
文档内容是否对您有帮助?