4.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를 활성화하려면 관리자가 먼저 4.12.1절. “4.15 이전의 OpenShift 버전에 대한 액세스 활성화” 를 통해 클러스터에서 /dev/fuse 액세스를 활성화해야 합니다.

/dev/fuse 장치는 기본적으로 사용 가능하므로 OpenShift 버전 4.15 이상에는 필요하지 않습니다. 릴리스 정보를 참조하십시오.

/dev/fuse 액세스를 활성화한 후 다음 두 가지 방법으로 fuse-overlayfs를 활성화할 수 있습니다.

  1. 클러스터 내의 모든 사용자 작업 공간 4.12.2절. “모든 작업 공간에 fuse-overlayfs 활성화”을 참조하십시오.
  2. 특정 사용자에게 속한 작업 공간의 경우 https://access.redhat.com/documentation/en-us/red_hat_openshift_dev_spaces/3.18/html-single/user_guide/index#end-user-guide:using-the-fuse-overlay-storage-driver 을 참조하십시오.

4.12.1. 4.15 이전의 OpenShift 버전에 대한 액세스 활성화

fuse-overlayfs를 사용하려면 먼저 작업 공간 컨테이너에서 /dev/fuse 에 액세스할 수 있도록 해야 합니다.

참고

/dev/fuse 장치를 기본적으로 사용할 수 있으므로 OpenShift 버전 4.15 이상에는 이 절차가 필요하지 않습니다. 릴리스 정보를 참조하십시오.

주의

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.0,4.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 리소스를 적용하면 변경 사항이 적용되면 작업자 역할이 있는 각 노드에 대해 예약이 일시적으로 비활성화됩니다. 노드 상태를 확인합니다.

    $ 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. 작업자 역할의 모든 노드의 상태가 Ready 이면 다음 주석이 있는 모든 Pod에서/dev/fuse 를 사용할 수 있습니다.

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

검증 단계

  1. 작업자 역할이 있는 노드의 이름을 가져옵니다.

    $ oc get nodes
    Copy to Clipboard Toggle word wrap
  2. 작업자 노드에 대한 oc 디버그 세션을 엽니다.

    $ 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/en-us/red_hat_openshift_dev_spaces/3.18/html-single/user_guide/index#end-user-guide:using-the-fuse-overlay-storage-driver 에 따라 Podman 및 Buildah의 fuse-overlayfs 스토리지 드라이버를 사용하도록 기존 작업 공간을 업데이트할 수 있습니다.

4.12.2. 모든 작업 공간에 fuse-overlayfs 활성화

해당 컨테이너를 사용하는 모든 작업 공간에 fuse-overlayfs를 사용하도록 작업 공간의 컨테이너 진입점 스크립트 구성에 대해 알아봅니다.

UDI(Universal Developer Image)에는 기본적으로 필요한 구성이 이미 포함되어 있습니다. 그러나 Podman 5.x로 인해 사용자 지정 이미지를 사용하는 경우 현재 사용자가 /home/user/.config 폴더를 소유해야 하는 경우 스크립트를 수동으로 구성해야 합니다.

사전 요구 사항

프로세스

  1. 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
    참고

    OpenShift 버전 4.14 이하의 경우 io.openshift.podman-fuse: "" 주석도 필요합니다.

  2. 선택 사항: 작업 공간 컨테이너에 사용자 지정 이미지를 사용하는 경우 /home/user/.config 폴더를 생성하고 진입점을 통해 런타임에서 storage.conf 파일을 구성합니다. 이렇게 하려면 이미지를 빌드하기 전에 작업 공간 컨테이너 이미지의 진입점 스크립트에 다음을 추가합니다. 진입점에 /home/user/.config 폴더를 생성하면 이미지 빌드 시 알 수 없는 현재 사용자가 폴더를 소유하게 됩니다.

    # Configure container builds to use vfs or fuse-overlayfs
    if [ ! -d "${HOME}/.config/containers" ]; then
      mkdir -p ${HOME}/.config/containers
      if [ -c "/dev/fuse" ] && [ -f "/usr/bin/fuse-overlayfs" ]; then
        (echo '[storage]';echo 'driver = "overlay"';echo '[storage.options.overlay]';echo 'mount_program = "/usr/bin/fuse-overlayfs"') > ${HOME}/.config/containers/storage.conf
      else
        (echo '[storage]';echo 'driver = "vfs"') > "${HOME}"/.config/containers/storage.conf
      fi
    fi
    Copy to Clipboard Toggle word wrap

    이렇게 하면 /home/user/.config 가 아직 존재하지 않는 경우 폴더가 생성되어 사용자가 소유합니다. 예를 들어 /home/user/.config 가 영구 볼륨에 저장된 경우 이미 존재할 수 있습니다.

  3. 작업 영역을 시작하고 /home/user/.config 의 소유자가 user 인지 확인합니다.

    $ ls -la /home/user
    Copy to Clipboard Toggle word wrap

    출력 예:

    ...
    drwxrwsr-x.  3 user 1000660000   24 Dec 24 15:40 .config
    Copy to Clipboard Toggle word wrap
  4. 스토리지 드라이버가 오버레이 인지 확인합니다.

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

    출력 예:

    graphDriverName: overlay
      overlay.mount_program:
        Executable: /usr/bin/fuse-overlayfs
        Package: fuse-overlayfs-1.14-1.el9.x86_64
          fuse-overlayfs: version 1.13-dev
      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은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2025 Red Hat