4.12. fuse-overlayfs の設定


デフォルトでは、Universal Developer Image (UDI) には、ワークスペース内でコンテナーイメージをビルドおよびプッシュするために使用できる Podman と Buildah が含まれています。ただし、UDI の Podman と Buildah は、コピーオンライトのサポートを提供しない vfs ストレージドライバーを使用するように設定されています。より効率的なイメージ管理を行うには、ルートレス環境でコピーオンライトをサポートする fuse-overlayfs ストレージドライバーを使用します。

OpenShift バージョン 4.15 より前のワークスペースで fuse-overlayfs を有効にするには、管理者はまず 「OpenShift バージョン 4.15 より前のバージョンへのアクセスを有効にする」 の手順でクラスター上の /dev/fuse アクセスを有効にする必要があります。

OpenShift バージョン 4.15 以降では、/dev/fuse デバイスがデフォルトで使用できるため、これは必要ありません。リリースノート を参照してください。

/dev/fuse アクセスを有効にした後、fuse-overlayfs は次の 2 つの方法で有効にできます。

  1. クラスター内のすべてのユーザーワークスペースの場合、「すべてのワークスペースで fuse-overlayfs を有効にする」 を参照してください。
  2. 特定のユーザーに属するワークスペースの場合、https://access.redhat.com/documentation/ja-jp/red_hat_openshift_dev_spaces/3.20/html-single/user_guide/index#end-user-guide:using-the-fuse-overlay-storage-driver を参照してください。

4.12.1. OpenShift バージョン 4.15 より前のバージョンへのアクセスを有効にする

fuse-overlayfs を使用するには、まず /dev/fuse をワークスペースコンテナーからアクセスできるようにする必要があります。

注記

OpenShift バージョン 4.15 以降では、/dev/fuse デバイスがデフォルトで使用できるため、この手順は必要ありません。リリースノート を参照してください。

警告

OpenShift クラスター上で MachineConfig リソースを作成することは、クラスターに高度なシステムレベルの変更を加えることになるため、潜在的に危険なタスクです。

詳細および考えられるリスクは、MachineConfig のドキュメント を参照してください。

前提条件

  • 使用しているオペレーティングシステムに Butane ツール (butane) がインストールされている。
  • 宛先 OpenShift クラスターへの管理権限を持つアクティブな oc セッション。CLI のスタートガイド を参照してください。

手順

  1. OpenShift クラスターのタイプ (シングルノードクラスター、または個別のコントロールプレーンとワーカーノードを持つマルチノードクラスター) に基づいて環境変数を設定します。

    • シングルノードクラスターの場合は、次のように設定します。

      $ NODE_ROLE=master
      Copy to Clipboard Toggle word wrap
    • マルチノードクラスターの場合は、次のように設定します。

      $ NODE_ROLE=worker
      Copy to Clipboard Toggle word wrap
  2. OpenShift Butane 設定バージョンの環境変数を設定します。この変数は、OpenShift クラスターのメジャーバージョンとマイナーバージョンです。たとえば、4.12.04.13.0、または 4.14.0 です。

    $ VERSION=4.12.0
    Copy to Clipboard Toggle word wrap
  3. NODE_ROLE ノードに 99-podman-fuse という名前のドロップイン CRI-O 設定ファイルを作成する MachineConfig リソースを作成します。この設定ファイルにより、特定の Pod が /dev/fuse デバイスにアクセスできるようになります。

    cat << EOF | butane | oc apply -f -
    variant: openshift
    version: ${VERSION}
    metadata:
      labels:
        machineconfiguration.openshift.io/role: ${NODE_ROLE}
      name: 99-podman-dev-fuse-${NODE_ROLE}
    storage:
      files:
      - path: /etc/crio/crio.conf.d/99-podman-fuse 
    1
    
        mode: 0644
        overwrite: true
        contents: 
    2
    
          inline: |
            [crio.runtime.workloads.podman-fuse] 
    3
    
            activation_annotation = "io.openshift.podman-fuse" 
    4
    
            allowed_annotations = [
              "io.kubernetes.cri-o.Devices" 
    5
    
            ]
            [crio.runtime]
            allowed_devices = ["/dev/fuse"] 
    6
    
    EOF
    Copy to Clipboard Toggle word wrap
    1
    CRI-O の新しいドロップイン設定ファイルへの絶対ファイルパス。
    2
    新しいドロップイン設定ファイルの内容。
    3
    podman-fuse ワークロードを定義します。
    4
    podman-fuse ワークロード設定をアクティブにする Pod アノテーション。
    5
    podman-fuse ワークロードが処理できるアノテーションのリスト。
    6
    ユーザーが io.kubernetes.cri-o.Devices アノテーションを使用して指定できるホスト上のデバイスのリスト。
  4. MachineConfig リソースを適用した後、変更が適用されると、worker ロールを持つ各ノードのスケジュール設定が一時的に無効になります。ノードのステータスを表示します。

    $ oc get nodes
    Copy to Clipboard Toggle word wrap

    出力例:

    NAME                           STATUS                     ROLES    AGE   VERSION
    ip-10-0-136-161.ec2.internal   Ready                      worker   28m   v1.27.9
    ip-10-0-136-243.ec2.internal   Ready                      master   34m   v1.27.9
    ip-10-0-141-105.ec2.internal   Ready,SchedulingDisabled   worker   28m   v1.27.9
    ip-10-0-142-249.ec2.internal   Ready                      master   34m   v1.27.9
    ip-10-0-153-11.ec2.internal    Ready                      worker   28m   v1.27.9
    ip-10-0-153-150.ec2.internal   Ready                      master   34m   v1.27.9
    Copy to Clipboard Toggle word wrap
  5. worker ロールを持つすべてのノードのステータスが Ready になると、次のアノテーションを持つすべての Pod で /dev/fuse が利用できるようになります。

    io.openshift.podman-fuse: ''
    io.kubernetes.cri-o.Devices: /dev/fuse
    Copy to Clipboard Toggle word wrap

検証手順

  1. worker ロールを持つノードの名前を取得します。

    $ oc get nodes
    Copy to Clipboard Toggle word wrap
  2. ワーカーノードへの oc debug セッションを開きます。

    $ oc debug node/<nodename>
    Copy to Clipboard Toggle word wrap
  3. 99-podman-fuse という名前の新しい CRI-O 設定ファイルが存在することを確認します。

    sh-4.4# stat /host/etc/crio/crio.conf.d/99-podman-fuse
    Copy to Clipboard Toggle word wrap

4.12.1.1. ワークスペース内で Podman と Buildah への fuse-overlayfs の使用

https://access.redhat.com/documentation/ja-jp/red_hat_openshift_dev_spaces/3.20/html-single/user_guide/index#end-user-guide:using-the-fuse-overlay-storage-driver に従って、既存のワークスペースを更新し、Podman および Buildah 用の fuse-overlayfs ストレージドライバーを使用できます。

4.12.2. すべてのワークスペースで fuse-overlayfs を有効にする

前提条件

手順

  1. すべてのユーザーワークスペースに storage.conf ファイルをマウントする ConfigMap を作成します。

    kind: ConfigMap
    apiVersion: v1
    metadata:
      name: fuse-overlay
      namespace: openshift-devspaces
      labels:
        app.kubernetes.io/part-of: che.eclipse.org
        app.kubernetes.io/component: workspaces-config
      annotations:
        controller.devfile.io/mount-as: subpath
        controller.devfile.io/mount-path: /home/user/.config/containers/
    data:
      storage.conf: |
        [storage]
        driver = "overlay"
    
        [storage.options.overlay]
        mount_program="/usr/bin/fuse-overlayfs"
    Copy to Clipboard Toggle word wrap
    警告

    この ConfigMap を作成すると、実行中のすべてのワークスペースが再起動します。

  2. CheCluster カスタムリソースの spec.devEnvironments.workspacesPodAnnotations フィールドに必要なアノテーションを設定します。

    kind: CheCluster
    apiVersion: org.eclipse.che/v2
    spec:
      devEnvironments:
        workspacesPodAnnotations:
          io.kubernetes.cri-o.Devices: /dev/fuse
    Copy to Clipboard Toggle word wrap
    注記

    4.15 より前のバージョンの OpenShift では、io.openshift.podman-fuse: "" アノテーションも必要です。

検証手順

  1. ワークスペースを起動し、ストレージドライバーが overlay であることを確認します。

    $ podman info | grep overlay
    Copy to Clipboard Toggle word wrap

    出力例:

    graphDriverName: overlay
      overlay.mount_program:
        Executable: /usr/bin/fuse-overlayfs
        Package: fuse-overlayfs-1.12-1.module+el8.9.0+20326+387084d0.x86_64
          fuse-overlayfs: version 1.12
      Backing Filesystem: overlayfs
    Copy to Clipboard Toggle word wrap
    注記

    既存のワークスペースで、次のエラーが発生する可能性があります。

    ERRO[0000] User-selected graph driver "overlay" overwritten by graph driver "vfs" from database - delete libpod local files ("/home/user/.local/share/containers/storage") to resolve.  May prevent use of images created by other tools
    Copy to Clipboard Toggle word wrap

    この場合、エラーメッセージに記載されているように libpod ローカルファイルを削除します。

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2025 Red Hat