RayはRayオートスケーラーを提供します。これにより、ワークロードに基づいてRayクラスターのコンピューティングリソースを動的に調整できます。 Container Service for Kubernetes (ACK) は、自動スケーリングを実装するためのACKオートスケーラーも提供します。 このコンポーネントは、クラスター内のワークロードに基づいてノード数を自動的に調整できます。 RayオートスケーラーとACKオートスケーラーに基づく自動スケーリング機能は、クラウドコンピューティングの柔軟性機能を完全に活用し、コンピューティングリソースの効率と費用対効果を向上させます。
前提条件
(オプション) Rayクラスターでジョブを送信する方法を学習しました。 詳細については、「Rayジョブの送信」をご参照ください。
ACKクラスターのデフォルトノードプールでは、ノードオートスケーリング機能が有効になっています。
RayオートスケーラーとACKオートスケーラーに基づくエラスティックスケーリング
次のコマンドを実行して、ACKクラスターでHelmを使用してRayクラスターをデプロイします。
helm uninstall ${RAY_CLUSTER_NAME} -n ${RAY_CLUSTER_NS} helm install ${RAY_CLUSTER_NAME} aliyunhub/ack-ray-cluster -n ${RAY_CLUSTER_NS}次のコマンドを実行して、Rayクラスターのリソースのステータスを表示します。
kubectl get pod -n ${RAY_CLUSTER_NS} 名前準備ができているステータスの履歴書 myfirst-ray-cluster-head-kvvdf 2/2実行中0 22m次のコマンドを実行して、ヘッドノードにログインし、クラスターのステータスを表示します。
値をRayクラスターの実際のポッド名に置き換えます。
kubectl -n ${RAY_CLUSTER_NS} exec -it myfirst-ray-cluster-head-kvvdf -- bash (base) ray @ myfirst-ray-cluster-head-kvvdf:~$ ray status期待される出力:
========= オートスケーラーステータス: 2024-01-25 00:00:19.879963 ======= ノードのステータス --------------------------------------------------------------- 健康: 1ヘッドグループ 保留中: (保留ノードなし) 最近の失敗: (失敗なし) リソース --------------------------------------------------------------- 使用法: 0B/1.86GiBメモリ 0B/452.00MiB object_store_memory 要求: (リソース要求なし)Rayクラスターで次のジョブを送信して実行します。
次のコードは15のタスクを開始し、それぞれに1つのvCPUが必要です。 既定では、先頭ポッドの
-- num-cpusの値は0です。つまり、タスクのスケジューリングは許可されていません。 ワーカーポッドのCPUとメモリは、デフォルトで1 vCPUと1 GBに設定されています。 したがって、Rayクラスターは自動的に15個のワーカーポッドを作成します。 ACKクラスターのノードリソースが不十分なため、保留状態のポッドは自動的にノード自動スケーリング機能をトリガーします。インポート時間 レイのインポート インポートソケット ray.init() @ ray.remote(num_cpus=1) def get_task_hostname(): time.sleep(120) host = socket.gethostbyname(socket.gethostname()) ホストを返す object_refs = [] 範囲内の_の場合 (15): object_refs.append(get_task_hostname.remote()) ray.wait(object_refs) object_refsのtの場合: print(ray.get(t))次のコマンドを実行して、Rayクラスター内のポッドのステータスを照会します。
kubectl get pod -n ${RAY_CLUSTER_NS} -w # 期待される出力: 名前準備ができているステータスの履歴書 myfirst-ray-cluster-head-kvvdf 2/2実行中0 47m myfirst-ray-cluster-worker-workergroup-btgmm 1/1実行0 30s myfirst-ray-cluster-worker-workergroup-c2lmq 0/1保留中0 30秒 myfirst-ray-cluster-worker-workergroup-gstcc 0/1保留中0 30秒 myfirst-ray-cluster-worker-workergroup-hfshs 0/1保留中0 30秒 myfirst-ray-cluster-worker-workergroup-nrfh8 1/1ランニング0 30s myfirst-ray-cluster-worker-workergroup-pjbdw 0/1保留中0 29s myfirst-ray-cluster-worker-workergroup-qxq7v 0/1保留中0 30秒 myfirst-ray-cluster-worker-workergroup-sm8mt 1/1ランニング0 30s myfirst-ray-cluster-worker-workergroup-wr87d 0/1保留中0 30秒 myfirst-ray-cluster-worker-workergroup-xc4kn 1/1ランニング0 30s ...次のコマンドを実行して、ノードのステータスを照会します。
kubectl get node -w # 期待される出力: cn-hangzhou.172.16.0.204準備 <none> 44h v1.24.6-aliyun.1 cn-hangzhou.172.16.0.17 NotReady <none> 0s v1.24.6-aliyun.1 cn-hangzhou.172.16.0.17 NotReady <none> 0s v1.24.6-aliyun.1 cn-hangzhou.172.16.0.17 NotReady <none> 0s v1.24.6-aliyun.1 cn-hangzhou.172.16.0.17 NotReady <none> 1s v1.24.6-aliyun.1 cn-hangzhou.172.16.0.17 NotReady <none> 11s v1.24.6-aliyun.1 cn-hangzhou.172.16.0.16 NotReady <none> 10s v1.24.6-aliyun.1 cn-hangzhou.172.16.0.16 NotReady <none> 14s v1.24.6-aliyun.1 cn-hangzhou.172.16.0.17 NotReady <none> 31s v1.24.6-aliyun.1 cn-hangzhou.172.16.0.17 NotReady <none> 60s v1.24.6-aliyun.1 cn-hangzhou.172.16.0.17準備 <none> 61s v1.24.6-aliyun.1 cn-hangzhou.172.16.0.16準備 <none> 64s v1.24.6-aliyun.1 ...
関連ドキュメント
Rayオートスケーラーに基づくElastic Container InstanceノードのElasticスケーリングを参照することもできます。
ローカルネットワークからRay Dashboardにアクセスできます。 詳細については、「ローカルネットワークからのアクセスレイダッシュボード」をご参照ください。