5장. CSI(Container Storage Interface) 사용


5.1. CSI 볼륨 구성

CSI(Container Storage Interface)를 사용하면 AWS의 Red Hat OpenShift Service에서 CSI 인터페이스를 영구 스토리지로 구현하는 스토리지 백엔드에서 스토리지를 사용할 수 있습니다.

참고

AWS 4의 Red Hat OpenShift Service는 CSI 사양 의 버전 1.6.0을 지원합니다.

5.1.1. CSI 아키텍처

CSI 드라이버는 일반적으로 컨테이너 이미지로 제공됩니다. 이러한 컨테이너는 실행되는 AWS의 Red Hat OpenShift Service를 인식하지 못합니다. AWS의 Red Hat OpenShift Service에서 CSI 호환 스토리지 백엔드를 사용하려면 클러스터 관리자가 AWS의 Red Hat OpenShift Service와 스토리지 드라이버 간에 브리지 역할을 하는 여러 구성 요소를 배포해야 합니다.

다음 다이어그램에서는 AWS 클러스터의 Red Hat OpenShift Service의 Pod에서 실행되는 구성 요소에 대한 대략적인 개요를 제공합니다.

CSI 구성 요소의 아키텍처

다른 스토리지 백엔드에 대해 여러 CSI 드라이버를 실행할 수 있습니다. 각 드라이버에는 드라이버 및 CSI 등록 기관과 함께 자체 외부 컨트롤러 배포 및 데몬 세트가 필요합니다.

5.1.1.1. 외부 CSI 컨트롤러

외부 CSI 컨트롤러는 5개의 컨테이너가 있는 하나 이상의 Pod를 배포하는 배포입니다.

  • 스냅샷 컨테이너는 VolumeSnapshotVolumeSnapshotContent 오브젝트를 감시하고 VolumeSnapshotContent 오브젝트의 생성 및 삭제를 담당합니다.
  • PersistentVolumeClaim 오브젝트에서 더 많은 스토리지를 요청하는 경우 resizer 컨테이너는 PersistentVolumeClaim 업데이트를 감시하고 ControllerExpandVolume 작업을 CSI 끝점에 대해 트리거하는 사이드카 컨테이너입니다.
  • 외부 CSI 연결 컨테이너는 AWS의 Red Hat OpenShift Service의 연결분리 호출을 CSI 드라이버에 대한 해당 ControllerPublishControllerUnpublish 호출로 변환합니다.
  • AWS의 Red Hat OpenShift Service의 provisiondelete 호출을 CSI 드라이버에 대한 해당 CreateVolumeDeleteVolume 호출로 변환하는 외부 CSI 프로비저너 컨테이너입니다.
  • CSI 드라이버 컨테이너입니다.

CSI 연결 및 CSI 프로비저너 컨테이너는 UNIX 도메인 소켓을 사용해 CSI 드라이버 컨테이너와 통신하여 CSI 통신이 Pod를 종료하지 않도록 합니다. Pod 외부에서 CSI 드라이버에 액세스할 수 없습니다.

참고

연결,분리,프로비저닝삭제 작업에는 일반적으로 CSI 드라이버가 스토리지 백엔드에 인증 정보를 사용해야 합니다. 컴퓨팅 노드의 심각한 보안 위반 시 인증 정보가 사용자 프로세스에 유출되지 않도록 인프라 노드에서 CSI 컨트롤러 Pod를 실행합니다.

참고

외부 연결에서는 타사 attach 또는 detach 작업을 지원하지 않는 CSI 드라이버에서도 실행해야 합니다. 외부 연결은 CSI 드라이버에 ControllerPublish 또는 ControllerUnpublish 작업을 발행하지 않습니다. 그러나 필요한 Red Hat OpenShift Service를 AWS 연결 API에 구현하려면 여전히 실행해야 합니다.

5.1.1.2. CSI 드라이버 데몬 세트

CSI 드라이버 데몬 세트는 AWS의 Red Hat OpenShift Service가 CSI 드라이버에서 제공하는 스토리지를 노드에 마운트하고 사용자 워크로드(Pod)에서 PV(영구 볼륨)로 사용할 수 있는 모든 노드에서 Pod를 실행합니다. CSI 드라이버가 설치된 Pod에는 다음 컨테이너가 포함되어 있습니다.

  • CSI 드라이버 등록 기관. CSI 드라이버를 노드에서 실행 중인 openshift-node 서비스에 등록합니다. 노드에서 실행되는 openshift-node 프로세스는 노드에서 사용 가능한 UNIX 도메인 소켓을 사용하여 CSI 드라이버와 직접 연결합니다.
  • CSI 드라이버.

노드에 배포된 CSI 드라이버는 스토리지 백엔드에 최대한 적은 수의 인증 정보가 있어야 합니다. Red Hat OpenShift Service on AWS는 이러한 호출이 구현된 경우 NodePublish/NodeUnpublishNodeStage/NodeUnstage 와 같은 CSI 호출의 노드 플러그인 세트만 사용합니다.

5.1.2. AWS의 Red Hat OpenShift Service에서 지원하는 CSI 드라이버

AWS의 Red Hat OpenShift Service는 기본적으로 특정 CSI 드라이버를 설치하여 In-tree 볼륨 플러그인에서 사용할 수 없는 사용자에게 스토리지 옵션을 제공합니다.

지원되는 스토리지 자산에 마운트되는 CSI 프로비저닝 영구 볼륨을 생성하기 위해 AWS의 Red Hat OpenShift Service는 기본적으로 필요한 CSI 드라이버 Operator, CSI 드라이버 및 필요한 스토리지 클래스를 설치합니다. Operator 및 드라이버의 기본 네임스페이스에 대한 자세한 내용은 특정 CSI Driver Operator 설명서를 참조하십시오.

다음 표에서는 Red Hat OpenShift Service on AWS와 함께 설치된 CSI 드라이버와 볼륨 스냅샷 및 크기와 같은 CSI 기능을 설명합니다.

다음 표에 나열된 드라이버 외에도 ROSA는 타사 스토리지 벤더의 CSI 드라이버와 함께 작동합니다. Red Hat은 타사 프로비저너 또는 연결된 CSI 드라이버를 감독하지 않으며 벤더는 소스 코드, 배포, 운영 및 Kubernetes 호환성을 완전히 제어합니다. 이러한 볼륨 배포 프로그램은 고객 관리로 간주되며 해당 공급업체는 지원을 제공합니다. 자세한 내용은 AWS의 Red Hat OpenShift Service에 대한 공유 책임을 참조하십시오.

표 5.1. AWS의 Red Hat OpenShift Service에서 지원되는 CSI 드라이버 및 기능
CSI 드라이버CSI 볼륨 스냅샷CSI 복제CSI 크기 조정인라인 임시 볼륨

AWS EBS

 ✅

 ✅

AWS EFS

LVM 스토리지

 ✅

 ✅

 ✅

5.1.3. 동적 프로비저닝

영구 스토리지의 동적 프로비저닝은 CSI 드라이버 및 기본 스토리지 백엔드의 기능에 따라 달라집니다. CSI 드라이버 공급자는 AWS의 Red Hat OpenShift Service에서 스토리지 클래스를 생성하는 방법과 구성에 사용할 수 있는 매개변수를 문서화해야 합니다.

동적 프로비저닝을 사용하도록 생성된 스토리지 클래스를 구성할 수 있습니다.

절차

  • 설치된 CSI 드라이버에서 특수 스토리지 클래스가 필요하지 않은 모든 PVC를 프로비저닝하는 기본 스토리지 클래스를 생성합니다.

    # oc create -f - << EOF
    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: <storage-class> 1
      annotations:
        storageclass.kubernetes.io/is-default-class: "true"
    provisioner: <provisioner-name> 2
    parameters:
    EOF
    1
    생성할 스토리지 클래스의 이름입니다.
    2
    설치된 CSI 드라이버의 이름입니다.

5.1.4. CSI 드라이버 사용 예

다음 예시는 템플릿을 변경하지 않고 기본 MySQL 템플릿을 설치합니다.

사전 요구 사항

  • CSI 드라이버가 배포되었습니다.
  • 동적 프로비저닝을 위해 스토리지 클래스가 생성되었습니다.

절차

  • MySQL 템플릿을 생성합니다.

    # oc new-app mysql-persistent

    출력 예

    --> Deploying template "openshift/mysql-persistent" to project default
    ...

    # oc get pvc

    출력 예

    NAME              STATUS    VOLUME                                   CAPACITY
    ACCESS MODES   STORAGECLASS   AGE
    mysql             Bound     kubernetes-dynamic-pv-3271ffcb4e1811e8   1Gi
    RWO            cinder         3s

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.