8.6. ノードでの Linux cgroup バージョンの設定
OpenShift Container Platform 4.14 以降、OpenShift Container Platform はクラスター内で Linux コントロールグループバージョン 2 (cgroup v2) を使用します。OpenShift Container Platform 4.13 以前で cgroup v1 を使用している場合、OpenShift Container Platform 4.14 以降に移行しても、cgroup 設定はバージョン 2 に自動的に更新されません。OpenShift Container Platform 4.14 以降の新規インストールでは、デフォルトで cgroup v2 が使用されます。ただし、インストール時に Linux コントロールグループバージョン 1 (cgroup v1) を有効にできます。
cgroup v1 は非推奨の機能です。非推奨の機能は依然として OpenShift Container Platform に含まれており、引き続きサポートされますが、この製品の今後のリリースで削除されるため、新規デプロイメントでの使用は推奨されません。
OpenShift Container Platform で非推奨となったか、削除された主な機能の最新の一覧は、OpenShift Container Platform リリースノートの 非推奨および削除された機能 セクションを参照してください。
cgroup v2 は、Linux cgroup API の現行バージョンです。cgroup v2 では、統一された階層、安全なサブツリー委譲、Pressure Stall Information 等の新機能、および強化されたリソース管理および分離など、cgroup v1 に対していくつかの改善が行われています。ただし、cgroup v2 には、cgroup v1 とは異なる CPU、メモリー、および I/O 管理特性があります。したがって、一部のワークロードでは、cgroup v2 を実行するクラスター上のメモリーまたは CPU 使用率にわずかな違いが発生する可能性があります。
必要に応じて、cgroup v1 と cgroup v2 の間で変更できます。OpenShift Container Platform で cgroup v1 を有効にすると、クラスター内のすべての cgroup v2 コントローラーと階層が無効になります。
- cgroup ファイルシステムに依存するサードパーティーの監視およびセキュリティーエージェントを実行している場合は、エージェントを cgroup v2 をサポートするバージョンに更新します。
- cgroup v2 を設定し、Pod とコンテナーを監視するスタンドアロンデーモンセットとして cAdvisor を実行している場合は、cAdvisor を v0.43.0 以降に更新します。
- Java アプリケーションをデプロイする場合は、次のパッケージなど、cgroup v2 を完全にサポートするバージョンを使用してください。 - OpenJDK/HotSpot: jdk8u372、11.0.16、15 以降
- NodeJs 20.3.0 以降
- IBM Semeru ランタイム: jdk8u345-b01、11.0.16.0、17.0.4.0、18.0.2.0 以降
- IBM SDK Java Technology Edition バージョン (IBM Java): 8.0.7.15 以降
 
8.6.1. Linux cgroup の設定
					node.config オブジェクトを編集して、Linux コントロールグループバージョン 1 (cgroup v1) または Linux コントロールグループバージョン 2 (cgroup v2) を有効にできます。デフォルトは cgroup v2 です。
				
cgroup v1 は非推奨の機能です。非推奨の機能は依然として OpenShift Container Platform に含まれており、引き続きサポートされますが、この製品の今後のリリースで削除されるため、新規デプロイメントでの使用は推奨されません。
OpenShift Container Platform で非推奨となったか、削除された主な機能の最新の一覧は、OpenShift Container Platform リリースノートの 非推奨および削除された機能 セクションを参照してください。
前提条件
- OpenShift Container Platform クラスター (バージョン 4.12 以降) が実行中。
- 管理者権限を持つユーザーとしてクラスターにログインしている。
手順
- ノードに、必要な cgroup バージョンを設定します。 - node.configオブジェクトを編集します。- oc edit nodes.config/cluster - $ oc edit nodes.config/cluster- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- spec.cgroupModeパラメーターを編集します。- node.configオブジェクトの例- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- v1を指定すると、cgroup v1 または cgroup v2 の- v2が有効になります。
 
 
検証
- マシン設定をチェックして、新しいマシン設定が追加されたことを確認します。 - oc get mc - $ oc get mc- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 出力例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- 予想どおり、新しいマシン設定が作成されます。
 
- 新しい - kernelArgumentsが新しいマシン設定に追加されたことを確認します。- oc describe mc <name> - $ oc describe mc <name>- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - cgroup v2 の出力例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - cgroup v1 の出力例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- ノードをチェックして、ノードのスケジューリングが無効になっていることを確認します。これは、変更が適用されていることを示しています。 - oc get nodes - $ oc get nodes- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 出力例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- ノードが - Ready状態に戻ったら、そのノードのデバッグセッションを開始します。- oc debug node/<node_name> - $ oc debug node/<node_name>- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- /hostをデバッグシェル内のルートディレクトリーとして設定します。- chroot /host - sh-4.4# chroot /host- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- sys/fs/cgroup/cgroup2fsまたは- sys/fs/cgroup/tmpfsファイルがノードに存在することを確認します。- stat -c %T -f /sys/fs/cgroup - $ stat -c %T -f /sys/fs/cgroup- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - cgroup v2 の出力例 - cgroup2fs - cgroup2fs- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - cgroup v1 の出力例 - tmpfs - tmpfs- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow