Azure VM 하나를 NFS 서버로 세워 두고 그 위의 쿠버네티스가 ReadWriteMany 볼륨을 받아 쓰는 구성은 흔하지만, 그 VM 이 단일 장애점이 된다. OS 패치와 백업, 커널 NFS 튜닝도 전부 직접 떠안는다. Azure 에는 이 자리를 대신할 관리형 서비스가 몇 가지 있고, 성능 요구와 예산에 따라 고르는 지점이 다르다.
| 서비스 | 프로토콜 | 적합한 자리 | 한계 |
|---|---|---|---|
| Azure Files (Premium, 파일 공유) | SMB, NFS 4.1 | 일반적인 RWX 공유. 관리형이고 CSI 드라이버가 있다 | IOPS · 처리량이 프로비저닝한 용량에 비례한다. NFS 는 Premium(FileStorage) 계정에서만 쓸 수 있고 프라이빗 엔드포인트가 사실상 필수다 |
| Azure NetApp Files | NFS 3, NFS 4.1, SMB | 지연에 민감하고 동시 접속이 많은 워크로드 | 비싸다. 전용 위임 서브넷이 필요하고 용량 풀의 최소 크기가 크다 |
| Azure Managed Disk | 블록 | 단일 파드 전용 데이터. 데이터베이스 | ReadWriteOnce. 여러 노드에서 동시에 못 쓴다 |
| Azure Blob + BlobFuse2 | 오브젝트를 파일처럼 | 대용량 순차 읽기, 백업 적재 | POSIX 의미를 완전히 만족하지 않는다. 파일 잠금과 임의 위치 쓰기가 필요한 워크로드에는 쓰지 않는다 |
용도별로 섞어 쓰는 것이 보통이다. 공유 홈 디렉터리와 설정 파일은 Azure Files, 지연이 중요한 공유 작업 영역은 NetApp Files, 데이터베이스는 Managed Disk, 백업은 Blob 으로 나눈다.
Azure NetApp Files 는 VM 에 설치하는 소프트웨어가 아니라 Azure 가 운영하는 NFS · SMB 서비스다. VM 위에 직접 올린 쿠버네티스에서도 그냥 NFS 서버처럼 마운트해 쓸 수 있다.
VNet 10.10.0.0/16
├─ 10.10.1.0/24 VM(쿠버네티스 노드) 서브넷
└─ 10.10.2.0/24 ANF 전용 위임 서브넷 (Microsoft.NetApp/volumes)
Microsoft.NetApp/volumes 로 위임(delegation) 해야 하고 다른 자원과 공유할 수 없다.Microsoft.NetApp 리소스 공급자 등록과 서비스 사용 신청이 먼저 필요하다.az netappfiles account create \
--resource-group RG-NETAPP --account-name anf-account --location koreacentral
az netappfiles pool create \
--resource-group RG-NETAPP --account-name anf-account \
--pool-name pool01 --size 4 --service-level Premium
az netappfiles volume create \
--resource-group RG-NETAPP --account-name anf-account --pool-name pool01 \
--name vol01 --file-path vol01 \
--vnet <VNET_NAME> --subnet <ANF_DELEGATED_SUBNET> \
--usage-threshold 1024 --protocol-types NFSv4.1
--size 는 TiB 단위, --usage-threshold 는 GiB 단위다. 두 값의 단위가 다르다는 점을 자주 놓친다. 서비스 수준(Standard · Premium · Ultra) 은 TiB 당 처리량을 정하므로, 용량이 작으면 서비스 수준을 올려도 절대 처리량이 낮다.
포털의 볼륨 화면에 나오는 마운트 대상 IP 를 확인해 마운트한다.
sudo mkdir -p /mnt/vol01
sudo mount -t nfs -o rw,hard,rsize=262144,wsize=262144,vers=4.1,tcp \
10.10.2.4:/vol01 /mnt/vol01
findmnt /mnt/vol01
내보내기 정책(export policy) 에 노드 대역이 들어 있어야 한다. NFSv4.1 에서 계정 이름을 맞추려면 클라이언트의 /etc/idmapd.conf 의 Domain 을 볼륨 설정과 맞춘다. 맞지 않으면 파일 소유자가 nobody 로 보인다.
VM 위의 자체 클러스터라면 NFS 를 다루는 일반적인 방법을 그대로 쓴다. csi-driver-nfs 를 올리고 StorageClass 의 server 에 마운트 대상 IP, share 에 볼륨 경로를 적으면 된다. AKS 라면 Astra Trident 나 Azure NetApp Files CSI 드라이버를 쓴다.
csi-driver-nfs 설치와 StorageClass 구성.