ネイティブの 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 機能を有効にする
ACK コンソール にログインします。左側のナビゲーションウィンドウで、[クラスタ] をクリックします。
[クラスタ] ページで、管理するクラスタを見つけ、その名前をクリックします。左側のウィンドウで、[クラスタ情報] をクリックします。
クラスタの RAM Roles for Service Accounts(RRSA)OpenID Connect(OIDC)機能を有効にします。クラスタページで、[クラスタ情報] > [基本情報] > セキュリティと監査 を選択し、RRSA OIDC パラメータの横にある [有効にする] をクリックします。操作の詳細については、「クラスタ作成時の有効化」をご参照ください。

2. RRSA ロールを作成する
RRSA ロールを作成します。
RAM 管理者として RAM コンソール にログインします。左側のナビゲーションウィンドウで、 を選択します。 [ロール] ページで、[ロールの作成] をクリックし、信頼できるプリンシパルタイプとして [ID プロバイダー] を選択します。
プリンシパルを追加します。
ID プロバイダータイプ:RRSA OIDC が有効になっているクラスタを選択します。

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

条件
値
キー
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-historyserverとsystem:serviceaccount:*:rhs*です。rhs はカスタマイズ可能な部分です。
RRSA ロールに権限を追加します。
Application Real-Time Monitoring Service(ARMS)への読み取り専用アクセス用に、ロールに
AliyunARMSReadOnlyAccess権限を追加します。
OSS を管理するために、ロールに
AliyunOSSFullAccess権限を追加します。手順は上記と同じです。重要このトピックでは、ロールに OSS のフルアクセス権限を付与します。実際のシナリオでは、権限の範囲を制御するために、正確な権限付与を使用することをお勧めします。
3. OAuth アプリケーションを作成する
OAuth エンタープライズ アプリケーションを作成して構成します。
重要インターネット経由で HistoryServer に接続する方法の詳細については、「インターネットアクセスの構成」をご参照ください。
説明コールバックアドレスは
http://localhost:8080/auth/callbackです。localhost:8080は HistoryServer のドメイン名であり、後続の操作のCallbackServiceNameに対応し、HistoryServer をインストールするときに指定する必要があります。/auth/callbackは固定パスサフィックスです。OAuth アプリケーションを構成します。
OAuth スコープを追加します。
aliuid
Alibaba Cloud UID(RAM ユーザーまたは Alibaba アカウント ID)を取得します。
profile
ユーザーのユーザー名などのプロファイルを取得します。(メインアカウントアクセスログインはログイン名を取得し、RAM ユーザーログインはユーザープリンシパル名と表示名を取得します。)

OAuth アプリケーションシークレットを作成して保存します。
重要[アプリケーション ID] と [AppSecretValue] を記録します。これらは、後続の操作で kuberay 名前空間にシークレットを作成するときに使用されます。
クラスタに接続し、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 パラメーターを構成する
KubeRay コンポーネントをインストールします。
詳細については、「KubeRay コンポーネントのインストール」をご参照ください。
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 構成の例を以下に示します。
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 アプリケーションを作成する」をご参照ください。
