Cgroups v2環境下でのJava Containerの動作

最近 cgroups v2ベースの Kubernetes 1.24 を評価していたところ、どうも Java ベースのコンテナのメモリ使用量が多い。 同じコンテナなのに、以前のバージョンのKubernetes環境下よりメモリ使用量が多く、同じ設定で起動後にOOM Killedが頻発していました。
なんでかなーと調べていたところ、cgroups v2 ベースのコンテナ実行環境だと、Javaの実行環境がリソース情報を正しく取得できず、CPUやメモリの調整が狂うらしいことが分かりました。

[JDK-8230305] Cgroups v2: Container awareness - Java Bug System

これに対応した JavaJava 15 以降か、バックポートされた Java 11.0.16 とのこと。
うーん、結構前からあった問題らしいのですが、知らなかった・・・・。しかも、バックポートされたバージョンを見る限り、対応は結構最近みたいです。この問題が cgroups v2に起因する問題だとたどり着くのに時間がかかった oz..

現状、最新の Kubernetes の cgroups v2 環境下でJava コンテナを動かしたい人は、ベース環境をLTSであるJava 17にしたほうが無難なようです。
あと、Javaが多い環境だと、Kubernetesのバージョンアップも注意が必要です。