8.6. ノードでの Linux cgroup バージョンの設定
デフォルトでは、OpenShift Container Platform はクラスターで Linux コントロールグループバージョン 1 (cgroup v1) を使用します。必要に応じて、node.config
オブジェクトを編集して、Linux コントロールグループバージョン 2 (cgroup v2) に切り替えることができます。OpenShift Container Platform で cgroup v2 を有効にすると、クラスター内のすべての cgroup バージョン 1 コントローラーおよび階層が無効になります。
cgroup v2 は、Linux cgroup API の現行バージョンです。cgroup v2 では、統一された階層、安全なサブツリー委譲、Pressure Stall Information 等の新機能、および強化されたリソース管理および分離など、cgroup v1 に対していくつかの改善が行われています。ただし、cgroup v2 には、cgroup v1 とは異なる CPU、メモリー、および I/O 管理特性があります。したがって、一部のワークロードでは、cgroup v2 を実行するクラスター上のメモリーまたは CPU 使用率にわずかな違いが発生する可能性があります。
- cgroup ファイルシステムに依存するサードパーティーの監視およびセキュリティーエージェントを実行している場合は、エージェントを cgroup v2 をサポートするバージョンに更新します。
- cgroup v2 を設定し、Pod とコンテナーを監視するスタンドアロンデーモンセットとして cAdvisor を実行している場合は、cAdvisor を v0.43.0 以降に更新します。
Java アプリケーションをデプロイする場合は、次のパッケージなど、cgroup v2 を完全にサポートするバージョンを使用してください。
- OpenJDK/HotSpot: jdk8u372、11.0.16、15 以降
- 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 v1 です。
現在、CPU 負荷分散の無効化は cgroup v2 ではサポートされていません。その結果、cgroup v2 が有効になっている場合は、パフォーマンスプロファイルから望ましい動作が得られない可能性があります。パフォーマンスプロファイルを使用している場合は、cgroup v2 を有効にすることは推奨されません。
前提条件
- OpenShift Container Platform クラスター (バージョン 4.12 以降) が実行中。
- 管理者権限を持つユーザーとしてクラスターにログインしている。
手順
ノードで cgroup v2 を有効にします。
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
- cgroup v2 を有効にするには
v2
を指定し、cgroup v1 にはv1
を指定します。
検証
マシン設定をチェックして、新しいマシン設定が追加されたことを確認します。
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 v1 の出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cgroup v2 の出力例
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 v1 の出力例
tmp2fs
tmp2fs
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cgroup v2 の出力例
cgroup2fs
cgroup2fs
Copy to Clipboard Copied! Toggle word wrap Toggle overflow