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

Container Service for Kubernetes:ACK に HistoryServer をインストールする

最終更新日:Nov 10, 2025

ネイティブの Ray ダッシュボードは、クラスタが実行されている場合にのみ使用できます。クラスタが終了した後、ユーザーは履歴ログとモニタリングデータにアクセスできません。このトピックでは、クラスタ操作中にノードログをリアルタイムで収集し、Object Storage Service(OSS)に永続的に保存する RayCluster HistoryServer 機能について説明します。これにより、クラスタがリサイクルされた後でも履歴レコードをクエリできます。

前提条件

  • HistoryServer が有効になると、RayCluster によって作成されたポッドの PostStartHook が上書きされます。 PostStartHook を使用する場合は、次のスクリプトを追加します。このスクリプトは、Ray nodeid/tmp/ray/init.log ファイルに書き込み、HistoryServer Collector のサイドカーが読み取って使用できるようにします。

GetNodeId(){
  while true;
  do
    nodeid=$(ps -ef | grep raylet | grep node_id | grep -v grep | grep -oP '(?<=--node_id=)[^ ]*' | tr -d '\n')
    if [ -n "$nodeid" ]; then
      echo "$(date) raylet started: \"$(ps -ef | grep raylet | grep node_id | grep -v grep | grep -oP '(?<=--node_id=)[^ ]*')\" => ${nodeid}" >> /tmp/ray/init.log
      echo $nodeid > /tmp/ray/alibabacloud_raylet_node_id
      break
    else
      echo "$(date) raylet not start >> /tmp/ray/init.log"  // raylet が開始されていません
      sleep 1
    fi
  done
}
GetNodeId
    
  • HistoryServer が有効になると、RayCluster によって作成されたポッドの ServiceAccount が置き換えられます。 ServiceAccount の新しい命名規則は ServiceAccountPrefix-RayClusterName です。カスタム ServiceAccount を使用する場合は、その構成が生成ルールと一致していることを確認してください。

  • インストールされている KubeRay のバージョンは 1.2.1.5 以降である必要があります。詳細については、「ACK に KubeRay コンポーネントをインストールする」をご参照ください。

1. クラスタの RRSA 機能を有効にする

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

  2. [クラスタ] ページで、管理するクラスタを見つけ、その名前をクリックします。左側のウィンドウで、[クラスタ情報] をクリックします。

  3. クラスタの RAM Roles for Service Accounts(RRSA)OpenID Connect(OIDC)機能を有効にします。クラスタページで、[クラスタ情報] > [基本情報] > セキュリティと監査 を選択し、RRSA OIDC パラメータの横にある [有効にする] をクリックします。操作の詳細については、「クラスタ作成時の有効化」をご参照ください。

image

2. RRSA ロールを作成する

  1. RRSA ロールを作成します。

    RAM 管理者として RAM コンソール にログインします。左側のナビゲーションウィンドウで、[ID] > [ロール] を選択します。 [ロール] ページで、[ロールの作成] をクリックし、信頼できるプリンシパルタイプとして [ID プロバイダー] を選択します。

    1. プリンシパルを追加します。

      ID プロバイダータイプ:RRSA OIDC が有効になっているクラスタを選択します。

      image

    2. 条件を追加します。

      特定の ServiceAccount を関連付けます。 RRSA ロールを作成した後、クラスタ内の特定の ServiceAccount に RRSA ロールを関連付けます。image

      条件

      キー

      oidc:sub

      オペレーター

      StringLike

      system:serviceaccount:*:ray-historyserver*

      説明
      • アスタリスク(*)はワイルドカードを表し、<ray-historyserver> は後続の操作の serviceAccountPrefix に対応し、HistoryServer をインストールするときに指定する必要があります。

      • ray-historyserver はカスタム部分であり、HistoryServer をインストールするときの ServiceAccountPrefix と同じである必要があります。

      説明

      カスタム サービスアカウントを使用している場合は、[ステートメントの追加] をクリックして、同じ RRSA ロールに 2 つのプリンシパルを追加し、各プリンシパルに次の条件を追加する必要があります。

      • プリンシパル 1:ID プロバイダー

        条件

        キー

        oidc:sub

        オペレーター

        StringEquals

        system:serviceaccount:kuberay:ray-historyserver

      • プリンシパル 2:ID プロバイダー

        条件

        キー

        oidc:sub

        オペレーター

        StringLike

        system:serviceaccount:*:rhs*

      2 つのサービスアカウントは system:serviceaccount:kuberay:ray-historyserversystem:serviceaccount:*:rhs* です。rhs はカスタマイズ可能な部分です。

  2. RRSA ロールに権限を追加します。

    1. Application Real-Time Monitoring Service(ARMS)への読み取り専用アクセス用に、ロールに AliyunARMSReadOnlyAccess 権限を追加します。

      image

    2. OSS を管理するために、ロールに AliyunOSSFullAccess 権限を追加します。手順は上記と同じです。

      重要

      このトピックでは、ロールに OSS のフルアクセス権限を付与します。実際のシナリオでは、権限の範囲を制御するために、正確な権限付与を使用することをお勧めします。

3. OAuth アプリケーションを作成する

  1. OAuth エンタープライズ アプリケーションを作成して構成します。

    重要

    インターネット経由で HistoryServer に接続する方法の詳細については、「インターネットアクセスの構成」をご参照ください。

    image

    説明

    コールバックアドレスは http://localhost:8080/auth/callback です。 localhost:8080 は HistoryServer のドメイン名であり、後続の操作の CallbackServiceName に対応し、HistoryServer をインストールするときに指定する必要があります。 /auth/callback は固定パスサフィックスです。

  2. OAuth アプリケーションを構成します。

    1. OAuth スコープを追加します。

      • aliuid

        Alibaba Cloud UID(RAM ユーザーまたは Alibaba アカウント ID)を取得します。

      • profile

        ユーザーのユーザー名などのプロファイルを取得します。(メインアカウントアクセスログインはログイン名を取得し、RAM ユーザーログインはユーザープリンシパル名と表示名を取得します。)

      image

    2. OAuth アプリケーションシークレットを作成して保存します。

      image

      重要

      [アプリケーション ID][AppSecretValue] を記録します。これらは、後続の操作で kuberay 名前空間にシークレットを作成するときに使用されます。

  3. クラスタに接続し、kuberay 名前空間にシークレットを作成します。

    Container Service for Kubernetes(ACK)クラスタに接続する方法の詳細については、「クラスタへの接続」をご参照ください。

    kubectl create ns kuberay
    kubectl create secret -n kuberay generic webapp-secret --from-literal=webapp-id="yours-AppID" --from-literal=webapp-secret=yours-AppSecretValue

    パラメーター

    説明

    webapp-secret

    作成するシークレットの名前。カスタマイズ可能です。

    webapp-id

    OAuth アプリケーション ID。

    webapp-secret

    OAuth キーの AppSecretValue。

4. KubeRay パラメーターを構成する

  1. KubeRay コンポーネントをインストールします。

    詳細については、「KubeRay コンポーネントのインストール」をご参照ください。

  2. Kuberay-Operator パラメーターを構成します。

    パラメーター

    説明

    HistoryServer を有効にする

    HistoryServer を有効にするには、選択します。

    CallbackServiceName

    HistoryServer OAuth 認証のコールバック ドメイン名。OAuth アプリケーションのコールバックアドレスのドメイン名と一致する必要があります。たとえば、OAuth 構成が http://xx.com/oauth/callback の場合、このパラメーターを xx.com に設定します。

    CloudRoleName

    HistoryServer に関連付けられた RRSA ロールの名前。

    OSSBucket

    HistoryServer が使用する OSS バケットの名前。

    OSSEndPoint

    HistoryServer が使用する OSS バケットのエンドポイント。

    OSSHistoryServerRootDir

    HistoryServer がログとメタデータを保存するディレクトリ。

    OSSRegion

    HistoryServer が使用する OSS リージョン(例:cn-hangzhou、ap-southeast-1)。

5. RayCluster を作成する

RayCluster で HistoryServer 機能を有効にする必要がある場合は、RayCluster を送信するときに ray.alibabacloud.com/enable-historyserver: "true" アノテーションを追加する必要があります。 YAML 構成の例を以下に示します。

YAML ファイルを表示する

apiVersion: ray.io/v1
kind: RayCluster
metadata:
  annotations:
    ray.alibabacloud.com/enable-historyserver: "true" // HistoryServer を有効にする
  labels:
    ray.io/cluster: wukun
  generateName: wukun-ray240-
  namespace: default
spec:
  suspend: false
  autoscalerOptions:
    env: []
    envFrom: []
    idleTimeoutSeconds: 60
    imagePullPolicy: Always
    resources:
      limits:
        cpu: 200m
        memory: 200Mi
      requests:
        cpu: 200m
        memory: 200Mi
    securityContext: {}
    upscalingMode: Default
  enableInTreeAutoscaling: false
  headGroupSpec:
    rayStartParams:
      dashboard-host: 0.0.0.0
      num-cpus: "0"
    serviceType: ClusterIP
    template:
      metadata:
        labels:
          test: wukun
      spec:
        affinity:
        containers:
        - env:
          image: xxxx
          imagePullPolicy: Always
          name: ray-head
          resources:
            limits:
              cpu: "5"
              memory: 10G
            requests:
              cpu: "1"
              memory: 1G

        tolerations:
        - key: ray
          operator: Equal
          value: cpu
  workerGroupSpecs:
  - groupName: cpu
    maxReplicas: 1000
    minReplicas: 0
    numOfHosts: 1
    rayStartParams: {}
    replicas: 2
    template:
      metadata:
        labels:
          test: wukun
      spec:
        imagePullSecrets:
        containers:
        - env:

          image: xxxx
          imagePullPolicy: Always
          name: ray-worker
          resources:
            limits:
              cpu: "1"
              memory: 1G
            requests:
              cpu: "1"
              memory: 1G
          volumeMounts:
        tolerations:
        - key: ray
          operator: Equal
          value: cpu
        volumes:

6. HistoryServer に接続する

localhost を使用して HistoryServer に接続する

デフォルトでは、HistoryServer には port-forward を使用してアクセスする必要があります。ターミナルウィンドウを起動し、次のコマンドを実行します。

kubectl -n kuberay port-forward svc/ray-history-server --address 0.0.0.0 8080:80

構成後、ブラウザで localhost:8080 にアクセスして HistoryServer にアクセスできます。この時点では、HistoryServer でモニタリングデータを表示することはできません。モニタリングデータを表示するには、追加の port-forward コマンドを実行する必要があります。

kubectl -n kuberay port-forward svc/ray-history-server --address 0.0.0.0 3000:3000

インターネットアクセスを構成する

重要

この例はデモ用です。アプリケーションデータのセキュリティのために、本番環境では アクセス制御 機能も有効にすることをお勧めします。

ACK コンソール にログインします。左側のナビゲーションウィンドウで、[クラスタ] をクリックします。 管理するクラスタの名前をクリックして、クラスタ詳細ページに移動します。次の図に示すように、序数に従ってインターネットサービスを構成します。 OAuth アプリケーションのコールバックアドレスを、作成したインターネットサービスに http://${externalIP}/auth/callback 形式で設定します。 OAuth アプリケーションの詳細設定については、「3. OAuth アプリケーションを作成する」をご参照ください。image

image