結合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實現Auto Scaling。