KubeRay Operator を使用して、ACK 上で分散 AI ワークロード用の Ray クラスターをデプロイおよび管理します。
前提条件
次のものが揃っていることを確認してください:
-
Kubernetes v1.24 以降を実行している Container Service for Kubernetes (ACK) マネージド Pro クラスター (作成 | アップグレード)。
-
8 vCPU と 32 GB のメモリを搭載したノードが少なくとも 1 つ (テスト用)。 本番環境では、ワークロードに合わせてサイジングしてください。 GPU ワークロードの場合は、サポートされている Elastic Compute Service (ECS) のインスタンスファミリーを使用してください。
-
kubectl がインストールされ、クラスターに接続されていること。
-
(オプション) Global Control Store (GCS) フォールトトレランス用の ApsaraDB for Tair インスタンス。
(オプション) GCS フォールトトレランスの設定
ApsaraDB for Tair (Redis 互換) インスタンスを作成します:
KubeRay Operator のインストール
-
ACK コンソールにログインします。
-
左側のナビゲーションペインで、[クラスター] をクリックします。クラスター名をクリックします。
-
[操作] > [アドオン] > [アプリケーションの管理] に移動します。
-
[Kuberay-Operator] で、[インストール] をクリックします。
Ray クラスターのデプロイ
この例では、Docker Hub のrayproject/ray:2.36.1 を使用します。 プルに失敗した場合は、次のいずれかの代替策を使用してください:
-
中国本土外からContainer Registry を介してイメージをミラーリングします (中国以外のイメージのサブスクライブ)。
-
Global Accelerator インスタンスを作成して、海外からイメージをプルします。
myfirst-ray-cluster という名前の Ray クラスターを作成します:
マニフェストでは以下を設定します:
| コンポーネント | 設定 | 注意 |
|---|---|---|
| ヘッドノード | num-cpus: "0" |
クラスター管理用にヘッドを予約します |
ワーカーグループ work1 |
1 レプリカ、最大 1,000 までスケーラブル | ワークロードに合わせてreplicas を調整します |
| オートスケーリング | 無効 (enableInTreeAutoscaling: false) |
ワークロードのリソースパターンをプロファイリングした後に有効化します |
完全なマニフェスト
cat <<EOF | kubectl apply -f -
apiVersion: ray.io/v1
kind: RayCluster
metadata:
name: myfirst-ray-cluster
namespace: default
spec:
suspend: false
autoscalerOptions:
env: []
envFrom: []
idleTimeoutSeconds: 60
imagePullPolicy: Always
resources:
limits:
cpu: 2000m
memory: 2024Mi
requests:
cpu: 2000m
memory: 2024Mi
securityContext: {}
upscalingMode: Default
enableInTreeAutoscaling: false
headGroupSpec:
rayStartParams:
dashboard-host: 0.0.0.0
num-cpus: "0"
serviceType: ClusterIP
template:
spec:
containers:
- image: rayproject/ray:2.36.1
imagePullPolicy: Always
name: ray-head
resources:
limits:
cpu: "4"
memory: 4G
requests:
cpu: "1"
memory: 1G
workerGroupSpecs:
- groupName: work1
maxReplicas: 1000
minReplicas: 0
numOfHosts: 1
rayStartParams: {}
replicas: 1
template:
spec:
containers:
- image: rayproject/ray:2.36.1
imagePullPolicy: Always
name: ray-worker
resources:
limits:
cpu: "4"
memory: 4G
requests:
cpu: "4"
memory: 4G
EOF
デプロイの確認
クラスターが実行中であることを確認します:
-
Ray クラスターのステータスを確認します:
kubectl get raycluster期待される出力:
NAME DESIRED WORKERS AVAILABLE WORKERS CPUS MEMORY GPUS STATUS AGE myfirst-ray-cluster 1 1 5 5G 0 ready 4m19s -
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 -
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 192.168.10.123 <none> 10001/TCP,8265/TCP,8080/TCP,6379/TCP,8000/TCP 6m57s
Ray クラスターのステータスが ready になり、すべての Pod が 1/1 Running と表示されたら、デプロイは完了です。