다음을 통해 공유


Azure Arc에서 사용하도록 설정된 AKS에서 CSI(Container Storage Interface) 파일 드라이버 사용

> 적용 대상: Azure Local 22H2에서의 AKS, Windows Server에서의 AKS, Azure Local에서의 AKS, 버전 23H2

이 문서에서는 여러 노드가 Azure Arc에서 사용하도록 설정된 AKS에서 동일한 스토리지 볼륨에 대한 동시 액세스가 필요한 경우 파일에 CSI(Container Storage Interface) 드라이버를 사용하여 SMB(서버 메시지 블록) 또는 NFS 공유를 탑재하는 방법을 설명합니다.

AKS Arc의 CSI 개요

CSI(Container Storage Interface)는 Kubernetes에서 컨테이너화된 워크로드에 임의 블록 및 파일 스토리지 시스템을 노출하는 표준입니다. Arc에서 사용하도록 설정된 AKS는 CSI를 사용하여 플러그 인을 작성, 배포 및 반복하여 새 스토리지 시스템을 노출할 수 있습니다. CSI를 사용하면 핵심 Kubernetes 코드를 터치한 다음 릴리스 주기를 기다리지 않고도 Kubernetes의 기존 코드를 개선할 수 있습니다.

AKS Arc에서 사용하는 디스크 및 파일 CSI 드라이버는 CSI 사양 규격 드라이버입니다.

AKS Arc의 CSI 스토리지 드라이버 지원을 사용하면 다음을 사용할 수 있습니다.

  • Kubernetes DataDisk 리소스를 만드는 데 사용할 수 있는 AKS Arc 디스크입니다. ReadWriteOnce탑재되므로 한 번에 하나의 Pod에서만 사용할 수 있습니다. 여러 Pod에서 동시에 액세스할 수 있는 스토리지 볼륨의 경우 AKS Arc 파일을 사용합니다.

  • SMB 또는 NFS 공유를 Pod에 탑재하는 데 사용할 수 있는 AKS Arc 파일입니다. 이는 ReadWriteMany탑재되므로 여러 노드 및 Pod에서 데이터를 공유할 수 있습니다. PVC(영구 볼륨 클레임) 사양에 따라 ReadWriteOnce탑재할 수도 있습니다.

ReadWriteMany CSI 드라이버를 사용하여 파일 영구 볼륨 사용

여러 노드가 AKS Arc의 동일한 스토리지 볼륨에 동시에 액세스해야 하는 경우 파일에 CSI 드라이버를 사용하여 SMB 또는 NFS 공유를 ReadWriteMany탑재할 수 있습니다. SMB 또는 NFS 공유를 미리 프로비전해야 합니다.

SMB 드라이버 사용

  1. SMB 드라이버가 배포되었는지 확인합니다. SMB CSI 드라이버는 Azure Portal 또는 az aksarc create 명령을 사용하여 Kubernetes 클러스터를 만들 때 기본적으로 설치됩니다. Kubernetes 클러스터를 사용하여 만드는 경우 다음 명령을 사용하여 --disable-smb-driveraz aksarc update 이 클러스터에서 SMB 드라이버를 사용하도록 설정해야 합니다.

    az aksarc update -n $aksclustername -g $resource_group --enable-smb-driver
    
  1. 다음 명령을 실행하여 SMB 공유에 액세스하는 데 필요한 자격 증명을 저장하는 Kubernetes 비밀을 만듭니다.

    kubectl create secret generic smbcreds --from-literal username=$username --from-literal password=$password --from-literal domain=$domain
    
  2. 다음 매니페스트를 사용하여 새 SMB 스토리지 클래스를 만드는 데 사용하는 kubectl 스토리지 클래스를 만듭니다.

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: smb-csi
    provisioner: smb.csi.akshci.com
    parameters:
       source: \\smb-server\share
       csi.storage.k8s.io/node-stage-secret-name: "smbcreds"
       csi.storage.k8s.io/node-stage-secret-namespace: "default"
    reclaimPolicy: Retain  # only Retain is supported
    volumeBindingMode: Immediate
    mountOptions:
      - dir_mode=0777
      - file_mode=0777
      - uid=1001
      - gid=1001
    

NFS 드라이버 사용

  1. NFS 드라이버가 배포되었는지 확인합니다. NFS CSI 드라이버는 Azure Portal 또는 az aksarc create 명령을 사용하여 Kubernetes 클러스터를 만들 때 기본적으로 설치됩니다. Kubernetes 클러스터를 사용하여 만드는 경우 다음 명령을 사용하여 --disable-nfs-driveraz aksarc update 이 클러스터에서 NFS 드라이버를 사용하도록 설정해야 합니다.

    az aksarc update -n $aksclustername -g $resource_group --enable-nfs-driver
    
  1. 다음 매니페스트를 사용하여 NFS 스토리지 클래스를 만듭니다.

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: nfs-csi
    provisioner: nfs.csi.akshci.com
    parameters:
      server: nfs-server.default.svc.cluster.local # NFS server endpoint
      share: / # NFS share path
    reclaimPolicy: Retain
    volumeBindingMode: Immediate
    mountOptions:
      - hard
      - nfsvers=4.1
    

SMB 또는 NFS 드라이버를 제거하려면

다음 Azure CLI 명령을 사용하여 SMB 또는 NFS 드라이버를 제거합니다.

az aksarc update -n $aksclustername -g $resource_group --disable-smb-driver
az aksarc update -n $aksclustername -g $resource_group --disable-nfs-driver

다음 단계