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 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 です。

注記

Telco では、cgroups v2 サポートがないため、低レイテンシー、リアルタイム、および Data Plane Development Kit (DPDK)ワークロードに PerformanceProfile を使用するクラスターは自動的に cgroups v1 に戻ります。PerformanceProfile を使用している場合は、cgroup v2 を有効にすることはできません。

前提条件

  • OpenShift Container Platform クラスター (バージョン 4.12 以降) が実行中。
  • 管理者権限を持つユーザーとしてクラスターにログインしている。

手順

  1. ノードで cgroup v1 を有効にします。

    1. node.config オブジェクトを編集します。

      $ oc edit nodes.config/cluster
      Copy to Clipboard
    2. spec.cgroupMode パラメーターを編集します。

      node.config オブジェクトの例

      apiVersion: config.openshift.io/v1
      kind: Node
      metadata:
        annotations:
          include.release.openshift.io/ibm-cloud-managed: "true"
          include.release.openshift.io/self-managed-high-availability: "true"
          include.release.openshift.io/single-node-developer: "true"
          release.openshift.io/create-only: "true"
        creationTimestamp: "2022-07-08T16:02:51Z"
        generation: 1
        name: cluster
        ownerReferences:
        - apiVersion: config.openshift.io/v1
          kind: ClusterVersion
          name: version
          uid: 36282574-bf9f-409e-a6cd-3032939293eb
        resourceVersion: "1865"
        uid: 0c0f7a4c-4307-4187-b591-6155695ac85b
      spec:
        cgroupMode: "v1" 
      1
      
      ...
      Copy to Clipboard

      1
      v1 を指定すると、cgroup v1 または cgroup v2 の v2 が有効になります。

検証

  1. マシン設定をチェックして、新しいマシン設定が追加されたことを確認します。

    $ oc get mc
    Copy to Clipboard

    出力例

    NAME                                               GENERATEDBYCONTROLLER                      IGNITIONVERSION   AGE
    00-master                                          52dd3ba6a9a527fc3ab42afac8d12b693534c8c9   3.2.0             33m
    00-worker                                          52dd3ba6a9a527fc3ab42afac8d12b693534c8c9   3.2.0             33m
    01-master-container-runtime                        52dd3ba6a9a527fc3ab42afac8d12b693534c8c9   3.2.0             33m
    01-master-kubelet                                  52dd3ba6a9a527fc3ab42afac8d12b693534c8c9   3.2.0             33m
    01-worker-container-runtime                        52dd3ba6a9a527fc3ab42afac8d12b693534c8c9   3.2.0             33m
    01-worker-kubelet                                  52dd3ba6a9a527fc3ab42afac8d12b693534c8c9   3.2.0             33m
    97-master-generated-kubelet                        52dd3ba6a9a527fc3ab42afac8d12b693534c8c9   3.2.0             33m
    99-worker-generated-kubelet                        52dd3ba6a9a527fc3ab42afac8d12b693534c8c9   3.2.0             33m
    99-master-generated-registries                     52dd3ba6a9a527fc3ab42afac8d12b693534c8c9   3.2.0             33m
    99-master-ssh                                                                                 3.2.0             40m
    99-worker-generated-registries                     52dd3ba6a9a527fc3ab42afac8d12b693534c8c9   3.2.0             33m
    99-worker-ssh                                                                                 3.2.0             40m
    rendered-master-23d4317815a5f854bd3553d689cfe2e9   52dd3ba6a9a527fc3ab42afac8d12b693534c8c9   3.2.0             10s 
    1
    
    rendered-master-23e785de7587df95a4b517e0647e5ab7   52dd3ba6a9a527fc3ab42afac8d12b693534c8c9   3.2.0             33m
    rendered-worker-5d596d9293ca3ea80c896a1191735bb1   52dd3ba6a9a527fc3ab42afac8d12b693534c8c9   3.2.0             33m
    rendered-worker-dcc7f1b92892d34db74d6832bcc9ccd4   52dd3ba6a9a527fc3ab42afac8d12b693534c8c9   3.2.0             10s
    Copy to Clipboard

    1
    予想どおり、新しいマシン設定が作成されます。
  2. 新しい kernelArguments が新しいマシン設定に追加されたことを確認します。

    $ oc describe mc <name>
    Copy to Clipboard

    cgroup v2 の出力例

    apiVersion: machineconfiguration.openshift.io/v1
    kind: MachineConfig
    metadata:
      labels:
        machineconfiguration.openshift.io/role: worker
      name: 05-worker-kernelarg-selinuxpermissive
    spec:
      kernelArguments:
        systemd_unified_cgroup_hierarchy=1 
    1
    
        cgroup_no_v1="all" 
    2
    
        psi=0
    Copy to Clipboard

    1
    systemd で cgroup v2 を有効にします。
    2
    cgroup v1 を無効にします。

    cgroup v1 の出力例

    apiVersion: machineconfiguration.openshift.io/v1
    kind: MachineConfig
    metadata:
      labels:
        machineconfiguration.openshift.io/role: worker
      name: 05-worker-kernelarg-selinuxpermissive
    spec:
      kernelArguments:
        systemd.unified_cgroup_hierarchy=0 
    1
    
        systemd.legacy_systemd_cgroup_controller=1 
    2
    
        psi=1 
    3
    Copy to Clipboard

    1
    cgroup v2 を無効にします。
    2
    systemd で cgroup v1 を有効にします。
    3
    Linux Pressure Stall Information (PSI) 機能を有効にします。
  3. ノードをチェックして、ノードのスケジューリングが無効になっていることを確認します。これは、変更が適用されていることを示しています。

    $ oc get nodes
    Copy to Clipboard

    出力例

    NAME                                       STATUS                     ROLES    AGE   VERSION
    ci-ln-fm1qnwt-72292-99kt6-master-0         Ready,SchedulingDisabled   master   58m   v1.27.3
    ci-ln-fm1qnwt-72292-99kt6-master-1         Ready                      master   58m   v1.27.3
    ci-ln-fm1qnwt-72292-99kt6-master-2         Ready                      master   58m   v1.27.3
    ci-ln-fm1qnwt-72292-99kt6-worker-a-h5gt4   Ready,SchedulingDisabled   worker   48m   v1.27.3
    ci-ln-fm1qnwt-72292-99kt6-worker-b-7vtmd   Ready                      worker   48m   v1.27.3
    ci-ln-fm1qnwt-72292-99kt6-worker-c-rhzkv   Ready                      worker   48m   v1.27.3
    Copy to Clipboard

  4. ノードが Ready 状態に戻ったら、そのノードのデバッグセッションを開始します。

    $ oc debug node/<node_name>
    Copy to Clipboard
  5. /host をデバッグシェル内のルートディレクトリーとして設定します。

    sh-4.4# chroot /host
    Copy to Clipboard
  6. sys/fs/cgroup/cgroup2fs または sys/fs/cgroup/tmpfs ファイルがノードに存在することを確認します。

    $ stat -c %T -f /sys/fs/cgroup
    Copy to Clipboard

    cgroup v2 の出力例

    cgroup2fs
    Copy to Clipboard

    cgroup v1 の出力例

    tmpfs
    Copy to Clipboard

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat