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를 활성화할 수 있습니다.

  1. 클러스터 내의 모든 사용자 작업 공간 3.12.2절. “모든 작업 공간에 fuse-overlayfs 활성화”을 참조하십시오.
  2. 특정 사용자에게 속한 작업 공간의 경우 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 문서를 참조하십시오.

사전 요구 사항

  • Butane 툴(butane)은 사용 중인 운영 체제에 설치됩니다.
  • 대상 OpenShift 클러스터에 대한 관리 권한이 있는 활성 oc 세션. CLI 시작하기를 참조하십시오.

프로세스

  1. OpenShift 클러스터 유형(단일 노드 클러스터 또는 별도의 컨트롤 플레인 및 작업자 노드가 있는 다중 노드 클러스터)에 따라 환경 변수를 설정합니다.

    • 단일 노드 클러스터의 경우 다음을 설정합니다.

      $ NODE_ROLE=master
    • 다중 노드 클러스터의 경우 다음을 설정합니다.

      $ NODE_ROLE=worker
  2. OpenShift Butane 구성 버전의 환경 변수를 설정합니다. 이 변수는 OpenShift 클러스터의 메이저 및 마이너 버전입니다. 예를 들면 4.12.0,4.13.0 또는 4.14.0 입니다.

    $ VERSION=4.12.0
  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
    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

    출력 예:

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

    io.openshift.podman-fuse: ''
    io.kubernetes.cri-o.Devices: /dev/fuse

검증 단계

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

    $ oc get nodes
  2. 작업자 노드에 대한 oc 디버그 세션을 엽니다.

    $ oc debug node/<nodename>
  3. 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 활성화

사전 요구 사항

프로세스

  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"
    주의

    이 ConfigMap을 생성하면 실행 중인 모든 작업 공간이 다시 시작됩니다.

  2. 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: "" 주석도 필요합니다.

검증 단계

  1. 작업 영역을 시작하고 스토리지 드라이버가 오버레이 인지 확인합니다.

    $ 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 로컬 파일을 삭제합니다.

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

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

© 2024 Red Hat, Inc.