AKS(Azure Kubernetes Service)에 대한 스토리지 고려 사항
특정 애플리케이션 워크로드를 실행하려면 조직 또는 엔터프라이즈가 적절한 AKS(Azure Kubernetes Service) 플랫폼 수준 기능을 설계해야 합니다. 이러한 워크로드에는 스토리지 요구 사항이 다를 수 있습니다. 애플리케이션에 적합한 스토리지 솔루션을 선택할 때 성능, 가용성, 복구 가능성, 보안 및 비용을 비롯한 여러 가지 고려 사항이 있습니다. 이 문서의 목표는 워크로드에 적합한 옵션 또는 옵션 조합을 선택하도록 안내하는 것입니다.
Kubernetes는 상태 비저장 및 상태 저장 워크로드를 모두 실행할 수 있습니다. 상태 저장 워크로드에는 상태를 저장하기 위한 스토리지 솔루션이 필요한 경우가 많습니다. AKS는 관리되는 데이터베이스, 디스크(또는 블록), 파일 및 Blob(또는 개체) 스토리지를 포함하는 네이티브 스토리지에 대한 여러 통합 옵션을 지원합니다. 이러한 각 옵션은 다양한 SKU, 크기 및 성능 특성을 제공합니다. 올바른 옵션을 선택하려면 신중하게 고려해야 합니다.
이 문서에서는 올바른 스토리지 서비스 선택 및 디자인 고려 사항에서 고려해야 할 요소와 옵션에 대해 설명합니다. 디자인 권장 사항에서 특정 권장 사항을 제공합니다.
적합한 스토리지 서비스 선택
초기 배포에 적합한 SKU 및 크기를 선택하려면 몇 가지 평가와 잠재적으로 개념 증명 또는 테스트 환경이 필요합니다. 다음은 AKS용 스토리지를 시작하는 데 도움이 되는 개략적인 지침입니다.
정형 데이터(Structured data). 애플리케이션이 플랫폼에서 사용할 수 있는 관리형 데이터베이스(예: Azure SQL)에 저장할 수 있는 구조화된 데이터의 경우 관리형 데이터베이스를 사용하는 것이 좋습니다.
비정형 데이터(Unstructured data). 사진, 비디오 및 텍스트 문서와 같은 비정형 데이터의 경우 Blob Storage를 사용합니다. 애플리케이션은 NFS(네트워크 파일 시스템)를 통해 파일로 탑재되거나 BlobFuse를 사용하여 가상 파일 시스템으로 액세스되는 Blob을 사용하여 이 작업을 수행할 수 있습니다. 또는 애플리케이션에서 읽고 Blob Storage에 직접 쓸 수 있습니다.
공유 애플리케이션 데이터. 고성능이 필요한 공유 애플리케이션 데이터의 경우 Azure NetApp Files 또는 Azure Files의 프리미엄 계층을 사용합니다. 제한된 성능만 필요한 공유 구성 데이터의 경우 표준 계층의 Azure Files를 사용합니다.
애플리케이션 및 스토리지 요청에 대한 대역폭입니다. 노드에 애플리케이션 요청과 스토리지 요청을 모두 처리하기에 충분한 네트워크 대역폭이 있는지 확인합니다. 전송 프로토콜이 SMB(서버 메시지 블록) 또는 NFS인지 여부에 관계없이 스토리지 트래픽은 네트워크 스택을 통해 전달됩니다.
짧은 대기 시간, 높은 IOPS. Kubernetes에서 자체 데이터베이스를 실행하기 위해 메시징 애플리케이션의 대기 시간이 지속적으로 짧고 IOPS(초당 I/O 작업 수)가 높고 처리량이 높은 애플리케이션이 필요한 경우 스토리지에 디스크를 사용합니다. 최상의 성능을 위해 Azure Premium SSD, Azure Premium SSD v2 또는 Azure Ultra Disk Storage를 사용하는 것이 좋습니다.
디자인 고려 사항
AKS용 스토리지를 디자인하기 위한 고려 사항은 다음과 같습니다. AKS 환경에서 스토리지가 필요한 위치를 고려하고 각 요구 사항에 가장 적합한 솔루션을 결정합니다.
OS(운영 체제) 디스크
OS(운영 체제) 디스크의 경우 다음 요소를 고려합니다.
OS에 대한 임시 디스크. Azure의 각 VM(가상 머신)에는 해당 OS용 디스크가 필요합니다. Kubernetes 노드는 임시 노드이므로 AKS는 기본적으로 지원되는 VM 크기에서 임시 OS 디스크를 사용합니다. 임시 OS 디스크에 대한 자세한 내용은 임시 OS를 참조하세요.
OS용 관리 디스크. 워크로드에 필요한 경우 AKS 클러스터의 노드에 일반 관리 디스크를 대신 사용할 수 있습니다. 이렇게 하면 OS 드라이브에 영구 데이터가 필요한 워크로드가 지원됩니다. 영구 스토리지 옵션에 대한 자세한 내용은 AKS(Azure Kubernetes Service)의 애플리케이션에 대한 스토리지 옵션을 참조하세요.
관리 디스크 크기 조정. 관리 디스크를 OS 디스크로 선택하는 경우 OS, Kubernetes 시스템 및 워크로드의 요구 사항을 지원하기에 적합한 크기인지 확인합니다. 옵션 및 차이점에 대한 자세한 내용은 Azure 관리 디스크 유형을 참조하세요.
애플리케이션 데이터
일부 워크로드에는 애플리케이션 데이터 스토리지를 위한 일관된 데이터 저장소가 필요합니다. 애플리케이션에 데이터베이스가 필요한 경우 다음 옵션을 포함하는 Azure에서 관리되는 데이터베이스를 탐색하는 것이 좋습니다.
AKS의 스토리지 솔루션
관리되는 데이터베이스가 애플리케이션의 요구 사항을 충족하지 않는 경우 AKS에서 일관된 데이터를 저장하는 데 사용할 수 있는 다른 스토리지 옵션을 사용하는 것이 좋습니다. 옵션에는 디스크 기반 솔루션, 임시 디스크, 파일 기반 솔루션, Blob Storage 및 이 문서에서 다루지 않는 기타 옵션이 포함됩니다.
디스크 기반 솔루션
디스크 또는 블록 스토리지는 원시 블록 기반 디바이스에 데이터를 직접 저장하는 데 적합합니다. 디스크 기반 스토리지는 Kubernetes 클러스터가 호스트하는 데이터베이스에 대한 데이터를 저장하는 데 적합합니다. Azure에서 관리 디스크는 블록 기반 스토리지를 가져오는 솔루션입니다.
정적 또는 동적으로 생성된 디스크 스토리지. AKS 외부에서 만든 정적 디스크를 사용할지 아니면 Pod 또는 Pod가 필요로 하는 대로 AKS에서 디스크 스토리지를 동적으로 생성할지 여부를 고려합니다. 동적으로 만든 스토리지는 동적으로 삭제할 수도 있습니다. 자세한 내용은 다음을 참조하세요.
중복성 및 성능. 워크로드에 필요한 스토리지 중복성 및 성능을 고려합니다. 자세한 내용은 다음을 참조하세요.
공유 디스크. 공유 디스크가 필요한지 여부를 고려합니다. 옵션에 대한 자세한 내용은 Azure 관리 디스크 공유를 참조하세요.
디스크 및 처리량에 대한 노드 크기. Kubernetes 노드의 크기를 고려합니다. 디스크 수와 집계 처리량 요구 사항을 모두 지원할 수 있을 만큼 충분히 커야 합니다. 크기 및 특성에 대한 자세한 내용은 Azure의 가상 머신 크기를 참조하세요.
디스크 크기 및 필요한 성능. 관리 디스크의 크기가 워크로드의 성능 요구 사항에 적합한지 여부를 고려합니다. 표준 HDD, 표준 SSD 및 프리미엄 SSD v1의 디스크 크기가 증가함에 따라 성능이 향상됩니다. 관리 디스크에 대한 자세한 내용은 Azure 관리 디스크 유형을 참조하세요.
임시 디스크 솔루션
애플리케이션에 비영구적 임시 스토리지가 필요한지 또는 스토리지 최적화 VM에서 고성능 드라이브를 사용할지 여부를 고려합니다. 임시 볼륨에 연결하려면 Kubernetes의 emptyDir 옵션 또는 CSI 임시 로컬 볼륨용 드라이버를 사용할 수 있습니다. 스크래치 공간과 같은 임시 데이터에는 emptyDir을 사용하는 것이 좋습니다. 스토리지 최적화 VM 시리즈의 스토리지의 경우 임시 로컬 볼륨과 함께 CSI를 사용하는 것이 좋습니다. CSI 드라이버에 대한 자세한 내용은 AKS(Azure Kubernetes Service)의 CSI(컨테이너 스토리지 인터페이스) 드라이버를 참조하세요.
파일 기반 솔루션
Pod가 파일 시스템을 공유해야 하는지 여부를 고려합니다. 공유 파일 시스템은 Kubernetes 클러스터의 여러 Pod에서 읽고 공유하는 애플리케이션 및 구성 데이터에 적합합니다. 파일 스토리지는 NFS 또는 SMB/CIFS(Common Internet File System)를 통해 공유 파일 시스템을 노출합니다. Azure에는 파일 기반 스토리지에 대한 두 가지 솔루션인 Azure Files 및 Azure NetApp Files가 있습니다.
Azure 파일
Azure Files의 경우 다음 옵션을 고려합니다.
정적 또는 동적으로 생성된 파일 공유. AKS 외부에서 만든 정적 파일 공유를 사용할지 아니면 AKS가 사용자를 대신하여 파일 공유를 동적으로 만들 것인지를 고려합니다. 자세한 내용은 다음을 참조하세요.
표준 또는 프리미엄 성능. 표준 성능이 충분한지 또는 Azure Files의 프리미엄 성능이 필요한지 평가합니다.
SMB/CIFS 또는 NFS. Azure Files에 액세스하려면 워크로드가 기본 프로토콜인 SMB/CIFS용 API를 사용해야 하는지 또는 워크로드에 NFS 지원이 필요한지 평가합니다.
액세스에 대한 네트워크 모델. Azure Files에 액세스하는 데 사용할 네트워크 모델(직접 공용 IP 주소, 서비스 엔드포인트 또는 프라이빗 링크를 통한 액세스)을 고려합니다.
Azure NetApp Files
Azure NetApp Files의 경우 다음 옵션을 고려합니다.
정적 또는 동적으로 생성된 Azure NetApp Files 공유. 워크로드가 AKS 외부에서 생성된 정적 Azure NetApp Files 공유를 사용할지 아니면 AKS가 Astra Control을 통해 파일 공유를 동적으로 만들 것인지를 고려합니다. 자세한 내용은 다음을 참조하세요.
성능을 평가합니다. 워크로드에 필요한 성능 계층을 평가합니다. 자세한 내용은 Azure NetApp Files에 대한 성능 고려 사항을 참조하세요.
네트워크를 계획합니다. Azure NetApp Files에 대한 네트워킹 권장 사항을 살펴봅니다. 자세한 내용은 Azure NetApp Files 네트워크 계획 지침을 참조하세요.
Blob Storage
애플리케이션에서 저장해야 하는 비정형 데이터의 양을 고려합니다. Azure Blob Storage는 HTTP API 또는 SDK를 통해 액세스할 수 있습니다. Blob Storage를 컨테이너 또는 Pod에 파일 시스템으로 탑재하는 것은 로그 파일, 이미지, 문서, 스트리밍 미디어 및 재해 복구 데이터와 같은 많은 양의 비정형 데이터가 있는 애플리케이션 워크로드에 적합합니다.
데이터 중복성. 애플리케이션에 적합한 데이터 중복성을 고려합니다. 자세한 내용은 Azure Storage 중복성을 참조하세요. 데이터 중복성은 스토리지 계정 수준에서 선택됩니다.
성능 계층. 애플리케이션에 필요한 Blob Storage의 성능 계층을 고려합니다. 자세한 내용은 Blob 데이터에 대한 핫, 쿨 및 보관 액세스 계층을 참조하세요.
액세스에 대한 인증 방법. 애플리케이션이 Blob Storage에 액세스하는 데 사용해야 하는 인증 방법(스토리지 키, SAS 또는 Microsoft Entra ID)을 고려합니다. 자세한 내용은 Azure Storage의 데이터에 대한 액세스 권한 부여를 참조하세요.
Blob Storage를 추상화하기 위한 API. 사용할 API를 고려합니다. 일반적으로 Blob Storage에 액세스하는 애플리케이션은 Kubernetes 클러스터에서 Blob Storage와의 상호 작용을 추상화하는 SDK 중 하나를 통해 애플리케이션의 API를 사용합니다. 다양한 프로그래밍 언어용 라이브러리에 대한 자세한 내용은 Azure Blob Storage 소개를 참조하세요.
정적 또는 동적으로 생성된 Blob 스토리지. AKS 외부에서 만든 정적 Blob Storage 컨테이너를 사용할지 아니면 AKS가 사용자를 대신하여 Blob Storage 컨테이너를 동적으로 만들 것인지를 고려합니다. 자세한 내용은 다음을 참조하세요.
스토리지에 액세스하기 위한 드라이버. 애플리케이션이 Blob Storage에 액세스하는 방법을 고려합니다. 파일 시스템으로 액세스하려면 Kubernetes에서 Blob CSI 드라이버를 사용하면 됩니다. 이 드라이버를 사용하면 NFSv3 프로토콜 또는 퓨즈 드라이버를 통해 Blob Storage에 액세스할 수 있습니다.
기타 스토리지 솔루션
애플리케이션에 이 문서에 설명되지 않은 항목이 필요한 경우 다른 유형의 스토리지를 고려합니다. Azure에는 Kubernetes와 통합할 수 있는 여러 특수 스토리지 솔루션이 있습니다. 이 문서에서는 이러한 사항을 다루지 않지만 다음 목록에서 가능한 솔루션을 식별합니다.
Azure HPC 캐시. HPC Cache는 HPC(고성능 컴퓨팅) 작업을 위해 데이터 액세스 속도를 높입니다. Azure에서 파일을 캐싱하여 Azure HPC Cache는 기존 워크플로에 대한 클라우드 컴퓨팅의 확장성을 제공합니다. 자세한 내용은 Azure Kubernetes Service와 Azure HPC Cache 통합을 참조하세요.
Azure Data Lake Storage Gen2. Data Lake Storage Gen2는 Hadoop 및 Spark와 같은 빅 데이터 워크로드에 최적화된 특별한 유형의 Blob Storage입니다. 자세한 내용은 Azure Data Lake Storage Gen2 소개를 참조하세요.
디자인 권장 사항
이 섹션에서는 Azure 고객에게 효과적인 것으로 입증된 내용을 기반으로 하는 권장 사항을 제공합니다.
Azure Private Link를 사용합니다. 보안을 위해 이를 지원하는 모든 스토리지 솔루션에 Azure Private Link를 사용하는 것이 좋습니다. Azure Private Link를 사용하면 가상 네트워크의 프라이빗 엔드포인트를 통해 Azure Storage 및 SQL Database, Azure 호스팅 서비스와 같은 Azure 서비스에 액세스할 수 있습니다. 자세한 내용은 Azure Private Link란?을 참조하세요.
OS에 임시 디스크를 사용합니다. OS 디스크의 경우 임시 디스크를 사용하는 것이 좋습니다. 이 기능을 활용하려면 적절한 크기의 임시 디스크가 있는 VM 크기를 선택합니다. 자세한 내용은 Azure VM용 임시 OS 디스크를 참조하세요.
관리형 데이터베이스를 사용합니다. 애플리케이션 데이터의 경우 관리형 데이터베이스를 사용하는 것이 좋습니다. 데이터베이스 옵션 목록은 Azure의 데이터베이스 유형을 참조하세요.
다음 섹션에서는 Azure 디스크, Azure Files 및 Blob Storage에 대한 추가 권장 사항을 설명합니다.
Azure 디스크
Azure 디스크의 경우 다음 디자인 옵션을 사용하는 것이 좋습니다.
프리미엄 또는 울트라 디스크를 사용합니다. 대부분의 경우 적절한 성능을 보장하기 위해 프리미엄 또는 울트라 디스크를 사용하는 것이 좋습니다. 자세한 내용은 Azure Disk Storage를 참조하세요.
디스크 및 처리량에 대한 노드 크기를 조정합니다. Kubernetes 노드의 크기가 디스크 수와 집계 처리량의 양을 지원할 만큼 충분히 큰지 확인하는 것이 좋습니다. 크기 및 특성에 대한 자세한 내용은 Azure의 가상 머신 크기를 참조하세요.
영구 볼륨의 스냅샷을 만듭니다. 스냅샷 데이터로 미리 채워진 새 볼륨을 프로비전하거나 Azure Disks CSI 드라이버의 스냅샷 기능을 사용하여 기존 볼륨을 이전 상태로 복원하려면 영구 볼륨의 스냅샷을 만드는 것이 좋습니다. 자세한 내용은 볼륨 스냅샷을 참조하세요.
디스크 간에 디스크 스트라이프를 방지합니다. Kubernetes의 여러 디스크에서 스트라이프를 방지하는 것이 좋습니다.
PV/PVC를 사용합니다. Kubernetes에서 PV 및 PVC를 사용하여 필요한 경우 동적으로 디스크를 만드는 것이 좋습니다. 영구 스토리지에 대한 자세한 내용은 AKS(Azure Kubernetes Service)의 애플리케이션에 대한 스토리지 옵션을 참조하세요.
Azure 파일
Azure Files의 경우 다음 디자인 옵션을 사용하는 것이 좋습니다.
프리미엄을 선택합니다. 성능이 중요한 경우 프리미엄 계층을 사용하는 것이 좋습니다.
전용 스토리지 계정을 만듭니다. 파일 공유에 전용 스토리지 계정을 제공하는 것이 좋습니다.
정적 또는 동적으로 생성된 파일 공유를 선택합니다. AKS에서 파일 공유를 만들 것인지 아니면 Kubernetes 외부에서 정적으로 만들 것인지를 신중하게 고려해야 합니다. 동적으로 만든 스토리지는 동적으로 삭제할 수도 있습니다. AKS가 파일 공유를 동적으로 만들 수 있도록 하는 방법에 대한 자세한 내용은 Azure Files가 있는 영구 볼륨을 동적으로 만들고 사용을 참조하세요.
Azure NetApp Files
Azure NetApp Files의 경우 다음 디자인 옵션을 사용하는 것이 좋습니다.
애플리케이션 요구 사항에 따라 성능 계층을 선택합니다. Azure NetApp Files는 다양한 성능 클래스를 제공하는 3개의 성능 계층을 제공합니다. 자세한 내용은 Azure NetApp Files에 대한 성능 고려 사항을 참조하세요.
AKS 클러스터와 동일한 Azure 지역에 용량 풀을 만듭니다. 자세한 내용은 Azure NetApp Files에 대한 용량 풀 만들기를 참조하세요.
용량 풀에 자동 QoS 유형을 사용합니다.
네트워크를 계획합니다. 네트워크 디자인에는 두 가지 옵션이 있습니다.
- AKS 및 Azure NetApp Files에 동일한 VNet을 사용하는 경우 Azure NetApp Files용 전용 서브넷을 만들고 Microsoft.NetApp/Volumes에 서브넷을 위임합니다.
- 다른 VNet을 사용하는 경우 VNet 간에 피어링을 설정합니다.
Blob Storage
Blob Storage의 경우 다음 디자인 옵션을 사용하는 것이 좋습니다.
SDK를 사용하여 스토리지와 인터페이스합니다. 애플리케이션 수준 SDK를 사용하여 Blob Storage와 인터페이스하는 것이 좋습니다.
NFS와 함께 CSI를 사용하여 스토리지와 인터페이스합니다. 애플리케이션 수준 SDK를 사용하여 Blob Storage와 인터페이스할 수 없는 경우 Blob CSI 드라이버에서 NFS v3 옵션을 사용하는 것이 좋습니다. 자세한 내용은 Azure Blob Storage CSI(Container Storage Interface) 드라이버 사용을 참조하세요.
액세스를 위해 Microsoft Entra ID를 사용합니다. Blob Storage에 대한 액세스 권한을 부여하려면 Microsoft Entra ID를 사용하는 것이 좋습니다. 공유 스토리지 계정 키를 사용하지 않습니다. 자세한 내용은 Azure Active Directory를 사용하여 Blob에 대한 액세스 권한 부여를 참조하세요.
계층 수준을 조정합니다. 자주 액세스하지 않는 데이터를 쿨러 액세스 계층으로 이동하려면 수명 주기 관리 정책을 사용하는 것이 좋습니다. 자세한 내용은 Blob 데이터에 대한 핫, 쿨 및 보관 액세스 계층을 참조하세요.
다음 단계
Kubecost를 사용하여 AKS에서 배포, 서비스, 레이블, Pod 또는 네임스페이스로 비용 할당 범위를 지정하는 방법을 알아봅니다.