すべてのプロダクト
Search
ドキュメントセンター

Container Service for Kubernetes:ACK への KubeRay のインストール

最終更新日:Sep 02, 2026

このトピックでは、ACK マネージドクラスター Pro に KubeRay Operator アドオンをデプロイし、Simple Log Service (SLS) と Prometheus を統合してログ収集とメトリクスのモニタリングを行い、可観測性と高可用性を向上させ、Kubernetes カスタムリソース (CR) を使用して Ray クラスターとアプリケーションを管理する方法について説明します。

前提条件

次のことを確認してください。

必要に応じて、クラスターを作成するか、既存のクラスターをアップグレードしてください。

KubeRay Operator のインストール

重要

KubeRay Operator は招待制プレビューです。アクセスするには、チケットを送信してください。

  1. ACK コンソールにログインします。左側のナビゲーションペインで、[クラスター] をクリックします。

  2. 対象クラスターの名前をクリックします。

  3. クラスターの詳細ページで、[操作] > [アドオン] > [アプリケーションの管理] を選択します。

  4. Kuberay-Operator を見つけてインストールします。

検証: インストール後、Operator Pod が実行中であることを確認してください。

kubectl get pods -A | grep kuberay

Operator Pod のステータスが Running と表示されます。ステータスが Pending のままである場合は、kubectl describe pod <pod-name> を実行して、ノードリソースの不足などのスケジューリングエラーを確認してください。

KubeRay Operator のログ収集の有効化

KubeRay Operator 自体からコントロールプレーンのログを収集します。

  1. クラスターの詳細ページで、[操作] > [ログセンター] > [コントロールプレーンコンポーネント] を選択します。

  2. [コンポーネントログ収集を有効化] をクリックします。

  3. [kuberay-operator] を選択します。

Ray クラスターのログ収集の有効化

AliyunLogConfig カスタムリソースを使用して、Ray Pod のログを SLS に転送します。Logtail は各 Pod の Ray ログディレクトリを監視し、クラスター名とノードタイプでエントリにタグを付けます。

説明

SLS は有料サービスです。料金の詳細については、「課金の概要」をご参照ください。

  1. このマニフェストを適用して、kube-system に AliyunLogConfig オブジェクトを作成します。

    サンプルコード

    cat <<EOF | kubectl apply -f -
    apiVersion: log.alibabacloud.com/v1alpha1
    kind: AliyunLogConfig
    metadata:
      name: rayclusters
      namespace: kube-system
    spec:
       # Logstore の名前。指定された Logstore が存在しない場合、Simple Log Service は自動的に Logstore を作成します。
      logstore: rayclusters
      # Logtail を設定します。
      logtailConfig:
        # データソースのタイプ。テキストログを収集する場合は、値を file に設定する必要があります。
        inputType: file
        # Logtail 設定の名前。名前は metadata.name で指定されたリソース名と同じでなければなりません。
        configName: rayclusters
        inputDetail:
          # Logtail が簡易モードでテキストログを収集するように設定します。
          logType: common_reg_log
          # ログファイルのパス。
          logPath: /tmp/ray/session_*-*-*_*/logs
          # ログファイルの名前。ログファイル名を指定する際に、アスタリスク (*) や疑問符 (?) などのワイルドカード文字を使用できます。例:log_*.log
          filePattern: "*.*"
          # コンテナのテキストログを収集する場合は、dockerFile を true に設定する必要があります。
          dockerFile: true
          # コンテナのフィルター条件。
          advanced:
            k8s:
              IncludeK8sLabel:
                ray.io/is-ray-node: "yes"
              ExternalK8sLabelTag:
                ray.io/cluster: "_raycluster_name_"
                ray.io/node-type : "_node_type_"
    EOF

    主要なパラメーター:

    パラメーター 説明
    logPath 各 Ray Pod のログディレクトリ。/tmp/ray/ 配下のすべてのセッションに一致します。クラスターが異なるパスを使用している場合はカスタマイズしてください。
    advanced.k8s.ExternalK8sLabelTag SLS でのフィルタリングのために、各ログエントリに _raycluster_name_ タグと _node_type_ タグを追加します。

    すべての AliyunLogConfig パラメーターについては、「DaemonSet モードで CRD を使用してコンテナログを収集する」をご参照ください。

  2. ACK コンソールでログを表示します。

    1. ACK コンソールにログインします。左側のナビゲーションペインで、[クラスター] をクリックします。

    2. 対象クラスターの名前をクリックします。

    3. [クラスター情報] > [基本情報] > [クラスターリソース] を選択します。

    4. [Log Service プロジェクト] リンクをクリックして、SLS プロジェクトを開きます。

  3. rayclusters Logstore を選択します。_raycluster_name_ でフィルタリングして、特定の Ray クラスターからのログを分離します。

    次の例は、2 つの Ray クラスターの GCS デバッグログを示しています。異なるクラスターのログは、_raycluster_name_ ラベルで区別できます。

    1  02-23 16:37:54
    __tag__:__user_defined_id__: k8s-group-c96xxx                    c4a541c67bd
    __tag__:__cluster_id__: c96fe15xxx                4a541c67bd
    __tag__:__container_ip__: 192.xxx.0.63
    __tag__:__container_name__: ray-head
    __tag__:__image_name__: docker.io/rayproject/ray:2.7.0
    __tag__:__namespace__: raycluster
    __tag__:__node_ip__: 192.xxx.xxx.58
    __tag__:__node_name__: cn-hangzhou.192.xxx.xxx.58
    __tag__:__pod_name__: myfirst-ray-cluster-head-wpnld
    __tag__:__pod_uid__: 6235fabd-xxx-xxx-15b699
    __tag__:_raycluster_name_: myfirst-ray-cluster
    content:      NodeInfoGcsService.grpc_server.RegisterNode - 1 total (0 active), CPU time: mean = 94.638 us, total = 94.638 us
    
    2  02-23 16:37:52
    __tag__:__user_defined_id__: k8s-group-c96xxx                    c4a541c67bd
    __tag__:__cluster_id__: c96fe15bca1fxxx            c4a541c67bd
    __tag__:__container_ip__: 192.xxx.0.74
    __tag__:__container_name__: ray-head
    __tag__:__image_name__: docker.io/rayproject/ray:2.7.0
    __tag__:__namespace__: default
    __tag__:__node_ip__: 192.xxx.xxx.58
    __tag__:__node_name__: cn-hangzhou.192.xxx.xxx.58
    __tag__:__pod_name__: mysecond-ray-cluster-head-hfg77
    __tag__:__pod_uid__: xxx-xxx-xxx-df672
    __tag__:_raycluster_name_: mysecond-ray-cluster
    content:      GcsHealthCheckManager::AddNode - 1 total (0 active), CPU time: mean = 8.978 us, total = 8.978 us

Ray クラスターのモニタリングの有効化

ワーカー用の PodMonitor とヘッドノード用の ServiceMonitor を使用して、Ray Pod から Prometheus メトリクスを収集します。ワーカーはスタンドアロンの Pod であるため PodMonitor が必要です。ヘッドノードは安定した Service エンドポイント経由でメトリクスを公開します。

説明

Managed Service for Prometheus は有料サービスです。料金の詳細については、「Managed Service for Prometheus インスタンスの課金」をご参照ください。セットアップについては、「Managed Service for Prometheus への接続と設定」をご参照ください。

  1. PodMonitor を作成して、Ray ワーカー Pod からメトリクスを収集します。

    apiVersion: monitoring.coreos.com/v1
    kind: PodMonitor
    metadata:
      annotations:
        arms.prometheus.io/discovery: 'true'
        arms.prometheus.io/resource: arms
      name: ray-workers-monitor
      namespace: arms-prom
      labels:
        # `release: $HELM_RELEASE`: Prometheus はこのラベルを持つ PodMonitor のみを検出できます。
        release: prometheus
        #ray.io/cluster: raycluster-kuberay # $RAY_CLUSTER_NAME: "kubectl get rayclusters.ray.io"
    spec:
      namespaceSelector:
        any: true
      jobLabel: ray-workers
      # "matchLabels" を持つ Kubernetes Pod のみを選択します。
      selector:
        matchLabels:
          ray.io/node-type: worker
      # この PodMonitor で許可されているエンドポイントのリスト。
      podMetricsEndpoints:
      - port: metrics
        relabelings:
        - action: replace
          regex: (.+)
          replacement: $1
          separator: ;
          sourceLabels:
            - __meta_kubernetes_pod_label_ray_io_cluster
          targetLabel: ray_io_cluster
  2. ServiceMonitor を作成して、Ray ヘッドノードからメトリクスを収集します。

    apiVersion: monitoring.coreos.com/v1
    kind: ServiceMonitor
    metadata:
      annotations:
        arms.prometheus.io/discovery: 'true'
        arms.prometheus.io/resource: arms
      name: ray-head-monitor
      namespace: arms-prom
      labels:
        # `release: $HELM_RELEASE`: Prometheus はこのラベルを持つ ServiceMonitor のみを検出できます。
        release: prometheus
    spec:
      namespaceSelector:
        any: true
      jobLabel: ray-head
      # "matchLabels" を持つ Kubernetes Service のみを選択します。
      selector:
        matchLabels:
          ray.io/node-type: head
      # この ServiceMonitor で許可されているエンドポイントのリスト。
      endpoints:
        - port: metrics
          path: /metrics
      targetLabels:
      - ray.io/cluster
  3. Application Real-Time Monitoring Service (ARMS) でダッシュボードを表示します。

    1. ARMS コンソールにログインします。左側のナビゲーションペインで、[インテグレーションセンター] をクリックします。

    2. Ray を検索して選択します。

    3. [Ray] パネルで、クラスターを選択し、[OK] をクリックします。

    4. 左側のナビゲーションペインで [インテグレーション管理] をクリックし、対象の環境名をクリックします。

    5. [コンポーネント管理] タブで、[アドオンタイプ] の下にある [ダッシュボード] を見つけ、[Ray Cluster] をクリックします。

    6. [Namespace]、[RayClusterName]、および [SessionName] を設定して、特定のタスクのモニタリングデータをフィルタリングします。image.png

検証: ARMS コンソールで、ray-workers-monitor と ray-head-monitor の両方がアクティブなスクレイプターゲットとして表示されます。ターゲットが見つからない場合は、release: prometheus ラベルと、名前空間セレクターが Ray クラスターの名前空間と一致していることを確認してください。

次のステップ

  • RayCluster カスタムリソースをデプロイして、分散 Ray ワークロードを実行してください。

  • SLS で _raycluster_name_ タグを使用して、複数の Ray クラスター間のログを関連付けてください。

  • Prometheus からの Ray クラスターメトリクスに基づいて、ARMS のアラートルールを設定してください。