Azure Kubernetes Service에서 Azure Ultra Disk 사용
Azure Ultra Disks는 상태 저장 애플리케이션에 대해 높은 처리량, 높은 IOPS, 일관성 있는 짧은 대기 시간 디스크 스토리지를 제공합니다. Ultra Disks의 주요 혜택 중 하나는 에이전트 노드를 다시 시작하지 않고도 워크로드에 따라 SSD의 성능을 동적으로 변경하는 기능입니다. Ultra Disks는 데이터를 많이 사용하는 워크로드에 적합합니다.
이 문서에서는 신규 또는 기존 AKS 클러스터에서 Azure 울트라 디스크를 사용하도록 구성하는 방법을 설명합니다.
시작하기 전에
이 기능은 클러스터를 만들 때 또는 노드 풀을 만들 때만 설정할 수 있습니다.
제한 사항
- Azure 울트라 디스크에는 이러한 디스크를 지원하는 가용성 영역 및 지역에 배포된 노드 풀이 필요하며 특정 VM 시리즈에서만 지원됩니다. 자세한 내용은 울트라 디스크 제한 사항 섹션에서 해당 테이블을 검토하세요.
- 울트라 디스크는 가용성 집합 또는 Azure Disk Encryption과 같은 일부 기능과 함께 사용할 수 없습니다. 최신 정보는 울트라 디스크 제한 사항을 검토하세요.
Ultra Disks를 사용할 수 있는 클러스터 만들기
다음 CLI 명령을 사용하여 Azure 울트라 디스크를 활용할 수 있는 AKS 클러스터를 만듭니다. --enable-ultra-ssd
매개 변수를 사용하여 EnableUltraSSD
기능을 설정합니다.
az aks create \
--resource-group MyResourceGroup \
--name myAKSCluster \
--location westus2 \
--node-vm-size Standard_D2s_v3 \
--zones 1 2 \
--node-count 2 \
--enable-ultra-ssd \
--generate-ssh-keys
울트라 디스크를 지원하지 않는 클러스터를 만들려는 경우 --enable-ultra-ssd
매개 변수를 생략하면 됩니다.
기존 클러스터에서 Ultra Disks 사용 설정
울트라 디스크를 지원하는 클러스터에 새 노드 풀을 추가하여 기존 클러스터에서 울트라 디스크를 사용하도록 설정할 수 있습니다. az aks nodepool add
명령이 있는 --enable-ultra-ssd
매개 변수를 사용하여 울트라 디스크를 사용하도록 새 노드 풀을 구성합니다.
울트라 디스크를 지원하지 않는 새 노드 풀을 만들려는 경우 --enable-ultra-ssd
매개 변수를 제외하면 됩니다.
스토리지 클래스를 사용하여 동적으로 Ultra Disks 사용
배포 또는 상태 저장 세트에서 Ultra Disks를 사용하려면 동적 프로비저닝에 스토리지 클래스를 사용하면 됩니다.
스토리지 클래스 만들기
스토리지 클래스를 사용하여 영구적 볼륨에서 스토리지 단위를 동적으로 생성되는 방법을 정의합니다. Kubernetes 스토리지 클래스에 대한 자세한 내용은 Kubernetes 스토리지 클래스를 참조하세요. 이 예제에서는 울트라 디스크를 참조하는 스토리지 클래스를 만듭니다.
파일
azure-ultra-disk-sc.yaml
을 만들고 다음 매니페스트에 복사합니다.kind: StorageClass apiVersion: storage.k8s.io/v1 metadata: name: ultra-disk-sc provisioner: disk.csi.azure.com # replace with "kubernetes.io/azure-disk" if aks version is less than 1.21 volumeBindingMode: WaitForFirstConsumer # optional, but recommended if you want to wait until the pod that will use this disk is created parameters: skuname: UltraSSD_LRS kind: managed cachingMode: None diskIopsReadWrite: "2000" # minimum value: 2 IOPS/GiB diskMbpsReadWrite: "320" # minimum value: 0.032/GiB
kubectl apply
명령을 사용하여 스토리지 클래스를 만들고azure-ultra-disk-sc.yaml
파일을 지정합니다.kubectl apply -f azure-ultra-disk-sc.yaml
다음 예와 유사하게 출력됩니다.
storageclass.storage.k8s.io/ultra-disk-sc created
영구적 볼륨 클레임 만들기
PVC(영구적 볼륨 클레임)을 사용하여 스토리지 클래스를 기반으로 하는 스토리지를 자동으로 프로비전합니다. 이 경우 PVC는 이전에 만든 스토리지 클래스를 사용하여 Ultra Disk를 만들 수 있습니다.
파일
azure-ultra-disk-pvc.yaml
을 만들고 다음 매니페스트에 복사합니다.apiVersion: v1 kind: PersistentVolumeClaim metadata: name: ultra-disk spec: accessModes: - ReadWriteOnce storageClassName: ultra-disk-sc resources: requests: storage: 1000Gi
클레임은 ReadWriteOnce 액세스 권한이 1,000GB 크기의
ultra-disk
이라는 디스크를 요구합니다. ultra-disk-sc 스토리지 클래스를 스토리지 클래스로 지정합니다.kubectl apply
명령을 사용하여 영구 볼륨 클레임을 만들고azure-ultra-disk-pvc.yaml
파일을 지정합니다.kubectl apply -f azure-ultra-disk-pvc.yaml
다음 예와 유사하게 출력됩니다.
persistentvolumeclaim/ultra-disk created
영구적 볼륨 사용
영구적 볼륨 클레임이 생성되고 디스크가 성공적으로 프로비전되면 디스크에 액세스하여 Pod를 만들 수 있습니다. 다음 매니페스트는 ultra-disk라는 영구적 볼륨 클레임을 사용하여 /mnt/azure
경로에 Azure 디스크를 탑재하는 기본 NGINX Pod를 만듭니다.
파일
nginx-ultra.yaml
을 만들고 다음 매니페스트에 복사합니다.kind: Pod apiVersion: v1 metadata: name: nginx-ultra spec: containers: - name: nginx-ultra image: mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine resources: requests: cpu: 100m memory: 128Mi limits: cpu: 250m memory: 256Mi volumeMounts: - mountPath: "/mnt/azure" name: volume volumes: - name: volume persistentVolumeClaim: claimName: ultra-disk
kubectl apply
명령을 사용하여 Pod를 만들고nginx-ultra.yaml
파일을 지정합니다.kubectl apply -f nginx-ultra.yaml
다음 예와 유사하게 출력됩니다.
pod/nginx-ultra created
이제 Azure 디스크가
/mnt/azure
디렉터리에 탑재된 Pod가 실행되고 있습니다.kubectl describe pod
명령을 사용하여 구성 세부 정보를 확인하고nginx-ultra.yaml
파일을 지정합니다.kubectl describe pod nginx-ultra
다음 예와 유사하게 출력됩니다.
[...] Volumes: volume: Type: PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace) ClaimName: azure-managed-disk ReadOnly: false default-token-smm2n: Type: Secret (a volume populated by a Secret) SecretName: default-token-smm2n Optional: false [...] Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal Scheduled 2m default-scheduler Successfully assigned mypod to aks-nodepool1-79590246-0 Normal SuccessfulMountVolume 2m kubelet, aks-nodepool1-79590246-0 MountVolume.SetUp succeeded for volume "default-token-smm2n" Normal SuccessfulMountVolume 1m kubelet, aks-nodepool1-79590246-0 MountVolume.SetUp succeeded for volume "pvc-faf0f176-8b8d-11e8-923b-deb28c58d242" [...]
다음 단계
- Ultra Disks에 대한 자세한 내용은 Azure Ultra Disks 사용을 참조하세요.
- 스토리지 모범 사례에 대한 자세한 내용은 AKS의 스토리지 및 백업 모범 사례를 참조하세요.
Azure Kubernetes Service