3.12. fuse-overlayfs 구성
기본적으로 UBI(Universal Developer Image)에는 작업 공간 내에서 컨테이너 이미지를 빌드하고 내보내는 데 사용할 수 있는 Podman 및 Buildah가 포함되어 있습니다. 그러나 UDI의 Podman 및 Buildah는 COW(Copy-On-Write) 지원을 제공하지 않는 vfs
스토리지 드라이버를 사용하도록 구성됩니다. 보다 효율적인 이미지 관리를 위해 루트 없는 환경에서 COW(Copy-On-Write)를 지원하는 fuse-overlayfs 스토리지 드라이버를 사용하십시오.
4.15 이전 버전의 OpenShift의 작업 공간에 fuse-overlayfs를 활성화하려면 관리자가 먼저 3.12.1절. “4.15 이전의 OpenShift 버전에 대한 액세스 활성화” 를 통해 클러스터에서 /dev/fuse
액세스를 활성화해야 합니다.
/dev/fuse
장치는 기본적으로 사용 가능하므로 OpenShift 버전 4.15 이상에는 필요하지 않습니다. 릴리스 정보를 참조하십시오.
/dev/fuse
액세스를 활성화한 후 다음 두 가지 방법으로 fuse-overlayfs를 활성화할 수 있습니다.
- 클러스터 내의 모든 사용자 작업 공간 3.12.2절. “모든 작업 공간에 fuse-overlayfs 활성화”을 참조하십시오.
- 특정 사용자에게 속한 작업 공간의 경우 https://access.redhat.com/documentation/en-us/red_hat_openshift_dev_spaces/3.16/html-single/user_guide/index#end-user-guide:using-the-fuse-overlay-storage-driver 을 참조하십시오.
3.12.1. 4.15 이전의 OpenShift 버전에 대한 액세스 활성화
fuse-overlayfs를 사용하려면 먼저 작업 공간 컨테이너에서 /dev/fuse
에 액세스할 수 있도록 해야 합니다.
/dev/fuse
장치를 기본적으로 사용할 수 있으므로 OpenShift 버전 4.15 이상에는 이 절차가 필요하지 않습니다. 릴리스 정보를 참조하십시오.
OpenShift 클러스터에서 MachineConfig
리소스를 생성하는 것은 클러스터에 대한 고급 시스템 수준의 변경을 수행하기 때문에 잠재적으로 위험한 작업입니다.
자세한 내용 및 가능한 위험은 MachineConfig 문서를 참조하십시오.
사전 요구 사항
프로세스
OpenShift 클러스터 유형(단일 노드 클러스터 또는 별도의 컨트롤 플레인 및 작업자 노드가 있는 다중 노드 클러스터)에 따라 환경 변수를 설정합니다.
단일 노드 클러스터의 경우 다음을 설정합니다.
$ NODE_ROLE=master
다중 노드 클러스터의 경우 다음을 설정합니다.
$ NODE_ROLE=worker
OpenShift Butane 구성 버전의 환경 변수를 설정합니다. 이 변수는 OpenShift 클러스터의 메이저 및 마이너 버전입니다. 예를 들면
4.12.0
,4.13.0
또는4.14.0
입니다.$ VERSION=4.12.0
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
MachineConfig
리소스를 적용하면 변경 사항이 적용되면작업자
역할이 있는 각 노드에 대해 예약이 일시적으로 비활성화됩니다. 노드 상태를 확인합니다.$ 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.12.1.1. 작업 공간 내에서 Podman 및 Buildah에 fuse-overlayfs 사용
사용자는 https://access.redhat.com/documentation/en-us/red_hat_openshift_dev_spaces/3.16/html-single/user_guide/index#end-user-guide:using-the-fuse-overlay-storage-driver 에 따라 Podman 및 Buildah의 fuse-overlayfs 스토리지 드라이버를 사용하도록 기존 작업 공간을 업데이트할 수 있습니다.
3.12.2. 모든 작업 공간에 fuse-overlayfs 활성화
사전 요구 사항
- 3.12.1절. “4.15 이전의 OpenShift 버전에 대한 액세스 활성화” 섹션이 완료되었습니다. 이는 OpenShift 버전 4.15 이상에는 필요하지 않습니다.
-
대상 OpenShift 클러스터에 대한 관리 권한이 있는 활성
oc
세션. CLI 시작하기를 참조하십시오.
프로세스
모든 사용자 작업 공간에 대해
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"
주의이 ConfigMap을 생성하면 실행 중인 모든 작업 공간이 다시 시작됩니다.
CheCluster 사용자 정의 리소스의
spec.devEnvironments.workspacesPodAnnotations
필드에 필요한 주석을 설정합니다.kind: CheCluster apiVersion: org.eclipse.che/v2 spec: devEnvironments: workspacesPodAnnotations: io.kubernetes.cri-o.Devices: /dev/fuse
참고4.15 이전 OpenShift 버전의 경우
io.openshift.podman-fuse: ""
주석도 필요합니다.
검증 단계
작업 영역을 시작하고 스토리지 드라이버가
오버레이
인지 확인합니다.$ podman info | grep overlay
출력 예:
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
참고기존 작업 공간에 대해 다음 오류가 발생할 수 있습니다.
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
이 경우 오류 메시지에 언급된 libpod 로컬 파일을 삭제합니다.