다음을 통해 공유


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

> 적용 대상: Azure Stack HCI 22H2의 AKS, Windows Server의 AKS, Azure Stack HCI 23H2의 AKS

이 문서에서는 CSI(Container Storage Interface) 기본 제공 스토리지 클래스를 사용하여 디스크 영구 볼륨을 동적으로 만들고 Arc에서 사용하도록 설정된 AKS에서 사용자 지정 스토리지 클래스를 만드는 방법을 설명합니다.

Arc에서 사용하도록 설정된 AKS의 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 로 탑재할 수도 있습니다.

기본 제공 스토리지 클래스를 사용하여 동적으로 디스크 영구 볼륨 만들기

스토리지 클래스는 영구 볼륨을 사용하여 스토리지 단위를 동적으로 만드는 방법을 정의하는 데 사용됩니다. 스토리지 클래스를 사용하는 방법에 대한 자세한 내용은 Kubernetes 스토리지 클래스를 참조하세요.

AKS Arc에서 기본 스토리지 클래스는 기본적으로 만들어지고 CSI를 사용하여 VHDX 기반 볼륨을 만듭니다. 회수 정책은 사용된 영구 볼륨이 삭제될 때 기본 VHDX가 삭제되도록 합니다. 또한 스토리지 클래스는 확장 가능하도록 영구 볼륨을 구성합니다. 새 크기로 영구 볼륨 클레임을 편집하기만 하면 됩니다.

이 스토리지 클래스를 활용하려면 이를 참조하고 사용하는 PVC 및 해당 Pod를 만듭니다. PVC를 사용하여 스토리지 클래스를 기반으로 하는 스토리지를 자동으로 프로비저닝합니다. PVC는 미리 만들어진 스토리지 클래스 또는 사용자 정의 스토리지 클래스 중 하나를 사용하여 원하는 크기의 VHDX를 만들 수 있습니다. Pod 정의를 만들 때 원하는 스토리지를 요청하는 PVC가 지정됩니다.

디스크에 대한 사용자 지정 스토리지 클래스 만들기

기본 스토리지 클래스는 가장 일반적인 시나리오에 적합합니다. 그러나 경우에 따라 특정 성능 계층에 매핑된 특정 위치에 PC를 저장하는 고유한 스토리지 클래스를 만들 수 있습니다.

Linux 워크로드(Pod)가 있는 경우 매개 변수 fsType: ext4를 사용하여 사용자 지정 스토리지 클래스를 만들어야 합니다. 이 요구 사항은 Kubernetes 버전 1.19 및 1.20 이상에 적용됩니다. 다음 예제에서는 매개 변수가 정의된 사용자 지정 스토리지 클래스 정의를 fsType 보여 줍니다.

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: aks-hci-disk-custom
parameters:
  blocksize: "33554432"
  container: SqlStorageContainer
  dynamic: "true"
  group: clustergroup-summertime
  hostname: TESTPATCHING-91.sys-sqlsvr.local
  logicalsectorsize: "4096"
  physicalsectorsize: "4096"
  port: "55000"
  fsType: ext4
provisioner: disk.csi.akshci.com
reclaimPolicy: Delete
volumeBindingMode: Immediate
allowVolumeExpansion: true  

사용자 지정 스토리지 클래스를 만드는 경우 PV를 저장할 위치를 지정할 수 있습니다. 기본 인프라가 Azure Stack HCI인 경우 이 새 위치는 고성능 SSD/NVMe에서 지원되는 볼륨 또는 HDD에서 지원되는 비용 최적화 볼륨일 수 있습니다.

사용자 지정 스토리지 클래스를 만드는 것은 2단계 프로세스입니다.

  1. cmdlet을 사용하여 stack-hci-vm storagepath 새 스토리지 경로를 만들어 Azure Stack HCI 클러스터의 스토리지 경로를 만들고, 표시하고, 나열합니다. 스토리지 경로 만들기에 대한 자세한 내용은 스토리지 경로를 참조하세요.

    의 경우 $path라는 스토리지 경로를 만듭니다 $storagepathname. 예를 들어 C:\ClusterStorage\test-storagepath:

    az stack-hci-vm storagepath create --resource-group $resource_group --custom-location $customLocationID --name $storagepathname --path $path
    

    스토리지 경로 리소스 ID를 가져옵니다.

    $storagepathID = az stack-hci-vm storagepath show --name $storagepathname --resource-group $resource_group --query "id" -o tsv 
    
  2. 새 스토리지 경로를 사용하여 새 사용자 지정 스토리지 클래스를 만듭니다.

    1. sc-aks-hci-disk-custom.yaml이라는 파일을 만든 다음, 다음 YAML 파일에서 매니페스트를 복사합니다. 스토리지 클래스는 새 container를 제외하고 기본 스토리지 클래스와 동일합니다. 에 storage path ID 대해 이전 단계에서 만든 을 container사용합니다. 및 hostname의 경우 group 를 실행kubectl get storageclass default -o yaml하여 기본 스토리지 클래스를 쿼리한 다음, 지정된 값을 사용합니다.

      kind: StorageClass
      apiVersion: storage.k8s.io/v1
      metadata:
       name: aks-hci-disk-custom
      provisioner: disk.csi.akshci.com
      parameters:
       blocksize: "33554432"
       container: <storage path ID>
       dynamic: "true"
       group: <e.g clustergroup-akshci> # same as the default storageclass
       hostname: <e.g. ca-a858c18c.ntprod.contoso.com> # same as the default storageclass
       logicalsectorsize: "4096"
       physicalsectorsize: "4096"
       port: "55000"
       fsType: ext4 # refer to the note above to determine when to include this parameter
      allowVolumeExpansion: true
      reclaimPolicy: Delete
      volumeBindingMode: Immediate
      
    2. kubectl apply 명령을 사용하여 스토리지 클래스를 만들고 sc-aks-hci-disk-custom.yaml 파일을 지정합니다.

       $ kubectl apply -f sc-aks-hci-disk-custom.yaml
       storageclass.storage.k8s.io/aks-hci-disk-custom created
      

다음 단계