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 つの方法で有効にできます。
- クラスター内のすべてのユーザーワークスペースの場合、「すべてのワークスペースで 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 を参照してください。
4.12.1. OpenShift バージョン 4.15 より前のバージョンへのアクセスを有効にする リンクのコピーリンクがクリップボードにコピーされました!
fuse-overlayfs を使用するには、まず /dev/fuse
をワークスペースコンテナーからアクセスできるようにする必要があります。
OpenShift バージョン 4.15 以降では、/dev/fuse
デバイスがデフォルトで使用できるため、この手順は必要ありません。リリースノート を参照してください。
OpenShift クラスター上で MachineConfig
リソースを作成することは、クラスターに高度なシステムレベルの変更を加えることになるため、潜在的に危険なタスクです。
詳細および考えられるリスクは、MachineConfig のドキュメント を参照してください。
前提条件
-
使用しているオペレーティングシステムに Butane ツール (
butane
) がインストールされている。 -
宛先 OpenShift クラスターへの管理権限を持つアクティブな
oc
セッション。CLI のスタートガイド を参照してください。
手順
OpenShift クラスターのタイプ (シングルノードクラスター、または個別のコントロールプレーンとワーカーノードを持つマルチノードクラスター) に基づいて環境変数を設定します。
シングルノードクラスターの場合は、次のように設定します。
NODE_ROLE=master
$ NODE_ROLE=master
Copy to Clipboard Copied! Toggle word wrap Toggle overflow マルチノードクラスターの場合は、次のように設定します。
NODE_ROLE=worker
$ NODE_ROLE=worker
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
OpenShift Butane 設定バージョンの環境変数を設定します。この変数は、OpenShift クラスターのメジャーバージョンとマイナーバージョンです。たとえば、
4.12.0
、4.13.0
、または4.14.0
です。VERSION=4.12.0
$ VERSION=4.12.0
Copy to Clipboard Copied! Toggle word wrap Toggle overflow NODE_ROLE
ノードに99-podman-fuse
という名前のドロップイン CRI-O 設定ファイルを作成するMachineConfig
リソースを作成します。この設定ファイルにより、特定の Pod が/dev/fuse
デバイスにアクセスできるようになります。Copy to Clipboard Copied! Toggle word wrap Toggle overflow MachineConfig
リソースを適用した後、変更が適用されると、worker
ロールを持つ各ノードのスケジュール設定が一時的に無効になります。ノードのステータスを表示します。oc get nodes
$ oc get nodes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow worker
ロールを持つすべてのノードのステータスがReady
になると、次のアノテーションを持つすべての Pod で/dev/fuse
が利用できるようになります。io.openshift.podman-fuse: '' io.kubernetes.cri-o.Devices: /dev/fuse
io.openshift.podman-fuse: '' io.kubernetes.cri-o.Devices: /dev/fuse
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証手順
worker
ロールを持つノードの名前を取得します。oc get nodes
$ oc get nodes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ワーカーノードへの
oc debug
セッションを開きます。oc debug node/<nodename>
$ oc debug node/<nodename>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 99-podman-fuse
という名前の新しい CRI-O 設定ファイルが存在することを確認します。stat /host/etc/crio/crio.conf.d/99-podman-fuse
sh-4.4# stat /host/etc/crio/crio.conf.d/99-podman-fuse
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
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 を有効にする リンクのコピーリンクがクリップボードにコピーされました!
前提条件
- 「OpenShift バージョン 4.15 より前のバージョンへのアクセスを有効にする」 セクションを完了した。これは、OpenShift バージョン 4.15 以降には必要ありません。
-
宛先 OpenShift クラスターへの管理権限を持つアクティブな
oc
セッション。CLI のスタートガイド を参照してください。
手順
すべてのユーザーワークスペースに
storage.conf
ファイルをマウントする ConfigMap を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 警告この ConfigMap を作成すると、実行中のすべてのワークスペースが再起動します。
CheCluster カスタムリソースの
spec.devEnvironments.workspacesPodAnnotations
フィールドに必要なアノテーションを設定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記4.15 より前のバージョンの OpenShift では、
io.openshift.podman-fuse: ""
アノテーションも必要です。
検証手順
ワークスペースを起動し、ストレージドライバーが
overlay
であることを確認します。podman info | grep overlay
$ podman info | grep overlay
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記既存のワークスペースで、次のエラーが発生する可能性があります。
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
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 Copied! Toggle word wrap Toggle overflow この場合、エラーメッセージに記載されているように libpod ローカルファイルを削除します。