다음을 통해 공유


빠른 시작: Azure Kubernetes Service에서 Azure Container Storage 사용

Azure Container Storage는 기본적으로 컨테이너용으로 구축된 클라우드 기반 볼륨 관리, 배포 및 오케스트레이션 서비스입니다. 이 빠른 시작에서는 Linux 기반 AKS(Azure Kubernetes Service) 클러스터에 연결하고, Azure Container Storage를 설치하고, Azure CLI를 사용하여 스토리지 풀을 만드는 방법을 보여 줍니다.

Important

버전 1.1.0부터는 이제 Azure 컨테이너 스토리지가 GA(일반 공급)로 제공됩니다. GA 버전은 프로덕션 워크로드에는 권장되지 않습니다.

필수 조건

  • Azure 구독이 없는 경우 시작하기 전에 체험 계정을 만듭니다.

  • 이 문서에는 Azure CLI의 최신 버전(2.35.0 이상)이 필요합니다. Azure CLI를 설치하는 방법을 참조하세요. Azure Cloud Shell에서 Bash 환경을 사용하는 경우 최신 버전이 이미 설치되어 있습니다. Azure Cloud Shell 대신 로컬로 명령을 실행하려는 경우 관리자 권한으로 명령을 실행해야 합니다. 자세한 내용은 Azure Cloud Shell 시작을 참조하세요.

  • Kubernetes 명령줄 클라이언트 kubectl이 필요합니다. Azure Cloud Shell을 사용 중인 경우 이미 설치되어 있는 것이며, 그렇지 않은 경우 az aks install-cli 명령을 실행하여 로컬로 설치할 수 있습니다.

  • 대상 지역이 Azure 컨테이너 스토리지 지역에서 지원되는지 확인합니다.

  • AKS 클러스터를 아직 만들지 않은 경우 AKS 클러스터 설치를 위한 지침을 따릅니다.

시작

  • Azure 구독 ID를 기록해 둡니다. Azure Elastic SAN을 데이터 스토리지로 사용하려면 Azure 구독에 할당된 Azure 컨테이너 스토리지 소유자 역할 또는 Azure 컨테이너 스토리지 기여자 역할이 필요합니다. 소유자 수준 액세스를 사용하면 Azure 컨테이너 스토리지 확장을 설치하고 해당 스토리지 리소스에 대한 액세스 권한을 부여하며 Azure Elastic SAN 리소스를 구성할 수 있는 권한을 부여할 수 있습니다. 기여자 수준 액세스를 통해 확장을 설치하고 해당 스토리지 리소스에 대한 액세스 권한을 부여할 수 있습니다. Azure 디스크 또는 임시 디스크를 데이터 스토리지로 사용하려는 경우 구독에 대한 특별한 권한이 필요하지 않습니다.

  • Azure Cloud Shell을 시작하거나 로컬 설치를 사용하는 경우, az login 명령을 사용하여 Azure에 로그인합니다.

  • Azure Cloud Shell을 사용하는 경우 스토리지를 탑재하라는 메시지가 표시될 수 있습니다. 스토리지 계정을 만들 Azure 구독을 선택하고 만들기를 선택합니다.

필요한 확장 설치

다음 명령을 실행하여 최신 버전의 k8s-extension을 추가하거나 업그레이드합니다.

az extension add --upgrade --name k8s-extension

구독 컨텍스트 설정

az account set 명령을 사용하여 Azure 구독 컨텍스트를 설정합니다. az account list --output table 명령을 실행하여 액세스할 수 있는 모든 구독에 대한 구독 ID를 볼 수 있습니다. <subscription-id>를 구독 ID로 바꿉니다.

az account set --subscription <subscription-id>

클러스터에 연결

클러스터에 연결하려면 Kubernetes 명령줄 클라이언트인 kubectl을 사용합니다. Azure Cloud Shell을 사용 중인 경우 이미 설치되어 있는 것이며, 그렇지 않은 경우 az aks install-cli 명령을 실행하여 로컬로 설치할 수 있습니다.

  1. az aks get-credentials 명령을 사용하여 클러스터에 연결하도록 kubectl을 구성합니다. 다음 명령은 아래와 같은 작업을 수행합니다.

    • 자격 증명을 다운로드하고 이를 사용하도록 Kubernetes CLI를 구성합니다.
    • Kubernetes 구성 파일의 기본 위치인 ~/.kube/config를 사용합니다. --file 인수를 사용하여 Kubernetes 구성 파일의 다른 위치를 지정할 수 있습니다.
    az aks get-credentials --resource-group <resource-group> --name <cluster-name>
    
  2. kubectl get 명령을 사용하여 클러스터에 대한 연결을 확인합니다. 이 명령은 클러스터 노드 목록을 반환합니다.

    kubectl get nodes
    
  3. 다음 출력 예제는 클러스터의 노드를 보여 줍니다. 모든 노드에 대한 상태가 준비됨으로 표시되는지 확인합니다.

    NAME                                STATUS   ROLES   AGE   VERSION
    aks-nodepool1-34832848-vmss000000   Ready    agent   80m   v1.25.6
    aks-nodepool1-34832848-vmss000001   Ready    agent   80m   v1.25.6
    aks-nodepool1-34832848-vmss000002   Ready    agent   80m   v1.25.6
    

    노드 풀의 이름을 기록해 둡니다. 이 예제에서는 nodepool1입니다.

스토리지 풀에 대한 데이터 스토리지 옵션 선택

Azure 컨테이너 스토리지를 배포하기 전에 스토리지 풀 및 볼륨을 만드는 데 사용할 백 엔드 스토리지 옵션을 결정해야 합니다. 현재 세 가지 옵션을 사용할 수 있습니다.

  • Azure Elastic SAN: Azure Elastic SAN은 범용 데이터베이스, 스트리밍 및 메시지 서비스, CI/CD 환경 및 기타 계층 1/계층 2 워크로드에 적합합니다. 스토리지는 생성된 볼륨 및 볼륨 스냅샷별로 요청 시 프로비전됩니다. 여러 클러스터가 동시에 단일 SAN에 액세스할 수 있지만 영구 볼륨은 한 번에 한 소비자에만 연결할 수 있습니다.

  • Azure 디스크: Azure 디스크는 MySQL, MongoDB 및 PostgreSQL과 같은 데이터베이스에 적합합니다. 스토리지는 대상 컨테이너 스토리지 풀 크기 및 최대 볼륨 크기별로 프로비전됩니다.

  • 임시 디스크: 이 옵션은 AKS 클러스터 노드에서 로컬 NVMe 드라이브 또는 임시 SSD를 사용합니다. 대기 시간이 매우 중요하므로(하위 ms 대기 시간이 낮음) 데이터 내구성 요구 사항이 없거나 Cassandra와 같은 기본 제공 데이터 복제 지원을 사용하는 애플리케이션에 가장 적합합니다. AKS는 AKS 노드에서 사용 가능한 임시 스토리지를 검색하고 볼륨 배포를 위해 드라이브를 획득합니다.

참고 항목

Azure Elastic SAN 및 Azure 디스크의 경우, Azure Container Storage는 설치의 일부로 지원 스토리지를 배포합니다. 고유한 Elastic SAN 또는 Azure 디스크를 만들 필요가 없습니다. Elastic SAN을 사용하려면 Azure 구독에 대한 Azure 컨테이너 스토리지 소유자 역할 또는 Azure 컨테이너 스토리지 기여자 역할이 필요합니다.

리소스 사용량

Azure 컨테이너 스토리지를 사용하려면 특정 노드 리소스가 서비스의 구성 요소를 실행해야 합니다. Azure 컨테이너 스토리지를 설치할 때 지정할 스토리지 풀 유형 선택에 따라 사용할 리소스는 다음과 같습니다.

스토리지 풀 유형 CPU 코어 RAM
Azure Elastic SAN  None None
Azure 디스크 1 1GiB
임시 디스크 - 임시 SSD 1 1GiB
임시 디스크 - 로컬 NVMe(표준 계층) 코어의 25%(성능 계층은 업데이트 가능)* 1GiB

사용되는 리소스는 노드당이며 컨테이너 스토리지가 설치될 노드 풀의 각 노드에 사용됩니다. 노드에 충분한 리소스가 없는 경우 Azure 컨테이너 스토리지가 실행되지 않습니다. Kubernetes는 이러한 실패한 Pod를 자동으로 다시 초기화하려고 시도하므로 리소스가 해제되면 이러한 Pod를 다시 초기화할 수 있습니다.

*표준(기본) 성능 계층을 갖춘 임시 디스크 - 로컬 NVMe 스토리지 풀 형식에서 클러스터 노드에 여러 VM SKU 형식을 사용하는 경우, 사용되는 CPU 코어의 25%는 사용된 SKU 중 가장 작은 SKU에 적용됩니다. 예를 들어 8코어 및 16코어 VM 유형을 혼합하여 사용하는 경우 리소스 사용량은 2코어입니다. 성능 계층을 업데이트하면 더 많은 코어 비율을 사용하고 더 높은 IOPS를 달성할 수 있습니다.

클러스터에 대한 VM 유형이 다음 조건을 충족하는지 확인합니다.

Azure Container Storage를 사용하려면 3개 이상의 Linux VM을 포함하는 노드 풀이 필요합니다. 스토리지 풀에 로컬 NVMe를 사용하는 경우 노드 풀에는 최소 4개의 Linux VM이 포함되어야 합니다. 각 VM에는 최소 4개의 vCPU(가상 CPU)가 있어야 합니다. Azure Container Storage는 확장이 배포된 모든 VM에서 I/O 처리를 위해 하나의 코어를 사용합니다.

클러스터 노드에 대한 VM 유형을 선택할 때 다음 지침을 따릅니다. Azure Premium Storage를 지원하는 VM 유형을 선택해야 합니다.

  • Azure Elastic SAN 또는 Azure Disks를 지원 스토리지로 사용하려는 경우 standard_d4s_v5과(와) 같은 범용 VM 유형을 선택합니다.
  • 로컬 NVMe와 함께 임시 디스크를 사용하려는 경우 standard_l8s_v3과(와) 같은 스토리지 최적화 VM 유형을 선택합니다.
  • 임시 SSD에서 임시 디스크를 사용하려는 경우 Ev3 및 Esv3 시리즈와 같은 임시 SSD 디스크가 있는 VM을 선택합니다.

AKS 클러스터에 Azure 컨테이너 스토리지 설치

설치 명령은 AKS 클러스터에서 실행 중인 Azure 컨테이너 스토리지의 미리 보기 인스턴스가 이미 있는지 또는 처음으로 클러스터에 Azure 컨테이너 스토리지를 설치하는지에 따라 다릅니다.

미리 보기 설치를 GA로 업그레이드

클러스터에서 실행 중인 Azure 컨테이너 스토리지의 미리 보기 인스턴스가 이미 있는 경우 다음 명령을 실행하여 최신 GA(일반 공급) 버전으로 업데이트하는 것이 좋습니다. 클러스터에 처음으로 Azure 컨테이너 스토리지를 설치하는 경우 대신 Azure 컨테이너 스토리지 설치 및 스토리지 풀 만들기를 진행하세요. 특정 노드 풀에 Azure 컨테이너 스토리지를 설치할 수도 있습니다.

az k8s-extension update --cluster-type managedClusters --cluster-name <cluster-name> --resource-group <resource-group> --name azurecontainerstorage --version 1.1.0 --auto-upgrade false --release-train stable

<cluster-name><resource-group>를 사용자 고유의 값으로 바꾸어야 합니다.

Azure 컨테이너 스토리지 설치 및 스토리지 풀 만들기

설치하기 전에 AKS 클러스터가 VM 요구 사항을 충족하는지 확인합니다.

다음 명령을 실행하여 클러스터에 Azure 컨테이너 스토리지를 설치하고 스토리지 풀을 만듭니다. <cluster-name><resource-group>를 사용자 고유의 값으로 바꿉니다. <storage-pool-type>azureDiskephemeralDisk 또는elasticSan으로 바꿉니다. ephemeralDisk을(를) 선택하면 --storage-pool-option 또한 지정할 수도 있으며 값은 NVMe 또는 Temp가 될 수 있습니다.

이 명령을 실행하면 시스템 노드 풀에서 Azure 컨테이너 스토리지를 사용하도록 설정되며, 기본적으로 이름이 nodepool1*(으)로 지정됩니다. 다른 노드 풀에서 사용하도록 설정하려면 특정 노드 풀에 Azure 컨테이너 스토리지 설치를 참조하세요. 추가 매개 변수를 지정하려면 Azure 컨테이너 스토리지 스토리지 풀 매개 변수를 참조하세요.

*acstor.azure.com/io-engine:acstor 레이블이 있는 기존 노드 풀이 있는 경우 기본적으로 Azure Container Storage가 설치됩니다. 그렇지 않으면 시스템 노드 풀에 설치됩니다.

Important

Azure Portal을 사용하여 AKS 클러스터를 만든 경우: 클러스터에는 사용자 노드 풀과 시스템/에이전트 노드 풀이 있을 가능성이 높습니다. 그러나 Azure Portal을 사용하여 만들어진 테스트/개발 클러스터와 같이 클러스터가 시스템 노드 풀로만 구성된 경우 먼저 새 사용자 노드 풀을 추가한 다음 레이블을 지정해야 합니다. 이는 Azure Portal을 사용하여 AKS 클러스터를 만들 때 시스템/에이전트 노드 풀에 taint CriticalAddOnsOnly이(가) 추가되어 시스템 노드 풀에 Azure 컨테이너 스토리지 설치를 차단하기 때문입니다. 이 taint는 Azure CLI를 사용하여 AKS 클러스터를 만들 때 추가되지 않습니다.

az aks update -n <cluster-name> -g <resource-group> --enable-azure-container-storage <storage-pool-type>

배포는 10~15분이 걸립니다. 완료되면 Azure 컨테이너 스토리지가 설치된 AKS 클러스터가 생성되고, 선택한 스토리지 풀 유형의 구성 요소가 사용하도록 설정되고 기본 스토리지 풀이 생성됩니다. 추가 스토리지 풀 유형을 사용하도록 설정하여 추가 스토리지 풀을 만들려면 추가 스토리지 풀 유형 사용을 참조하세요.

Important

Azure Elastic SAN을 스토리지 풀의 지원 스토리지로 지정하고 Azure 구독에 할당된 Azure 컨테이너 스토리지 소유자 역할 또는 Azure 컨테이너 스토리지 기여자 역할이 없는 경우 Azure 컨테이너 스토리지 설치가 실패하고 스토리지 풀이 만들어지지 않습니다. 이러한 역할 중 하나 없이 Azure Elastic SAN을 추가 스토리지 풀 형식으로 사용하도록 설정하려고 하면 이전 설치 및 스토리지 풀은 영향을 받지 않고 Elastic SAN 스토리지 풀이 만들어지지 않습니다.

특정 노드 풀에 Azure Container Storage 설치

특정 노드 풀에 Azure Container Storage를 설치하려면 다음 지침을 따릅니다. 노드 풀에는 각각 3개 이상의 Linux VM이 포함되어야 합니다. 스토리지 풀에 로컬 NVMe를 사용하는 경우 노드 풀에는 각각 4개 이상의 Linux VM이 포함되어야 합니다.

  1. 다음 명령을 실행하여 사용 가능한 노드 풀 목록을 봅니다. <resource-group><cluster-name>를 사용자 고유의 값으로 바꿉니다.

    az aks nodepool list --resource-group <resource-group> --cluster-name <cluster-name>
    
  2. 다음 명령을 실행하여 특정 노드 풀에 Azure Container Storage를 설치합니다. <cluster-name><resource-group>를 사용자 고유의 값으로 바꿉니다. <storage-pool-type>azureDiskephemeralDisk 또는elasticSan으로 바꿉니다. ephemeralDisk을(를) 선택하면 스토리지 풀 옵션을 지정할 수도 있으며 값은 NVMe 또는 Temp가 될 수 있습니다.

    az aks update -n <cluster-name> -g <resource-group> --enable-azure-container-storage <storage-pool-type> --azure-container-storage-nodepools <comma separated values of nodepool names>
    

추가 스토리지 풀 유형 사용

Azure 컨테이너 스토리지를 설치하는 동안 원래 사용하도록 설정되지 않은 스토리지 풀 유형을 사용하도록 설정하려면 다음 명령을 실행합니다. <cluster-name><resource-group>를 사용자 고유의 값으로 바꿉니다. <storage-pool-type>의 경우, azureDisk, ephemeralDisk 또는 elasticSan을(를) 지정합니다.

이 명령을 사용하여 추가 스토리지 풀 매개 변수를 지정하려면 이 테이블을 참조하세요.

az aks update -n <cluster-name> -g <resource-group> --enable-azure-container-storage <storage-pool-type>

사용하도록 설정한 새 스토리지 풀 유형이 이미 사용하도록 설정된 스토리지 풀 유형보다 더 많은 리소스를 사용하는 경우 리소스 사용량은 최대 양으로 변경됩니다.

클러스터에 새 노드 풀을 추가하고 해당 노드 풀에서 Azure 컨테이너 스토리지를 실행하려는 경우 az aks update 명령을 실행할 때 --azure-container-storage-nodepools <nodepool-name>을(를) 사용하여 노드 풀을 지정할 수 있습니다.

사용 가능한 스토리지 풀 표시

사용 가능한 스토리지 풀 목록을 얻으려면 다음 명령을 실행합니다.

kubectl get sp -n acstor

스토리지 풀의 상태를 확인하려면 다음 명령을 실행합니다.

kubectl describe sp <storage-pool-name> -n acstor

Message이(가) StoragePool is ready을(를) 알리지 않으면 스토리지 풀이 여전히 만들어지고 있거나 문제가 발생했습니다. Azure 컨테이너 스토리지 문제 해결을 참조하세요.

스토리지 풀 유형 사용 안 함

특정 스토리지 풀 유형을 더 이상 사용하지 않고 노드 풀에서 리소스를 확보하도록 사용하지 않도록 설정하려면 다음 명령을 실행합니다. <cluster-name><resource-group>를 사용자 고유의 값으로 바꿉니다. <storage-pool-type>의 경우, azureDisk, ephemeralDisk 또는 elasticSan을(를) 지정합니다.

az aks update -n <cluster-name> -g <resource-group> --disable-azure-container-storage <storage-pool-type>

참고 항목

사용하지 않도록 설정하려는 유형의 기존 스토리지 풀이 있는 경우 해당 스토리지 풀 유형은 사용하지 않도록 설정되지 않습니다.

다음 단계

볼륨을 만들려면 선택한 백업 스토리지 유형에 대한 링크를 선택합니다.