Red Hat で Java Platform Advocate として OpenJDK を担当している伊藤ちひろ(@chiroito)です。
この記事は、Red Hat Developerのブログ記事、Eat up fewer resources in Cryostat 2.1 with sidecar reports | Red Hat Developer の翻訳記事です。
Cryostatは、Kubernetes上でJDK Flight Recorderのデータを管理するためのツールです。Cryostatのバージョン2.1では、JDKフライトレコーディングの自動分析レポートを生成するために、サイドカーレポートコンテナを使用するオプションが導入されています。以前は、メインのCryostatコンテナがレポート生成を処理していました。レポート生成はリソース集約的な操作であり、その結果、ユーザーはピーク時のリソース要求を満たすためにCryostatコンテナを過剰に割り当てていることに気づくかもしれません。レポート生成をしていない場合、それらのリソースは逆に使用されずに終わるかもしれません。
レポート生成をサイドカーコンテナに委ねるこの新しいオプションにより、ユーザはより効率的にリソースを準備しやすくなりました。レポート作成が重要でない場合、メインの Cryostat コンテナは、Web サーバーや HTTP および JMX を介したさまざまな軽量操作を含めて、小さなリソースしか必要としません。ユーザは、レポート生成の一連の作業に基づいて、サイドカー・レポート・コンテナに適宜リソースを割り当て、そのコンテナのレプリカを任意の数だけ起動させることができます。
本記事では、Red Hat OpenShift上でCryostatを使用して分析レポート自動生成のためのサイドカーレポートコンテナレプリカを設定するプロセスについて説明します。
サイドカーコンテナを使用するための前提条件
開始するには、Cryostat Operator がインストールされた稼働中の OpenShift または Kubernetes クラスタを使用します。OpenShift または Kubernetes クラスタにまだアクセスできない場合は、Red Hat OpenShift Local を試してみてください。この記事では、Cryostat Operator と対話するために OpenShift UI を利用します。
次に、Java Management Extensions (JMX) を有効にし、Cryostat Operator と同じ名前空間で動作するように公開した、コンテナ化した Java アプリケーションをデプロイします。サンプルQuarkusアプリケーションを作成してこの要件を満たす方法の詳細については、赤帽エンジニアブログの記事『Cryostatを使用するためのJavaアプリケーションの設定 - 赤帽エンジニアブログ』を参照してください。
サイドカー・レポート・コンテナを有効にして、Cryostatリソースを作成
Cryostat Operator がインストールされると、サイドカー・レポート・コンテナのセットアップは簡単な作業になります。OpenShift Web コンソールの Installed Operators
タブにある Cryostat Operator に移動し、Cryostat リソースのインスタンスを作成します (図 1 を参照)。
図1:Cryostatリソースを作成するためにCreate instanceを選択
図2に示すように、様々な設定項目がある Create Cryostat
ページが表示されます。
図2:Cryostatリソースの設定オプション
下に移動して Report Options
を選択し、次に Resources
を選択します (図 3 を参照)。
図3:レポート生成の設定オプションを選択
次に、デプロイするレポート・サイドカー・コンテナのレプリカ数を選択し、各レプリカの Limits および Requests リソースを設定します。デフォルトのレプリカ数は0であり、メインのCryostatコンテナがサブプロセスを通じてレポート生成を処理することを意味します。このサブプロセスのデフォルトの最大ヒープサイズは200MiBですが、必要に応じてユーザが上限を調整できます。少なくとも 1 つのレポートサイドカーコンテナレプリカを要求すると、Sub Process Max Heap Size
フィールドは無視されます。
この例では、図 4 に示すレポートオプションの設定を使用して Cryostat インスタンスを作成する必要があります。
図4:Replicas、Limits、Requestsフィールドをこのように設定し、下に移動してCreateを選択
自動解析レポートを作成するには、Cryostat Web クライアントに移動します。Cryostat Operatorページの Installed Operators
から、Cryostat
タブを選択し、cryostat-sample
リソースを選択します。表示されたページで、WebクライアントのURLを確認できます(図5)。
図5:アプリケーションのURLに従って、Cryostat Webクライアントにアクセス
プロンプトが表示され、Webクライアントで認証するためのクラスタの認証情報が要求されます。ログインしたら、ターゲットアプリケーションを選択し(自作でも、上記のリンク先のサンプルQuarkusアプリケーションでも)、Recordings
タブに移動します(図6)。一定時間のカスタムフライト レコーディングを作成します。記録終了後、記録の自動分析レポートを要求します。これらのステップの詳細な手順については、Cryostatの使用に関するガイドを参照してください。
図6:自動分析レポートをリクエストすると、サイドカーコンテナでのレポート作成が開始
サイドカー・レポート・コンテナがレポート生成を処理したことを再確認するには、OpenShift コンソールに戻り、Workloads
タブの下の Pods
に移動します。ここで、sidecar レポートコンテナが含まれるポッドを見つけられます (図 7 を参照)。
図7:cryostat-sample-reportsポッドを選択します。ポッド名には、ランダムに生成された英数字の文字列も付加
次に、図 8 に示す Logs
タブに移動し、ログストリームを一時停止します。次に、繰り返される HTTP GET /health リクエストを下に移動し、サイドカー・レポート・コンテナが Cryostat メイン・コンテナからの HTTP リクエストを受信し、実行したことを確認するログ・メッセージを探します。
図8:サイドカーレポートコンテナは、生成されたレポートに対するメインのCryostatコンテナからの要求を受信し、応答
まとめ
解析レポートの自動生成にサイドカーレポートコンテナを使用することで、ユーザーはCryostat用のリソースを効率的に用意できます。Cryostatの詳細については、cryostat.ioを参照してください。質問、コメント、フィードバックは、GitHubで私たちとつながるか、私たちのメーリングリストに参加してください。
赤帽エンジニアブログでCryostatのチュートリアルをもっと見る。