5.21. CIFS/SMB CSI Driver Operator


OpenShift Container Platform은 CIFS(Common Internet File System)alect/SMB(Server Message Block) 프로토콜용 CSI(Container Storage Interface) 드라이버를 사용하여 PV(영구 볼륨)를 프로비저닝할 수 있습니다.

중요

CIFS/SMB CSI Driver Operator는 기술 프리뷰 기능 전용입니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. 따라서 프로덕션 환경에서 사용하는 것은 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.

Red Hat 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 기술 프리뷰 기능 지원 범위를 참조하십시오.

CSI Operator 및 드라이버를 사용할 때는 영구 스토리지CSI 볼륨 구성에 대해 숙지하는 것이 좋습니다.

CIFS/SMB CSI Driver Operator를 설치한 후 OpenShift Container Platform은 기본적으로 openshift-cluster-csi-drivers 네임스페이스에 Operator 및 드라이버에 대한 해당 Pod를 설치합니다. 이를 통해 CIFS/SMB CSI 드라이버는 CIFS/SMB 공유에 마운트되는 CSI(영구 볼륨)를 생성할 수 있습니다.

  • CIFS/SMB CSI Driver Operator 는 설치 후 PVC(영구 볼륨 클레임)를 생성하는 데 사용할 스토리지 클래스를 생성하지 않습니다. 그러나 동적 프로비저닝을 위해 CIFS/SMB StorageClass 를 수동으로 만들 수 있습니다. CIFS/SMB CSI Driver Operator는 필요에 따라 스토리지 볼륨을 생성할 수 있도록 하여 동적 볼륨 프로비저닝을 지원합니다. 이렇게 하면 클러스터 관리자가 스토리지를 사전 프로비저닝할 필요가 없습니다.
  • CIFS/SMB CSI 드라이버 를 사용하면 CIFS/SMB PV를 생성하고 마운트할 수 있습니다.

5.21.1. CSI 정보

스토리지 벤더는 일반적으로 Kubernetes의 일부로 스토리지 드라이버를 제공합니다. CSI(Container Storage Interface) 구현을 통해 타사 공급자는 코어 Kubernetes 코드를 변경하지 않고도 표준 인터페이스를 사용하여 스토리지 플러그인을 제공할 수 있습니다.

CSI Operator는 in-tree 볼륨 플러그인에서 사용할 수 없는 볼륨 스냅샷과 같은 OpenShift Container Platform 사용자 스토리지 옵션을 제공합니다.

5.21.2. 제한

다음 제한 사항은 CIFS(Common Internet File System)/SMB(Server Message Block) CSI(Container Storage Interface) Driver Operator에 적용됩니다.

  • FIPS 모드는 지원되지 않습니다.

    연방 정보 처리 표준(FIPS) 모드가 활성화되면 md4 및 md5의 사용이 비활성화되어 사용자가 ntlm, ntlmv2 또는 ntlmssp 인증을 사용할 수 없습니다. 또한 서명은 md5를 사용하므로 사용할 수 없습니다. FIPS 모드가 활성화되면 이러한 방법을 사용하는 CIFS 마운트가 실패합니다.

  • HTTP 프록시 구성을 사용하여 클러스터 SMB 서버 외부에 연결하는 것은 CSI 드라이버에서 지원되지 않습니다.

    CIFS/SMB는 LAN 프로토콜이며 서브넷으로 라우팅할 수 있지만 WAN을 통해 확장하도록 설계되지 않으며 HTTP 프록시 설정을 지원하지 않습니다.

5.21.3. CIFS/SMB CSI Driver Operator 설치

CIFS/SMB CSI Driver Operator(Red Hat Operator)는 기본적으로 OpenShift Container Platform에 설치되지 않습니다. 다음 절차에 따라 클러스터에서 CIFS/SMB CSI Driver Operator를 설치하고 구성합니다.

사전 요구 사항

  • OpenShift Container Platform 웹 콘솔에 액세스합니다.

프로세스

웹 콘솔에서 CIFS/SMB CSI Driver Operator를 설치하려면 다음을 수행합니다.

  1. 웹 콘솔에 로그인합니다.
  2. CIFS/SMB CSI Operator를 설치합니다.

    1. Operators OperatorHub를 클릭합니다.
    2. 필터 상자에 CIFS/SMB CSI를 입력하여 CIFS/SMB CSI Operator를 찾습니다.
    3. CIFS/SMB CSI Driver Operator 버튼을 클릭합니다.
    4. CIFS/SMB CSI Driver Operator 페이지에서 설치를 클릭합니다.
    5. Operator 설치 페이지에서 다음을 확인합니다.

      • 클러스터의 모든 네임스페이스(기본값)가 선택됩니다.
      • 설치된 네임스페이스openshift-cluster-csi-drivers로 설정됩니다.
    6. 설치를 클릭합니다.

      설치가 완료되면 웹 콘솔의 Installed Operators 섹션에 CIFS/SMB CSI Operator가 나열됩니다.

5.21.4. CIFS/SMB CSI 드라이버 설치

CIFS/SMB CSI(Container Storage Interface) Driver Operator를 설치한 후 CIFS/SMB CSI 드라이버를 설치합니다.

사전 요구 사항

  • OpenShift Container Platform 웹 콘솔에 액세스합니다.
  • CIFS/SMB CSI Driver Operator가 설치되었습니다.

프로세스

  1. Administration CustomResourceDefinitions ClusterCSIDriver 를 클릭합니다.
  2. Instances 탭에서 Create ClusterCSIDriver를 클릭합니다.
  3. 다음 YAML 파일을 사용합니다.

    apiVersion: operator.openshift.io/v1
    kind: ClusterCSIDriver
    metadata:
        name: smb.csi.k8s.io
    spec:
      managementState: Managed
  4. 생성을 클릭합니다.
  5. 다음 조건이 "True" 상태로 변경될 때까지 기다립니다.

    • SambaDriverControllerServiceControllerAvailable
    • SambaDriverNodeServiceControllerAvailable

5.21.5. 동적 프로비저닝

CIFS(Common Internet File System) 모음/SMB(Server Message Block) 프로토콜 볼륨의 동적 프로비저닝을 위한 스토리지 클래스를 생성할 수 있습니다. 프로비저닝 볼륨은 스토리지 클래스에 정의된 소스에 PV(영구 볼륨) 이름이 있는 하위 디렉터리를 생성합니다.

사전 요구 사항

  • CIFS/SMB CSI Driver Operator 및 드라이버 설치
  • 실행 중인 OpenShift Container Platform 클러스터에 로그인되어 있습니다.
  • SMB 서버를 설치하고 서버에 대한 다음 정보를 알고 있습니다.

    • 호스트 이름
    • 공유 이름
    • 사용자 이름 및 암호

프로세스

동적 프로비저닝을 설정하려면 다음을 수행합니다.

  1. 다음 예제 YAML 파일과 함께 다음 명령을 사용하여 Samba 서버에 액세스할 수 있는 보안을 생성합니다.

    $ oc create -f <file_name>.yaml

    시크릿 예제 YAML 파일

    apiVersion: v1
    kind: Secret
    metadata:
      name: smbcreds 1
      namespace: samba-server 2
    stringData:
      username: <username> 3
      password: <password> 4

    1
    Samba 서버의 시크릿 이름입니다.
    2
    Samba 서버의 시크릿 네임스페이스입니다.
    3
    Samba 서버의 시크릿 사용자 이름입니다.
    4
    Samba 서버의 시크릿 암호입니다.
  2. 다음 예제 YAML 파일로 다음 명령을 실행하여 스토리지 클래스를 생성합니다.

    $ oc create -f <sc_file_name>.yaml 1
    1
    스토리지 클래스 YAML 파일의 이름입니다.

    스토리지 클래스 예제 YAML 파일

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: <sc_name> 1
    provisioner: smb.csi.k8s.io
    parameters:
      source: //<hostname>/<shares> 2
      csi.storage.k8s.io/provisioner-secret-name: smbcreds 3
      csi.storage.k8s.io/provisioner-secret-namespace: samba-server 4
      csi.storage.k8s.io/node-stage-secret-name: smbcreds 5
      csi.storage.k8s.io/node-stage-secret-namespace: samba-server 6
    reclaimPolicy: Delete
    volumeBindingMode: Immediate
    mountOptions:
      - dir_mode=0777
      - file_mode=0777
      - uid=1001
      - gid=1001

    1
    스토리지 클래스의 이름입니다.
    2
    Samba 서버는 어디에나 설치되고 <'hostname>'이 Samba 서버의 호스트 이름이고 서버가 내보낸 공유 사이에 있도록 구성된 경로인 클러스터에서 연결할 수 있어야 합니다.
    3 5
    이전 단계에서 설정한 Samba 서버의 시크릿 이름입니다. csi.storage.k8s.io/provisioner-secret 이 제공되면 소스 아래에 PV 이름이 포함된 하위 디렉터리가 생성됩니다.
    4 6
    이전 단계에서 설정한 Samba 서버의 Secret의 네임스페이스입니다.
  3. PVC를 생성합니다.

    1. 다음 예제 YAML 파일로 다음 명령을 실행하여 PVC를 생성합니다.

      $ oc create -f <pv_file_name>.yaml 1
      1
      PVC YAML 파일의 이름입니다.

      PVC YAML 파일의 예

      kind: PersistentVolumeClaim
      apiVersion: v1
      metadata:
        name: <pvc_name> 1
      spec:
        accessModes:
          - ReadWriteMany
        resources:
          requests:
            storage: <storage_amount> 2
        storageClassName: <sc_name> 3

      1
      PVC의 이름입니다.
      2
      스토리지 요청 양.
      3
      이전 단계에서 만든 CIFS/SMB 스토리지 클래스의 이름입니다.
    2. 다음 명령을 실행하여 PVC가 생성되었고 "Bound" 상태에 있는지 확인합니다.

      $ oc describe pvc <pvc_name> 1
      1
      이전 단계에서 생성한 PVC의 이름입니다.

      출력 예

      Name:          pvc-test
      Namespace:     default
      StorageClass:  samba
      Status:        Bound 1
      ...

      1
      PVC는 Bound 상태입니다.

5.21.6. 정적 프로비저닝

정적 프로비저닝을 사용하여 기존 SMB(Server Message Block Protocol) 공유를 사용하기 위해 PV(영구 볼륨) 및 PVC(영구 볼륨 클레임)를 생성할 수 있습니다.

사전 요구 사항

  • OpenShift Container Platform 웹 콘솔에 액세스합니다.
  • CIFS/SMB CSI Driver Operator 및 드라이버 설치
  • SMB 서버를 설치하고 서버에 대한 다음 정보를 알고 있습니다.

    • 호스트 이름
    • 공유 이름
    • 사용자 이름 및 암호

프로세스

정적 프로비저닝을 설정하려면 다음을 수행합니다.

  1. 다음 예제 YAML 파일과 함께 다음 명령을 사용하여 Samba 서버에 액세스할 수 있는 보안을 생성합니다.

    $ oc create -f <file_name>.yaml

    시크릿 예제 YAML 파일

    apiVersion: v1
    kind: Secret
    metadata:
      name: smbcreds 1
      namespace: samba-server 2
    stringData:
      username: <username> 3
      password: <password> 4

    1
    Samba 서버의 시크릿 이름입니다.
    2
    Samba 서버의 시크릿 네임스페이스입니다.
    3
    Samba 서버의 시크릿 사용자 이름입니다.
    4
    Samba 서버의 시크릿 암호입니다.
  2. 다음 예제 YAML 파일로 다음 명령을 실행하여 PV를 생성합니다.

    $ oc create -f <pv_file_name>.yaml 1
    1
    PV YAML 파일의 이름입니다.

    PV YAML 파일의 예

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      annotations:
        pv.kubernetes.io/provisioned-by: smb.csi.k8s.io
      name: <pv_name> 1
    spec:
      capacity:
        storage: 100Gi
      accessModes:
        - ReadWriteMany
      persistentVolumeReclaimPolicy: Retain
      storageClassName: ""
      mountOptions:
        - dir_mode=0777
        - file_mode=0777
      csi:
        driver: smb.csi.k8s.io
        volumeHandle: smb-server.default.svc.cluster.local/share/ 2
        volumeAttributes:
          source: //<hostname>/<shares> 3
        nodeStageSecretRef:
          name: <secret_name_shares> 4
          namespace: <namespace> 5

    1
    PV의 이름입니다.
    2
    volumeHandle 형식: {smb-server-address}.{sub-dir-name}.{share-name}. 이 값이 클러스터의 모든 공유에 대해 고유한지 확인합니다.
    3
    Samba 서버는 어디에나 설치되고 <hostname>이 Samba 서버의 호스트 이름이고 서버가 내보낸 공유 사이에 있도록 구성된 경로인 클러스터에서 연결할 수 있어야 합니다.
    4
    공유의 시크릿 이름입니다.
    5
    해당 네임스페이스입니다.
  3. PVC를 생성합니다.

    1. 다음 예제 YAML 파일로 다음 명령을 실행하여 PVC를 생성합니다.

      $ oc create -f <pv_file_name>.yaml 1
      1
      PVC YAML 파일의 이름입니다.

      PVC YAML 파일의 예

      kind: PersistentVolumeClaim
      apiVersion: v1
      metadata:
        name: <pvc_name> 1
      spec:
        accessModes:
          - ReadWriteMany
        resources:
          requests:
            storage: <storage_amount> 2
        storageClassName: ""
        volumeName: <pv_name> 3

      1
      PVC의 이름입니다.
      2
      스토리지 요청 양.
      3
      첫 번째 단계에서 PV의 이름입니다.
    2. 다음 명령을 실행하여 PVC가 생성되었고 "Bound" 상태에 있는지 확인합니다.

      $ oc describe pvc <pvc_name> 1
      1
      이전 단계에서 생성한 PVC의 이름입니다.

      출력 예

      Name:          pvc-test
      Namespace:     default
      StorageClass:
      Status:        Bound 1
      ...

      1
      PVC는 Bound 상태입니다.
  4. 다음 예제 YAML 파일로 다음 명령을 실행하여 Linux에 배포를 생성합니다.

    참고

    다음 배포는 이전 단계에서 생성된 PV 및 PVC를 사용하는 데 필요하지 않습니다. 이는 사용할 수 있는 방법의 예입니다.

    $ oc create -f <deployment_file_name>.yaml 1
    1
    배포 YAML 파일의 이름입니다.

    배포 YAML 파일의 예

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      labels:
        app: nginx
      name: <deployment_name> 1
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
          name: <deployment_name> 2
        spec:
          nodeSelector:
            "kubernetes.io/os": linux
          containers:
            - name: <deployment_name> 3
              image: quay.io/centos/centos:stream8
              command:
                - "/bin/bash"
                - "-c"
                - set -euo pipefail; while true; do echo $(date) >> <mount_path>/outfile; sleep 1; done 4
              volumeMounts:
                - name: <vol_mount_name> 5
                  mountPath: <mount_path> 6
                  readOnly: false
          volumes:
            - name: <vol_mount_name> 7
              persistentVolumeClaim:
                claimName: <pvc_name> 8
      strategy:
        rollingUpdate:
          maxSurge: 0
          maxUnavailable: 1
        type: RollingUpdate

    1 2 3
    배포 이름입니다.
    4 6
    볼륨 마운트 경로입니다.
    5 7
    볼륨 마운트의 이름입니다.
    8
    이전 단계에서 생성된 PVC의 이름입니다.
  5. 컨테이너에서 df -h 명령을 실행하여 설정을 확인합니다.

    $ oc exec -it <pod_name> -- df -h 1
    1
    Pod의 이름입니다.

    출력 예

    Filesystem            Size  Used Avail Use% Mounted on
    ...
    /dev/sda1              97G   21G   77G  22% /etc/hosts
    //20.43.191.64/share   97G   21G   77G  22% /mnt/smb
    ...

    이 예제에는 CIFS(Common Internet File System) 파일 시스템으로 마운트된 /mnt/smb 디렉터리가 있습니다.

5.21.7. 추가 리소스

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.