3.11. Fuse-overlayfs の設定
デフォルトでは、Universal Developer Image (UDI) には、ワークスペース内でコンテナーイメージをビルドおよびプッシュするために使用できる Podman と Buildah が含まれています。ただし、UDI の Podman と Buildah は、コピーオンライトのサポートを提供しない vfs ストレージドライバーを使用するように設定されています。より効率的なイメージ管理を行うには、ルートレス環境でコピーオンライトをサポートする Fuse-overlayfs ストレージドライバーを使用します。
3.11.1. OpenShift の/dev/Fuse へのコンテナーアクセスを有効にする リンクのコピーリンクがクリップボードにコピーされました!
Fuse-overlayfs を使用するには、まず /dev/Fuse を ワークスペースコンテナーからアクセスできるようにする必要があります。
OpenShift バージョン 4.15 以降では、/dev/Fuse デバイスがデフォルトで使用できるため、この手順は必要ありません。リリースノートを 参照してください。
OpenShift クラスター上で MachineConfig リソースを作成することは、クラスターに高度なシステムレベルの変更を加えることになるため、潜在的に危険なタスクです。
詳細および考えられるリスクについては、MachineConfig のドキュメント を参照してください。
前提条件
-
使用しているオペレーティングシステムに Butane ツール (
butane) がインストールされています。 -
宛先 OpenShift クラスターへの管理権限を持つアクティブな
ocセッション。CLI の使用開始を 参照してください。
手順
OpenShift クラスターのタイプ (シングルノードクラスター、または個別のコントロールプレーンとワーカーノードを持つマルチノードクラスター) に基づいて環境変数を設定します。
シングルノードクラスターの場合は、次のように設定します。
$ NODE_ROLE=masterマルチノードクラスターの場合は、次のように設定します。
$ NODE_ROLE=worker
OpenShift Butane 設定バージョンの環境変数を設定します。この変数は、OpenShift クラスターのメジャーバージョンとマイナーバージョンです。たとえば、
4.12.0、4.13.0、または4.14.0です。$ VERSION=4.12.0NODE_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-fuse1 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 EOFMachineConfigリソースを適用した後、変更が適用されると、ワーカーロールを持つ各ノードのスケジュール設定が一時的に無効になります。ノードのステータスを表示します。$ oc get nodes出力例:
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ワーカーロールを持つすべてのノードのステータスがReady になると、次のアノテーションを持つすべての Pod で/dev/Fuseが利用できるようになります。io.openshift.podman-fuse: '' io.kubernetes.cri-o.Devices: /dev/fuse
検証手順
ワーカーロールを持つノードの名前を取得します。$ oc get nodesワーカーノードへの
oc デバッグセッションを開きます。$ oc debug node/<nodename>99-podman-Fuseという名前の新しい CRI-O 設定ファイルが存在することを確認します。sh-4.4# stat /host/etc/crio/crio.conf.d/99-podman-fuse
3.11.2. ワークスペース内で Podman と Buildah に Fuse-overlayfs を使用する リンクのコピーリンクがクリップボードにコピーされました!
ユーザーは、https://access.redhat.com/documentation/ja-jp/red_hat_openshift_dev_spaces/3.12/html-single/user_guide/index#end-user-guide :using-the-Fuse-overlay-storage-driver に従って、既存のワークスペースを更新し、Podman および Buildah 用の Fuse-overlayfs ストレージドライバーを使用できます。