Kubernetes 클러스터에 대한 스토리지 옵션
이 문서에서는 Amazon EKS(Amazon Elastic Kubernetes Service) 및 AKS(Azure Kubernetes Service)의 스토리지 기능을 비교하고 AKS에 워크로드 데이터를 저장하는 옵션을 설명합니다.
참고 항목
이 문서는 Amazon EKS에 익숙한 전문가가 Azure Kubernetes Service(AKS)를 이해하는 데 도움이 되는 일련의 문서의 일부입니다.
Amazon EKS 스토리지 옵션
Amazon EKS에서 Kubernetes 버전 1.11 이후의 클러스터에는 영구 볼륨 클레임에 대해 gp2
가 호출되는 기본 StorageClass가 있습니다. 관리자는 드라이버를 추가하여 다음과 같은 보다 많은 스토리지 클래스를 정의할 수 있습니다.
- Amazon EKS 추가 항목으로서의 Amazon EBS CSI 드라이버
- Amazon EBS CSI 자체 관리형 추가 항목
- Amazon EFS CSI 드라이버
- Lustre CSI 드라이버용 Amazon FSx
- NetApp ONTAP CSI 드라이버용 Amazon FSx
드라이버 및 스토리지 클래스를 추가하면 다음과 같은 스토리지 서비스를 사용할 수 있습니다.
Amazon EBS(Amazon Elastic Block Store)는 영구 데이터를 저장하기 위해 Amazon EC2(Elastic Compute Cloud) 인스턴스와 함께 사용되는 블록 수준 스토리지 솔루션입니다. 이 서비스는 필요한 성능에 따라 표준 SSD, 프리미엄 SSD 또는 Ultra Disk Storage와 같은 여러 SKU가 있는 Azure Disk Storage와 유사합니다.
Amazon EFS(Amazon Elastic File System)는 인스턴스 간에 공유할 수 있는 외부 파일 시스템에 대한 네트워크 파일 시스템 액세스를 제공합니다. 이와 유사한 Azure 솔루션은 SMB(서버 메시지 블록) 3.0 및 NFS 액세스가 모두 포함된 Azure Files 및 Azure Files Premium입니다.
Lustre는 HPC(고성능 컴퓨팅)에서 일반적으로 사용되는 오픈 소스 파일 시스템입니다. Azure에서는 기계 학습 및 HPC와 같이 속도가 중요한 워크로드에 Ultra Disk Storage 또는 Azure HPC Cache를 사용할 수 있습니다.
NETApp ONTAP는 AWS(Amazon Web Services)의 완전 관리형 ONTAP 공유 스토리지입니다. Azure NetApp Files은 NetApp 기술을 기반으로 Azure에 구축된 유사한 파일 스토리지 서비스입니다.
AKS 스토리지 옵션
각 AKS 클러스터에는 기본적으로 다음과 같은 미리 만들어진 스토리지 클래스가 포함됩니다.
- 기본 스토리지 클래스인
managed-csi
는 Disk Storage 표준 SSD를 사용합니다. 표준 SSD는 IOPS(초당 낮은 입력 출력 작업)에서 일관된 성능이 필요한 워크로드에 최적화된 비용 효율적인 스토리지 옵션입니다. managed-csi-premium
클래스는 Disk Storage Premium SSD 관리 디스크를 사용합니다.azurefile-csi
클래스는 Azure Files를 사용하여 SMB 또는 NFS를 통해 동일한 스토리지 볼륨에 대한 동시 공유 액세스를 제공합니다.azurefile-csi-premium
클래스는 IOPS 집약적 워크로드를 사용하는 파일 공유에 Azure Files Premium을 사용합니다. Azure Files Premium은 SSD 스토리지에서 지원되는 짧은 대기 시간과 높은 처리량을 제공합니다.
다른 스토리지 클래스를 추가하고 다음과 같은 사용 가능한 다른 스토리지 솔루션과 통합하여 이러한 옵션을 확장할 수 있습니다.
- Ultra Disk Storage
- Azure NetApp Files
- HPC Cache
- NFS 서버
- 타사 브라우저 스토리지 솔루션
Azure Disk Storage
기본적으로 AKS 클러스터는 Disk Storage를 사용하는 미리 만들어진 managed-csi
및 managed-csi-premium
스토리지 클래스와 함께 제공됩니다. Amazon EBS와 마찬가지로 이러한 클래스는 Pod 액세스를 위해 노드에 연결된 관리 디스크 또는 차단 디바이스를 만듭니다.
Disk 클래스는 정적 및 동적 볼륨 프로비저닝을 모두 허용합니다. 회수 정책은 영구 볼륨을 사용하여 디스크가 삭제되도록 보장합니다. 영구 볼륨 클레임을 편집하여 디스크를 확장할 수 있습니다.
이러한 스토리지 클래스는 LRS(로컬 중복 스토리지)가 있는 Azure 관리 디스크를 사용합니다. LRS는 데이터에 Azure 주 지역의 단일 물리적 위치 내에 세 개의 동기 복사본이 있음을 의미합니다. LRS는 가장 저렴한 복제 옵션이지만 데이터 센터 오류에 대한 보호를 제공하지는 않습니다. 이러한 위험을 완화하려면 기본 제공 스냅샷 기술을 사용할 수 있는 Velero 또는 Azure Backup과 같은 솔루션을 사용하여 Disk Storage 데이터의 정기적인 백업 또는 스냅샷을 만듭니다.
두 스토리지 클래스는 모두 관리 디스크에서 지원되며 둘 다 SSD(반도체 디스크) 드라이브를 사용합니다. 표준 디스크와 프리미엄 디스크의 다음 차이점을 이해하는 것이 중요합니다.
- 표준 디스크는 크기 및 스토리지 트랜잭션에 따라 가격이 책정됩니다.
- 프리미엄 디스크는 크기별로만 요금이 부과되므로 많은 수의 트랜잭션이 필요한 워크로드에 대해 더 저렴할 수 있습니다.
- 프리미엄 SSD는 해당 비교와 같이 더 높은 최대 처리량 및 IOPS를 제공합니다.
- 대부분의 프로덕션 및 개발 워크로드에는 프리미엄 스토리지를 사용합니다.
Azure 관리 디스크를 기본 스토리지 클래스로 사용하는 경우 Kubernetes 클러스터에 대해 선택한 VM(가상 머신) SKU를 고려합니다. Azure VM은 연결할 수 있는 디스크 수를 제한하며, 해당 제한은 VM 크기에 따라 달라집니다. Azure Disks는 ReadWriteOnce
로 탑재되므로 단일 Pod에서만 사용할 수 있습니다.
Azure 프리미엄 SSD v2 디스크
Azure 프리미엄 SSD v2 디스크는 IO 집약적인 엔터프라이즈 워크로드와 일관된 밀리초 이하의 디스크 대기 시간, 높은 IOPS/처리량을 제공합니다. 프리미엄 SSD v2 디스크의 성능(용량, 처리량 및 IOPS)은 언제든지 독립적으로 구성할 수 있으므로 성능 요구 사항을 충족하는 동안 더 많은 시나리오를 비용 효율적으로 수행할 수 있습니다. Azure Premium SSD v2 디스크를 사용하도록 새 AKS 클러스터 또는 기존 AKS 클러스터를 구성하는 방법에 대한 자세한 내용은 Azure Kubernetes Service에서 Azure Premium SSD v2 디스크 사용을 참조하세요.
Ultra Disk Storage
Ultra Disk Storage는 Azure VM에 대해 높은 처리량, 높은 IOPS 및 일관된 짧은 대기 시간 디스크 스토리지를 제공하는 Azure 관리 디스크 계층입니다. Ultra Disk Storage는 데이터 및 트랜잭션이 많은 워크로드를 위한 것입니다. 다른 Disk Storage SKU 및 Amazon EBS와 마찬가지로 Ultra Disk Storage는 한 번에 하나의 Pod를 탑재하며 동시 액세스를 제공하지 않습니다.
플래그 --enable-ultra-ssd
를 사용하여 AKS 클러스터에서 Ultra Disk Storage를 사용하도록 설정합니다.
Ultra Disk Storage를 선택하는 경우 해당 제한 사항에 유의하고 호환되는 VM 크기를 선택해야 합니다. Ultra Disk Storage는 LRS(로컬 중복 스토리지) 복제와 함께 사용할 수 있습니다.
사용자 고유의 키(BYOK)를 가져옵니다.
Azure는 미사용 관리 디스크의 모든 데이터를 암호화합니다. 기본적으로 데이터는 Microsoft 관리형 키로 암호화됩니다. 암호화 키를 추가로 제어하기 위해 AKS 클러스터의 OS 및 데이터 디스크에서 모두 미사용 암호화에 사용할 고객 관리형 키를 제공할 수 있습니다. 자세한 내용은 AKS(Azure Kubernetes Service)에서 Azure 관리 디스크를 사용하여 BYOK(Bring Your Own Key)를 참조하세요.
Azure 파일
Disk Storage는 볼륨에 대한 동시 액세스를 제공할 수 없지만 Azure Files를 사용하여 SMB 프로토콜을 통해 연결한 다음 Azure Storage에서 지원되는 공유 볼륨을 탑재할 수 있습니다. 이 프로세스는 Amazon EFS와 유사한 네트워크 연결 스토리지를 제공합니다. Disk Storage와 마찬가지로 다음 두 가지 옵션이 있습니다.
- Azure Files 표준 스토리지는 일반 HDD(하드 디스크 드라이브)에서 지원됩니다.
- Azure Files 프리미엄 스토리지는 고성능 SSD 드라이브로 파일 공유를 백업합니다. 프리미엄의 최소 파일 공유 크기는 100GB입니다.
Azure Files에는 오류가 발생한 경우 데이터를 보호하기 위한 다음과 같은 스토리지 계정 복제 옵션이 있습니다.
- Standard_LRS: 표준 로컬 중복 스토리지(LRS)
- Standard_GRS: 표준 지역 중복 스토리지(GRS)
- Standard_ZRS: 표준 지역 중복 스토리지(ZRS)
- Standard_RAGRS: 표준 읽기 액세스 지역 중복 스토리지(RA-GRS)
- Standard_RAGZRS: 표준 읽기 액세스 지역 영역 중복 스토리지(RA-GZRS)
- Premium_LRS: 프리미엄 로컬 중복 스토리지(LRS)
- Premium_ZRS: 프리미엄 영역 중복 스토리지(ZRS)
Azure Files의 비용을 최적화하려면 Azure Files 용량 예약을 구매합니다.
Azure 컨테이너 스토리지
Azure Container Storage는 기본적으로 컨테이너용으로 구축된 클라우드 기반 볼륨 관리, 배포 및 오케스트레이션 서비스입니다. Kubernetes와 통합되어 Kubernetes 클러스터에서 실행되는 상태 저장 애플리케이션의 데이터를 저장하기 위해 영구 볼륨을 동적으로 자동으로 프로비저닝할 수 있습니다.
Azure Container Storage는 실제 데이터 스토리지에 대한 기존 Azure Storage 제품을 활용하고 컨테이너용으로 빌드된 볼륨 오케스트레이션 및 관리 솔루션을 제공합니다. 지원되는 백업 스토리지 옵션은 다음과 같습니다.
- Azure Disks: 스토리지 SKU 및 구성을 세부적으로 제어합니다. 계층 1 및 범용 데이터베이스에 적합합니다.
- 임시 디스크: AKS 노드(NVMe 또는 임시 SSD)의 로컬 스토리지 리소스를 활용합니다. 데이터 내구성 요구 사항이 없거나 기본 제공 데이터 복제 지원이 있는 애플리케이션에 가장 적합합니다. AKS는 AKS 노드에서 사용 가능한 임시 스토리지를 검색하고 볼륨 배포를 위해 획득합니다.
- Azure Elastic SAN:: 완전 관리형 온디맨드 리소스를 프로비저닝합니다. 범용 데이터베이스, 스트리밍 및 메시징 서비스, CD/CI 환경 및 기타 계층 1/계층 2 워크로드에 적합합니다. 여러 클러스터가 동시에 단일 SAN에 액세스할 수 있지만 영구 볼륨은 한 번에 한 소비자에만 연결할 수 있습니다.
지금까지는 컨테이너에 클라우드 스토리지를 제공하려면 IaaS(Infrastructure as a Service) 중심의 워크로드를 위한 스토리지 서비스를 사용하고 컨테이너에서 작동하도록 하려면 개별 CSI(Container Storage Interface) 드라이버를 사용해야 했습니다. 이렇게 하면 운영 오버헤드가 발생하며 애플리케이션 가용성, 스케일링 성능, 성능, 유용성 및 비용에 대한 문제가 발생할 위험이 증가합니다.
Azure Container Storage는 Kubernetes에 컨테이너 스토리지 기능을 제공하는 오픈 소스 솔루션인 OpenEBS에서 파생된 것입니다. Kubernetes 환경에서 마이크로 서비스 기반 스토리지 컨트롤러를 통해 관리형 볼륨 오케스트레이션 솔루션을 제공함으로써 Azure Container Storage는 진정한 컨테이너 네이티브 스토리지를 사용할 수 있게 해줍니다.
Azure Container Storage는 다음 시나리오에 적합합니다.
VM-컨테이너 이니셔티브 가속화: Azure Container Storage는 이전에는 VM에서만 사용할 수 있었던 Azure 블록 스토리지 제품의 전체 범위를 보여 주고 컨테이너에 사용할 수 있게 합니다. 여기에는 Cassandra와 같은 워크로드에 대해 매우 짧은 대기 시간을 제공하는 사용 후 삭제 디스크와 네이티브 iSCSI 및 공유 프로비전된 대상을 제공하는 Azure Elastic SAN이 포함됩니다.
Kubernetes를 사용하여 볼륨 관리 간소화: Azure Container Storage는 Kubernetes 컨트롤 플레인을 통해 볼륨 오케스트레이션을 제공하여 컨트롤 플레인이 달라질 때마다 앞뒤로 이동할 필요 없이 Kubernetes 내에서 볼륨을 쉽게 배포하고 관리할 수 있습니다.
TCO(총 소유 비용 절감): Pod 또는 노드당 지원되는 영구 볼륨의 규모를 늘려 비용 효율성을 개선합니다. 스토리지 리소스를 동적으로 공유하여 프로비전에 필요한 스토리지 리소스를 줄입니다. 스토리지 풀 자체에 대한 스케일업 지원은 지원되지 않습니다.
Azure Container Storage는 다음과 같은 주요 이점을 제공합니다.
상태 저장 Pod의 신속한 스케일 아웃: Azure Container Storage는 네트워크 블록 스토리지 프로토콜(NVMe-oF 또는 iSCSI)를 통해 영구 볼륨을 탑재하여 영구 볼륨의 빠른 연결 및 분리를 제공합니다. 초기화 중 또는 프로덕션 환경에서 애플리케이션이 부족해지거나 중단되지 않도록 하면서 필요에 따라 작은 리소스를 시작하고 배포할 수 있습니다. 클러스터 전체에서 Pod가 다시 생성되어 애플리케이션 복원력이 향상되면서 영구 볼륨의 신속한 이동이 요구됩니다. Azure Container Storage는 원격 네트워크 프로토콜을 사용하여 Pod 수명 주기와 긴밀하게 결합되어 AKS에서 복원력이 뛰어난 대규모 상태 저장 애플리케이션을 지원합니다.
상태 저장 워크로드에 대한 성능 향상: Azure Container Storage는 뛰어난 읽기 성능을 가능하게 하고 RDMA를 통해 NVMe-oF를 사용하여 디스크에 가까운 쓰기 성능을 제공합니다. 이를 통해 고객은 계층 1 I/O 집약적, 범용, 처리량 중요성 및 개발/테스트를 비롯한 다양한 컨테이너 워크로드에 대한 성능 요구 사항을 비용 효율적으로 충족할 수 있습니다. 영구 볼륨의 연결/분리 시간을 가속화하고 Pod 장애 조치 시간을 최소화합니다.
Kubernetes 네이티브 볼륨 오케스트레이션: 스토리지 풀 및 영구 볼륨을 만들고, 스냅샷을 캡처하고, 다양한 컨트롤 플레인 작업을 위해 도구 집합 간을 전환하지 않으면서
kubectl
명령을 사용하여 볼륨의 전체 수명 주기를 관리합니다.
Azure NetApp Files
AWS NetApp ONTAP와 같이 Azure NetApp Files는 엔터프라이즈급, 고성능, 요금제 파일 스토리지 서비스입니다. Azure NetApp Files는 NetApp 솔루션을 사용하여 Azure에서 완전히 관리됩니다. Azure Files와 마찬가지로 Azure NetApp Files는 여러 Pod가 볼륨을 탑재할 수 있습니다. Kubernetes용 오픈 소스 동적 스토리지 오케스트레이터인 Astra Trident를 사용하여 Azure NetApp Files를 사용하도록 AKS 클러스터를 구성할 수 있습니다.
Azure NetApp Files에 대한 리소스 제한에 유의하세요. Azure NetApp Files의 용량 풀 최소 크기는 4TiB입니다. Azure NetApp Files는 사용된 용량이 아닌 프로비전된 크기로 요금이 부과됩니다.
Azure HPC Cache
Azure HPC Cache는 클라우드 솔루션의 모든 확장성을 통해 HPC 작업 데이터에 대한 액세스 속도를 높입니다. 이 스토리지 솔루션을 선택하는 경우 Azure HPC 캐시를 지원하는 지역에 AKS 클러스터를 배포해야 합니다.
NFS 서버
공유 NFS 액세스에 가장 적합한 옵션은 Azure Files 또는 Azure NetApp Files를 사용하는 것입니다. 볼륨을 내보내는 Azure VM에서 NFS 서버를 만들 수도 있습니다.
이 옵션은 정적 프로비저닝만 지원합니다. 서버에서 NFS 공유를 수동으로 프로비전해야 하며 AKS에서 자동으로 프로비전할 수 없습니다.
이 솔루션은 PaaS(Platform as a Service)가 아닌 IaaS(Infrastructure as a Service)를 기반으로 합니다. 사용자는 OS 업데이트, 고가용성, 백업, 재해 복구 및 확장성을 포함하여 NFS 서버 관리를 담당합니다.
사용 후 삭제 OS 디스크
기본적으로 Azure는 VM이 다른 호스트로 재배치될 때 데이터 손실을 방지하기 위해 가상 머신의 운영 체제 디스크를 Azure Storage에 자동으로 복제합니다. 그러나 컨테이너는 로컬 상태를 유지하도록 설계되지 않았기 때문에 이 동작은 제한된 가치를 제공하는 동시에 몇 가지 단점을 제공합니다. 이러한 단점에는 더 느린 노드 프로비전과 더 높은 읽기/쓰기 대기 시간이 포함되지만 이에 국한되지 않습니다.
이와 반대로 임시 OS 디스크는 임시 디스크처럼 호스트 머신에만 저장됩니다. 이 구성을 사용하면 더 빠른 노드 크기 조정 및 클러스터 업그레이드와 함께 읽기/쓰기 대기 시간이 줄어듭니다.
참고 항목
OS에 대한 Azure 관리 디스크를 명시적으로 요청하지 않으면 AKS는 지정된 노드 풀 구성에 사용 가능한 경우 임시 OS를 기본적으로 사용합니다.
자세한 내용은 다음을 참조하세요.
타사 솔루션
Amazon EKS와 마찬가지로 AKS는 Kubernetes 구현이며 타사 Kubernetes 스토리지 솔루션을 통합할 수 있습니다. Kubernetes에 대한 타사 스토리지 솔루션의 몇 가지 예는 다음과 같습니다.
- Rook은 스토리지 관리자 작업을 자동화하여 분산 스토리지 시스템을 자체 관리 스토리지 서비스로 전환합니다. Rook은 각 스토리지 공급자에 대해 Kubernetes 운영자를 통해 서비스를 제공합니다.
- GlusterFS는 일반적인 상용 하드웨어를 사용하여 데이터 사용량이 많고 대역폭 집약적인 작업을 위한 대규모 분산 스토리지 솔루션을 만드는 무료 오픈 소스 확장성 있는 네트워크 파일 시스템입니다.
- Ceph는 상용 하드웨어 구성 요소에서 빌드된 단일 클러스터의 개체, 블록 및 파일 인터페이스를 사용하여 안정적이고 확장성 있는 통합 스토리지 서비스를 제공합니다.
- MinIO는 다중 클라우드 개체 스토리지를 사용하여 엔터프라이즈가 모든 클라우드에서 AWS S3 호환 데이터 인프라를 빌드하여 데이터 및 애플리케이션에 일관되고 이식 가능한 인터페이스를 제공할 수 있습니다.
- Portworx는 Kubernetes 프로젝트 및 컨테이너 기반 이니셔티브를 위한 엔드투엔드 스토리지 및 데이터 관리 솔루션입니다. Portworx는 컨테이너가 세분화된 스토리지, 재해 복구, 데이터 보안 및 다중 클라우드 마이그레이션을 제공합니다.
- Quobyte는 모든 서버 또는 클라우드에 배포하여 성능을 확장하고, 대량의 데이터를 관리하고, 관리를 간소화할 수 있는 고성능 파일 및 개체 스토리지를 제공합니다.
- Ondat은 모든 플랫폼에서 일관된 스토리지 계층을 제공합니다. 스토리지 계층을 관리할 필요 없이 Kubernetes 환경에서 데이터베이스 또는 영구 워크로드를 실행할 수 있습니다.
Kubernetes 스토리지 고려 사항
Amazon EKS 또는 AKS용 스토리지 솔루션을 선택할 때는 다음 요소를 고려합니다.
스토리지 클래스 액세스 모드
Kubernetes 버전 1.21 이상에서 AKS 및 Amazon EKS 스토리지 클래스는 기본적으로 CSI(Container Storage Interface) 드라이버만 사용합니다.
다른 서비스는 액세스 모드가 다른 스토리지 클래스를 지원합니다.
서비스 | ReadWriteOnce | ReadOnlyMany | ReadWriteMany |
---|---|---|---|
Azure 디스크 | X | ||
Azure 파일 | X | X | X |
Azure NetApp Files | X | X | X |
NFS 서버 | X | X | X |
Azure HPC Cache | X | X | X |
동적 및 정적 프로비저닝
볼륨을 동적으로 프로비전하여 영구 볼륨을 정적으로 만드는 관리 오버헤드를 줄입니다. Pod를 삭제할 때 사용되지 않는 디스크가 없도록 올바른 회수 정책을 설정합니다.
Backup
영구 데이터를 백업하는 도구를 선택합니다. 이 도구는 스냅샷, Azure Backup, Velero 또는 Kasten과 같은 스토리지 유형과 일치해야 합니다.
비용 최적화
Azure Storage 비용을 최적화하려면 Azure 예약을 사용합니다. Azure 예약을 지원하는 서비스를 확인해야 합니다. Kubernetes 클러스터에 대한 비용 관리도 참조하세요.
참가자
Microsoft에서 이 문서를 유지 관리합니다. 원래 다음 기여자가 작성했습니다.
주요 작성자:
- Paolo Salvatori | 수석 시스템 엔지니어
- Laura Nicolas | 클라우드 솔루션 설계자
기타 기여자:
- Chad Kittel | 주 소프트웨어 엔지니어
- Ed Price | 선임 콘텐츠 프로그램 관리자
- Theano Petersen | 기술 작가
비공개 LinkedIn 프로필을 보려면 LinkedIn에 로그인합니다.
다음 단계
- Amazon EKS 전문가용 AKS
- Kubernetes ID 및 액세스 관리
- Kubernetes 모니터링 및 로깅
- Kubernetes에 대한 네트워크 액세스 보호
- Kubernetes에 대한 비용 관리
- Kubernetes 노드 및 노드 풀 관리
- 클러스터 거버넌스