AKS(Azure Kubernetes Service)의 CSI(Container Storage Interface) 드라이버
CSI(Container Storage Interface)는 Kubernetes에서 컨테이너화된 워크로드에 임의 블록 및 파일 스토리지 시스템을 노출하는 표준입니다. CSI를 채택하고 사용하면 AKS(Azure Kubernetes Service)는 플러그 인을 작성, 배포, 반복하여 핵심 Kubernetes 코드를 조정하고 릴리스 주기를 기다릴 필요 없이 Kubernetes에서 새로운 스토리지 시스템을 공개하거나 기존 스토리지 시스템을 개선할 수 있습니다.
AKS의 CSI 스토리지 드라이버 지원을 통해 기본적으로 다음을 사용할 수 있습니다.
- Azure Disks를 사용하여 Kubernetes DataDisk 리소스를 만들 수 있습니다. 디스크는 고성능 SSD를 통해 지원되는 Azure Premium Storage 또는 일반 HDD나 표준 SSD를 통해 지원되는 Azure Standard Storage를 사용할 수 있습니다. 대부분의 프로덕션 및 개발 워크로드에는 Premium Storage를 사용합니다. Azure Disks는 ReadWriteOnce로 탑재되며 AKS의 한 노드에서만 사용할 수 있습니다. 여러 노드에서 동시에 액세스할 수 있는 스토리지 볼륨의 경우 Azure Files를 사용합니다.
- Azure Files를 사용하여 Azure Storage 계정을 통해 지원되는 SMB 3.0/3.1 공유를 Pod에 탑재할 수 있습니다. Azure Files를 사용하면 여러 노드 및 Pod 간에 데이터를 공유할 수 있습니다. Azure Files는 일반 HDD를 통해 지원되는 Azure 표준 스토리지 또는 고성능 SSD를 통해 지원되는 Azure 프리미엄 스토리지를 사용할 수 있습니다.
- Azure Blob 스토리지를 사용하여 Blob 스토리지(또는 개체 스토리지)를 파일 시스템으로 컨테이너 또는 Pod에 탑재할 수 있습니다. Blob 스토리지를 사용하면 클러스터에서 로그 파일 데이터, 이미지 또는 문서, HPC 등과 같은 대규모 비정형 데이터 세트를 사용하는 애플리케이션을 지원할 수 있습니다. 또한 Azure Data Lake 스토리지에 데이터를 수집하는 경우 다른 중간 파일 시스템을 구성하지 않고도 AKS에서 직접 탑재하고 사용할 수 있습니다.
팁
데이터에 대한 블록 수준 액세스를 위한 완전 관리형 솔루션을 원하는 경우 CSI 드라이버 대신 Azure Container Storage를 사용하는 것이 좋습니다. Azure Container Storage는 Kubernetes와 통합되어 영구 볼륨의 동적 및 자동 프로비저닝을 허용합니다. Azure Container Storage는 Azure Disks, 임시 디스크 및 Azure Elastic SAN(미리 보기)을 백업 스토리지로 지원하여 Kubernetes 클러스터에서 실행되는 상태 저장 애플리케이션에 유연성과 확장성을 제공합니다.
필수 조건
- Azure CLI 2.42 이상 버전을 설치하고 구성해야 합니다.
az --version
을 실행하여 버전을 찾습니다. 설치 또는 업그레이드해야 하는 경우 Azure CLI 설치를 참조하세요. - 클러스터에 오픈 소스 CSI 스토리지 드라이버가 설치되어 있는 경우 Azure Storage CSI 드라이버를 사용하도록 설정하기 전에 이를 제거합니다.
- AKS 정책 정의 Kubernetes 클러스터는 CSI(Container Storage Interface) 드라이버 StorageClass를 사용해야 함에 대한 Azure Policy를 적용하려면 Azure Policy 추가 기능이 신규 클러스터와 기존 클러스터에서 사용하도록 설정되어야 합니다. 기존 클러스터의 경우 Kubernetes용 Azure Policy 알아보기를 검토하여 사용하도록 설정합니다.
디스크 암호화 지원 시나리오
CSI 스토리지 드라이버는 다음 시나리오를 지원합니다.
- 다른 Microsoft Entra 테넌트에 저장된 Azure Key Vault를 사용하는 고객 관리형 키로 암호화된 관리 디스크.
- 고객 관리형 키를 사용하여 AKS OS 및 애플리케이션 데이터를 호스트하는 Azure Storage 디스크를 암호화합니다.
기존 클러스터에서 CSI 스토리지 드라이버 활성화
새 클러스터에서 CSI 스토리지 드라이버를 사용하도록 설정하려면 스토리지 시스템에 따라 다음 매개 변수 중 하나를 포함합니다.
--enable-disk-driver
를 사용하면 Azure Disks CSI 드라이버를 사용하도록 설정할 수 있습니다.--enable-file-driver
를 사용하면 Azure Files CSI디스크 드라이버를 사용하도록 설정할 수 있습니다.--enable-blob-driver
를 사용하면 Azure Blob Storage CSI 드라이버를 사용하도록 설정할 수 있습니다.--enable-snapshot-controller
를 사용하면 스냅샷 컨트롤러를 사용하도록 설정할 수 있습니다.
az aks update --name myAKSCluster --resource-group myResourceGroup --enable-disk-driver --enable-file-driver --enable-blob-driver --enable-snapshot-controller
이 작업을 완료하는 데 몇 분 정도 걸릴 수 있습니다. 완료되면 클러스터에서 드라이버를 사용하도록 설정한 상태가 출력에 표시되어야 합니다. 다음 예제는 Blob 스토리지 CSI 드라이버를 사용하도록 설정할 때 결과를 나타내는 섹션과 유사합니다.
"storageProfile": {
"blobCsiDriver": {
"enabled": true
},
새 클러스터 또는 기존 클러스터에서 CSI 스토리지 드라이버 사용 안 함
새 클러스터에서 CSI 스토리지 드라이버를 사용하지 않도록 설정하려면 스토리지 시스템에 따라 다음 매개 변수 중 하나를 포함합니다.
--disable-disk-driver
를 사용하면 Azure Disks CSI디스크 드라이버를 사용하지 않도록 설정할 수 있습니다.--disable-file-driver
를 사용하면 Azure Files CSI디스크 드라이버를 사용하지 않도록 설정할 수 있습니다.--disable-blob-driver
를 사용하면 Azure Blob Storage CSI 드라이버를 사용하지 않도록 설정할 수 있습니다.--disable-snapshot-controller
를 사용하면 스냅샷 컨트롤러를 사용하지 않도록 설정할 수 있습니다.
az aks create \
--name myAKSCluster \
--resource-group myResourceGroup \
--disable-disk-driver \
--disable-file-driver \
--disable-blob-driver \
--disable-snapshot-controller \
--generate-ssh-keys
기존 클러스터에서 CSI 스토리지 드라이버를 사용하지 않도록 설정하려면 스토리지 시스템에 따라 이전에 나열된 매개 변수 중 하나를 사용합니다.
az aks update \
--name myAKSCluster \
--resource-group myResourceGroup \
--disable-disk-driver \
--disable-file-driver \
--disable-blob-driver \
--disable-snapshot-controller
참고 항목
CSI 볼륨을 삭제할 때 PersistentVolume 개체 대신 해당 PersistentVolumeClaim 개체를 삭제하는 것이 좋습니다. CSI 드라이버의 외부 프로비저닝 프로그램은 PersistentVolumeClaim의 삭제에 반응하고 해당 재사용 정책에 따라 CSI 볼륨 드라이버 명령에 대해 DeleteVolume 호출을 실행하여 볼륨을 삭제합니다. 그런 다음 PersistentVolume 개체가 삭제됩니다.
사용자 지정 트리 내 스토리지 클래스를 CSI로 마이그레이션
Kubernetes 버전 1.26부터 트리 내 영구 볼륨 유형 kubernetes.io/azure-disk 및 kubernetes.io/azure-file은 더 이상 사용되지 않으며 더 이상 지원되지 않습니다. 트리 내 드라이버는 플러그 인인 CSI 드라이버와 달리 핵심 Kubernetes 코드의 일부인 스토리지 드라이버를 나타냅니다.
사용 중단 후 이러한 드라이버를 제거하는 것은 계획되지 않지만 해당 CSI 드라이버 disk.csi.azure.com 및 file.csi.azure.com 마이그레이션해야 합니다. 스토리지 클래스에 대한 마이그레이션 옵션을 검토하고 Azure Disks 및 Azure Files CSI 드라이버를 사용하도록 클러스터를 업그레이드하려면 트리 내 드라이버에서 CSI 드라이버로 마이그레이션을 참조하세요.
트리 내 드라이버 스토리지 클래스를 만든 경우 클러스터를 1.21.x로 업그레이드한 후 CSI 마이그레이션이 설정되므로 이러한 스토리지 클래스가 계속 작동합니다. CSI 기능을 사용하려면 마이그레이션을 수행해야 합니다.
다음 단계
- Azure Disks용 CSI 드라이버를 사용하려면 CSI 드라이버에서 Azure Disks 사용을 참조하세요.
- Azure Files용 CSI 드라이버를 사용하려면 CSI 드라이버에서 Azure Files 사용을 참조하세요.
- Azure Blob 스토리지용 CSI 드라이버를 사용하려면 CSI 드라이버와 함께 Azure Blob 스토리지 사용을 참조하세요.
- 스토리지 모범 사례에 대한 자세한 내용은 Azure Kubernetes Service의 스토리지 및 백업 모범 사례를 참조하세요.
- CSI 마이그레이션에 대한 자세한 내용은 트리 내 Kubernetes에서 CSI 볼륨으로 마이그레이션을 참조하세요.
Azure Kubernetes Service