이 자습서에서는 Azure Container Storage를 소개하고 AKS(Azure Kubernetes Service)에서 실행되는 애플리케이션에 대한 컨테이너 네이티브 스토리지를 배포하고 관리하는 방법을 보여 줍니다. 지금 Azure Container Storage를 배포하지 않으려면 이 자습서를 건너뛰고 AKS에서 애플리케이션 배포를 직접 진행할 수 있습니다. 이 자습서 시리즈의 기본 상점 애플리케이션에는 Azure Container Storage가 필요하지 않습니다.
중요합니다
이 문서에서는 이제 설치를 위해 버전 고정 매개 변수 --container-storage-version 1 가 명시적으로 필요한 Azure Container Storage(버전 1.x.x)를 설치하는 방법을 설명합니다.
이제 Azure Container Storage(버전 2.x.x) 를 사용할 수 있습니다.
Azure Container Storage는 데이터베이스, 분석 플랫폼 및 고성능 애플리케이션을 비롯한 다양한 워크로드에 맞게 조정된 컨테이너 네이티브 스토리지를 제공하여 Kubernetes의 상태 저장 애플리케이션 관리를 간소화합니다.
이 자습서를 마치면 다음을 수행합니다.
- Azure Container Storage가 Kubernetes에서 다양한 워크로드를 지원하는 방법을 이해합니다.
- 여러 스토리지 백 엔드 옵션을 탐색하여 애플리케이션의 요구에 맞게 스토리지를 조정합니다.
- AKS 클러스터에 Azure Container Storage(버전 1.x.x)를 배포하고 제네릭 임시 볼륨을 만듭니다.
시작하기 전 주의 사항:
이전 자습서에서는 컨테이너 이미지를 만들고, ACR 인스턴스에 업로드하고, AKS 클러스터를 만들었습니다. 자습서 1 - AKS용 애플리케이션 준비부터 따라 해보세요.
- 이 자습서에서는 Azure CLI 버전 2.35.0 이상을 사용해야 합니다. 포털 및 PowerShell은 현재 Azure Container Storage에 대해 지원되지 않습니다.
az --version을 사용하여 버전을 확인합니다. 설치하거나 업그레이드하려면 Azure CLI 설치를 참조하세요. Azure Cloud Shell에서 Bash 환경을 사용하는 경우 최신 버전이 이미 설치되어 있습니다. - 스토리지 최적화 VM SKU 또는 GPU 가속 VM SKU를 사용하는 노드가 3개 이상 있는 기존 Linux 기반 AKS 클러스터가 있어야 합니다. 자습서 3 - AKS 클러스터 만들기를 참조하세요.
- Kubernetes 명령줄 클라이언트
kubectl이 필요합니다. Azure Cloud Shell을 사용 중인 경우 이미 설치되어 있으며, 명령az aks install-cli을 실행하여 로컬에 설치할 수 있습니다.
Kubernetes 확장 설치
다음 명령을 실행하여 최신 버전을 k8s-extension 추가하거나 업그레이드합니다.
az extension add --upgrade --name k8s-extension
클러스터에 연결하고 노드 상태 확인
이전 자습서에서 클러스터에 아직 연결되지 않은 경우 다음 명령을 실행합니다. 이미 연결된 경우 이 섹션을 건너뛸 수 있습니다.
다음 명령을 실행하여 클러스터에 연결합니다.
az aks get-credentials --resource-group myResourceGroup --name myAKSClusterkubectl get명령을 사용하여 클러스터에 대한 연결을 확인합니다. 이 명령은 클러스터 노드 목록을 반환합니다.kubectl get nodes다음 출력 예제에서는 클러스터의 노드를 보여 줍니다. 모든 노드의 상태가 준비됨으로 표시되는지 확인합니다.
NAME STATUS ROLES AGE VERSION aks-nodepool1-34832848-vmss000000 Ready agent 80m v1.30.9 aks-nodepool1-34832848-vmss000001 Ready agent 80m v1.30.9 aks-nodepool1-34832848-vmss000002 Ready agent 80m v1.30.9
백업 스토리지 옵션 선택
Azure Container Storage(버전 1.x.x)는 스토리지 풀을 사용하여 영구 및 제네릭 볼륨을 프로비전하고 관리합니다. 각 스토리지 풀은 특정 워크로드에 적합한 다양한 백 엔드 스토리지 옵션을 제공합니다. 올바른 스토리지 유형을 선택하는 것은 워크로드 성능, 내구성 및 비용 효율성을 최적화하는 데 중요합니다. 이 자습서에서는 로컬 NVMe와 함께 임시 디스크를 백업 스토리지로 사용하여 일반 임시 볼륨을 만듭니다. 그러나 영구 볼륨을 만들 수 있는 다른 백업 스토리지 옵션도 살펴보겠습니다.
임시 디스크
임시 디스크는 AKS 노드(로컬 NVMe 또는 임시 SSD)의 로컬 스토리지 리소스를 활용합니다. 하위 ms 대기 시간이 짧고 IOPS가 높지만 VM이 다시 시작되면 데이터 지속성이 없습니다. 임시 디스크는 지속성보다 속도 우선 순위를 지정하는 Cassandra와 같은 애플리케이션에 가장 적합하며 자체 애플리케이션 수준 복제를 사용하는 워크로드에 적합합니다.
VM이 다시 시작되면 데이터가 손실되더라도 임시 디스크를 사용하여 일반 임시 볼륨 또는 영구 볼륨을 만들 수 있습니다.
Azure Disks
PostgreSQL 및 MongoDB와 같은 데이터베이스에 이상적인 Azure Disks는 프리미엄 SSD 및 Ultra SSD를 비롯한 내구성, 확장성 및 다중 계층 성능 옵션을 제공합니다.
Azure Disks는 스토리지 볼륨의 자동 프로비저닝을 허용하며 기본 제공 중복성 및 고가용성을 포함합니다.
Azure Elastic SAN(미리 보기)
확장성과 고가용성이 필요한 공유 스토리지 요구 사항 및 범용 데이터베이스를 위해 설계된 Azure Elastic SAN은 CI/CD 파이프라인 또는 대규모 데이터 처리와 같은 워크로드에 적합합니다.
Azure Container Storage(버전 1.x.x)를 사용하도록 설정하고 스토리지 풀을 만듭니다.
다음 명령을 실행하여 클러스터에 Azure Container Storage를 설치하고 로컬 NVMe 스토리지 풀을 만듭니다.
az aks update -n myAKSCluster -g myResourceGroup --enable-azure-container-storage ephemeralDisk --container-storage-version 1 --storage-pool-option NVMe
배포에는 15분 미만이 소요됩니다.
스토리지 풀 상태 확인
배포가 완료되면 선택한 스토리지 풀 유형의 구성 요소가 사용하도록 설정되고 기본 스토리지 풀이 있습니다.
사용 가능한 스토리지 풀 목록을 얻으려면 다음 명령을 실행합니다.
kubectl get sp -n acstor
스토리지 풀의 상태를 확인하려면 다음 명령을 실행합니다.
kubectl describe sp <storage-pool-name> -n acstor
Message이 StoragePool is ready라고 하지 않으면, 스토리지 풀이 여전히 생성 중이거나 문제가 발생한 것입니다.
사용 가능한 스토리지 클래스 표시
스토리지 풀을 사용할 준비가 되면 스토리지 클래스를 선택하여 볼륨을 만들고 배포할 때 스토리지를 동적으로 만드는 방법을 정의해야 합니다.
kubectl get sc를 실행하여 사용 가능한 스토리지 클래스를 표시합니다.
acstor-<storage-pool-name>라는 스토리지 클래스가 표시됩니다. 다음 섹션에서 이 스토리지 클래스를 사용하여 Pod를 배포합니다.
제네릭 임시 볼륨을 사용하여 Pod 배포
제네릭 임시 볼륨을 사용하는 벤치마킹 및 워크로드 시뮬레이션을 위해 Fio (유연한 I/O 테스터)를 사용하여 Pod를 생성합니다.
즐겨찾는 텍스트 편집기를 사용하여
code acstor-pod.yaml과 같은 YAML 매니페스트 파일을 만듭니다.다음 코드를 붙여넣고 파일을 저장합니다.
kind: Pod apiVersion: v1 metadata: name: fiopod spec: nodeSelector: acstor.azure.com/io-engine: acstor containers: - name: fio image: nixery.dev/shell/fio args: - sleep - "1000000" volumeMounts: - mountPath: "/volume" name: ephemeralvolume volumes: - name: ephemeralvolume ephemeral: volumeClaimTemplate: metadata: labels: type: my-ephemeral-volume spec: accessModes: [ "ReadWriteOnce" ] storageClassName: acstor-ephemeraldisk-nvme # replace with the name of your storage class if different resources: requests: storage: 1Gi볼륨의 스토리지 크기를 변경하는 경우 크기가 단일 노드의 임시 디스크의 사용 가능한 용량보다 작은지 확인합니다. 실행
kubectl get diskpool -n acstor하여 사용 가능한 용량을 확인합니다.YAML 매니페스트 파일을 적용하여 Pod를 배포합니다.
kubectl apply -f acstor-pod.yaml다음과 비슷한 결과가 나타나야 합니다.
pod/fiopod createdPod가 실행 중이고 임시 볼륨 클레임이 Pod에 성공적으로 바인딩되었는지 확인합니다.
kubectl describe pod fiopod kubectl describe pvc fiopod-ephemeralvolume
이제 로컬 NVMe를 스토리지로 사용하는 Pod를 배포했으며 Kubernetes 워크로드에 사용할 수 있습니다.
추가 볼륨을 프로비전하기 전에 사용 가능한 임시 디스크 용량을 확인합니다.
kubectl describe node <node-name>
영구 볼륨을 만드는 방법을 포함하여 Azure Container Storage(버전 1.x.x)에 대한 자세한 내용은 Azure Container Storage란?을 참조하세요.
자원을 정리하세요
이 자습서 시리즈의 나머지 부분에는 Azure Container Storage가 필요하지 않으므로 불필요한 Azure 요금이 발생하지 않도록 지금 삭제하는 것이 좋습니다.
Pod를 삭제합니다.
kubectl delete pod fiopod스토리지 풀을 삭제합니다.
kubectl delete sp -n acstor <storage-pool-name>확장 인스턴스를 삭제합니다.
az aks update -n myAKSCluster -g myResourceGroup --disable-azure-container-storage all
다음 단계
이 자습서에서는 AKS 클러스터에 Azure Container Storage(버전 1.x.x)를 배포했습니다. 당신은 다음을 배우셨습니다:
- AKS 클러스터에서 Azure Container Storage(버전 1.x.x)를 사용하도록 설정합니다.
- 백업 스토리지 유형을 선택하고 스토리지 풀을 만듭니다.
- 일반적인 임시 볼륨을 사용하여 Pod를 배포합니다.
다음 자습서에서는 클러스터에 애플리케이션을 배포하는 방법을 알아봅니다.
Azure Kubernetes Service