Share via


자습서: Azure Kubernetes Service와 함께 사용할 Azure Container Storage 미리 보기 설치

Azure Container Storage는 기본적으로 컨테이너용으로 구축된 클라우드 기반 볼륨 관리, 배포 및 오케스트레이션 서비스입니다. 이 자습서에서는 AKS(Azure Kubernetes Service) 클러스터를 만들고 클러스터에 Azure Container Storage를 설치합니다. 또는 이 자습서의 수동 단계를 따르는 대신 빠른 시작을 사용하여 Azure Container Storage를 설치할 수 있습니다.

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

  • 리소스 그룹 만들기
  • 데이터 스토리지 옵션 및 VM 형식 선택
  • AKS 클러스터 만들기
  • 클러스터에 연결
  • 노드 풀에 레이블 지정
  • AKS 관리 ID에 기여자 역할 할당
  • Azure Container Storage 확장 설치

필수 조건

  • 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 명령을 실행하여 로컬로 설치할 수 있습니다.

참고 항목

AKS 클러스터가 이미 배포되어 있는 경우 클러스터에 연결을 진행합니다.

시작하기

  • Azure 구독 ID를 기록해 둡니다. Azure 디스크 또는 임시 디스크를 데이터 스토리지로 사용하려면 Kubernetes 기여자 역할이 있는 구독을 사용하는 것이 좋습니다. Azure Elastic SAN을 데이터 스토리지로 사용하려면 Azure 구독에 대한 소유자 역할이 필요합니다.

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

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

구독 컨텍스트 설정

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

az account set --subscription <subscription-id>

리소스 공급자 등록

Microsoft.ContainerServiceMicrosoft.KubernetesConfiguration 리소스 공급자를 Azure 구독에 등록해야 합니다. 이러한 공급자를 등록하려면 다음 명령을 실행합니다.

az provider register --namespace Microsoft.ContainerService --wait 
az provider register --namespace Microsoft.KubernetesConfiguration --wait 

이러한 공급자가 성공적으로 등록되었는지 확인하려면 다음 명령을 실행합니다.

az provider list --query "[?namespace=='Microsoft.ContainerService'].registrationState"
az provider list --query "[?namespace=='Microsoft.KubernetesConfiguration'].registrationState"

리소스 그룹 만들기

Azure 리소스 그룹은 그룹으로 관리하려는 Azure 리소스를 보유하는 논리 그룹입니다. 리소스 그룹을 만들 때 위치를 지정하라는 메시지가 표시됩니다. 이 위치는 다음과 같습니다.

  • 리소스 그룹 메타데이터의 스토리지 위치입니다.
  • 리소스를 만드는 동안 다른 지역을 지정하지 않은 경우 리소스가 Azure에서 실행되는 위치입니다.

az group create 명령을 사용하여 리소스 그룹을 만듭니다. <resource-group-name>을 만들려는 리소스 그룹의 이름으로 바꾸고 <location>eastus, westus2, westus3 또는 westeurope과 같은 Azure 지역으로 바꿉니다.

az group create --name <resource-group-name> --location <location>

리소스 그룹을 성공적으로 만든 경우 다음과 유사한 출력이 표시됩니다.

{
  "id": "/subscriptions/<guid>/resourceGroups/myContainerStorageRG",
  "location": "eastus",
  "managedBy": null,
  "name": "myContainerStorageRG",
  "properties": {
    "provisioningState": "Succeeded"
  },
  "tags": null
}

데이터 스토리지 옵션 및 가상 머신 유형 선택

클러스터를 만들기 전에 궁극적으로 스토리지 풀을 만들도록 선택할 백 엔드 스토리지 옵션을 이해해야 합니다. 스토리지 서비스마다 클러스터 노드로 다른 VM(가상 머신) 유형을 사용할 경우가 가장 잘 작동하고 스토리지 풀을 만들기 전에 클러스터를 배포하게 되기 때문입니다.

데이터 스토리지 옵션

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

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

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

VM 유형

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

Azure Container Storage에서 Azure Elastic SAN 또는 Azure 디스크를 사용하려는 경우 클러스터 노드에 대해 standard_d4s_v5 같은 범용 VM 유형을 선택해야 합니다.

사용 후 삭제 디스크를 사용하려는 경우 standard_l8s_v3 같은 스토리지 최적화 VM 유형을 선택합니다.

Important

Azure Premium Storage를 지원하는 VM 유형을 선택해야 합니다.

AKS 클러스터 만들기

다음 명령을 실행하여 Linux 기반 AKS 클러스터를 만들고 시스템 할당 관리 ID를 사용하도록 설정합니다. 사용하려는 AKS 클러스터가 이미 있는 경우 이 단계를 건너뛸 수 있습니다.

<resource-group>을 만든 리소스 그룹의 이름으로, <cluster-name>을 만들려는 클러스터의 이름으로, <vm-type>을 이전 단계에서 선택한 VM 유형으로 바꿉니다. 이 예제에서는 3개의 노드가 있는 클러스터를 만듭니다. 더 큰 클러스터를 원하는 경우 --node-count를 늘입니다.

az aks create -g <resource-group> -n <cluster-name> --node-count 3 -s <vm-type> --generate-ssh-keys

배포가 완료될 때까지 몇 분 정도 걸립니다.

참고 항목

AKS 클러스터를 만들면 AKS는 AKS 리소스를 저장할 두 번째 리소스 그룹을 자동으로 만듭니다. 이 두 번째 리소스 그룹은 명명 규칙 MC_YourResourceGroup_YourAKSClusterName_Region을 따릅니다. 자세한 내용은 AKS를 통해 두 개의 리소스 그룹이 생성되는 이유는 무엇인가요?를 참조하세요.

클러스터에 연결

클러스터에 연결하려면 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 Container Storage에 대한 올바른 IO 엔진과 연결해야 합니다.

Important

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

다음 명령을 실행하여 노드 풀 레이블을 업데이트합니다. <resource-group><cluster-name>을 고유한 값으로 바꾸고, <nodepool-name>을 노드 풀 이름으로 바꾸는 것을 잊지 마세요.

az aks nodepool update --resource-group <resource-group> --cluster-name <cluster-name> --name <nodepool-name> --labels acstor.azure.com/io-engine=acstor

Azure Portal에 로그인하고 AKS 클러스터로 이동하여 노드 풀에 올바르게 레이블이 지정되었는지 확인할 수 있습니다. 설정 > 노드 풀로 이동하여 노드 풀을 선택하고 Taints 및 레이블 아래에 Labels: acstor.azure.com/io-engine:acstor가 표시됩니다.

AKS 관리 ID에 기여자 역할 할당

Azure Container Service는 AKS와는 별도의 서비스이므로 Azure Container Storage가 클러스터에 대한 스토리지를 프로비전할 수 있도록 권한을 부여해야 합니다. 특히 AKS 관리 ID에 기여자 Azure RBAC 기본 제공 역할을 할당해야 합니다. 이 작업은 Azure Portal 또는 Azure CLI를 사용하여 수행할 수 있습니다. 이 작업을 수행하려면 Azure 구독에 대한 소유자 역할이 필요합니다. 충분한 권한이 없는 경우 관리자에게 이러한 단계를 수행하도록 요청합니다.

  1. Azure Portal에 로그인한 다음, Kubernetes 서비스를 검색하여 선택합니다.

  2. AKS 클러스터를 찾아 선택합니다. 왼쪽 탐색 영역에서 설정>속성을 선택합니다.

  3. 인프라 리소스 그룹 아래에 클러스터를 만들 때 AKS가 만든 리소스 그룹에 대한 링크가 표시됩니다. 이 폴더를 선택합니다.

  4. 왼쪽 창에서 액세스 제어(IAM)를 선택합니다.

  5. 추가 > 역할 할당 추가를 선택합니다.

  6. 할당 유형에서 권한 있는 관리자 역할을 선택한 다음, 기여자를 선택하고 다음을 선택합니다. 구독에 소유자 역할이 없는 경우 기여자 역할을 추가할 수 없습니다.

    Azure Portal을 사용하여 AKS 관리 ID에 기여자 역할을 추가하는 방법을 보여 주는 스크린샷

  7. 다음에 대한 액세스 할당에서 관리 ID를 선택합니다.

  8. 멤버 아래에서 + 멤버 선택을 클릭합니다. 관리 ID 선택 메뉴가 나타납니다.

  9. 관리 ID에서 사용자가 할당한 관리 ID를 선택합니다.

  10. 선택에서 클러스터 이름에 -agentpool이 추가된 관리 ID를 검색하여 선택합니다.

  11. 선택을 클릭한 다음, 검토+할당을 클릭합니다.

Azure 컨테이너 스토리지 설치

초기 설치는 Azure Arc CLI 명령을 사용하여 새 확장을 다운로드합니다. <cluster-name><resource-group>를 사용자 고유의 값으로 바꿉니다. <extension-name> 값은 설치 중인 확장에 대한 레이블에 불과하므로 원하는 대로 지정할 수 있습니다.

설치하는 동안 k8s-extension을 설치하라는 메시지가 표시될 수 있습니다. Y를 선택합니다.

az k8s-extension create --cluster-type managedClusters --cluster-name <cluster-name> --resource-group <resource-group> --name <extension-name> --extension-type microsoft.azurecontainerstorage --scope cluster --release-train stable --release-namespace acstor

설치를 완료하는 데 10-15분이 걸립니다. 다음 명령을 실행하고 provisioningStateSucceeded가 표시되는지 확인하여 설치가 올바르게 완료되었는지 알아볼 수 있습니다.

az k8s-extension list --cluster-name <cluster-name> --resource-group <resource-group> --cluster-type managedClusters

축하합니다. Azure Container Storage를 성공적으로 설치했습니다. 이제 Kubernetes 워크로드에 사용할 수 있는 새 스토리지 클래스가 생성되었습니다.

다음 단계

이제 스토리지 풀 및 영구 볼륨 클레임을 만든 다음, Pod를 배포하고 영구 볼륨을 연결할 수 있습니다. 적절한 방법 문서의 단계를 따릅니다.