2.3.2. CRI-O パラメーターを編集するための ContainerRuntimeConfig CR の作成

ContainerRuntimeConfig カスタムリソース定義 (CRD) は、OpenShift Container Platform CRI-O ランタイムに関連する設定を変更するための体系的な方法を提供します。ContainerRuntimeConfig カスタムリソース (CR) を使用して、必要な設定値を選択し、MCO は crio.conf および storage.conf 設定ファイルの再ビルドを処理します。

ContainerRuntimeConfig CR を使用して以下の設定を変更することができます。

  • PIDs limit: pidsLimit パラメーターは、コンテナーで許可されるプロセスの最大数である CRI-O pids_limit パラメーターを設定します。デフォルトは 1024 (pids_limit = 1024) です。
  • Log level: logLevel パラメーターは CRI-O log_level パラメーターを設定します。これはログメッセージの詳細レベルです。デフォルトは info (log_level = info) です。他のオプションには、fatalpanicerrorwarndebug、および trace が含まれます。
  • Overlay size: overlaySize パラメーターは、コンテナーイメージの最大サイズである CRI-O Overlay ストレージドライバーの size パラメーターを設定します。
  • Maximum log size: logSizeMax パラメーターは CRI-O log_size_max パラメーターを設定します。これは、コンテナーログファイルに許可される最大サイズです。デフォルトは無制限 (log_size_max = -1) です。これが正数に設定される場合、8192 以上にする必要があり、ConMon の読み取りバッファーよりも小さくすることはできません。ConMon は、単一コンテナーのコンテナーマネージャー (Podman、CRI-O など) と OCI ランタイム (runc または crun など) との間の通信を監視するプログラムです。

以下の手順では、ContainerRuntimeConfig CR を使用して CRI-O 設定を変更する方法を説明します。

手順

  1. pidsLimit を 2048 に引き上げるには、 logLeveldebug に、 overlaySize を 8 GB に設定し、その設定が含まれる CR ファイル (例: overlay-size.yaml) を作成します。

    $ cat << EOF > /tmp/overlay-size.yaml
    apiVersion: machineconfiguration.openshift.io/v1
    kind: ContainerRuntimeConfig
    metadata:
     name: overlay-size
    spec:
     machineConfigPoolSelector:
       matchLabels:
         custom-crio: overlay-size
     containerRuntimeConfig:
       pidsLimit: 2048
       logLevel: debug
       overlaySize: 8G
    EOF
  2. ContainerRuntimeConfig オブジェクト設定を適用するには、以下を実行します。

    $ oc create -f /tmp/overlay-size.yaml
  3. YAML ファイルが設定を適用したことを確認するには、次のコマンドを実行します。

    $ oc get ContainerRuntimeConfig
    NAME           AGE
    overlay-size   3m19s
  4. worker などのマシンのプールを編集するには、以下のコマンドを実行してマシン設定プールを開きます。

    $ oc edit machineconfigpool worker
  5. 新規 containerruntime オブジェクトが machineconfigs の下に表示されることを確認します。

    $ oc get machineconfigs | grep containerrun
    99-worker-generated-containerruntime   2c9371fbb673b97a6fe8b1c52691999ed3a1bfc2  3.1.0  31s
  6. すべてが準備状態になるまで、マシンに展開される変更についてマシン設定プールをモニターします。

    $ oc get mcp worker

    出力例

    NAME    CONFIG               UPDATED  UPDATING  DEGRADED  MACHINECOUNT  READYMACHINECOUNT  UPDATEDMACHINECOUNT  DEGRADEDMACHINECOUNT  AGE
    worker  rendered-worker-169  False    True      False     3             1                  1                    0                     9h

  7. ワーカーノードに対して oc debug セッションを開き、chroot/host を実行します。
  8. 以下を実行して変更を確認します。

    $ crio config | egrep 'log_level|pids_limit'

    出力例

    pids_limit = 2048
    log_level = "debug"

    $ head -n 7 /etc/containers/storage.conf

    出力例

    [storage]
      driver = "overlay"
      runroot = "/var/run/containers/storage"
      graphroot = "/var/lib/containers/storage"
      [storage.options]
        additionalimagestores = []
        size = "8G"