Поделиться через


Руководство по установке хранилища контейнеров Azure для использования с Служба Azure Kubernetes

Хранилище контейнеров Azure — это облачная служба управления томами, развертывания и оркестрации, созданная изначально для контейнеров. Используйте это руководство, чтобы установить последнюю рабочую версию хранилища контейнеров Azure в кластере Службы Azure Kubernetes (AKS), независимо от того, создаете ли вы новый кластер или включаете службу в существующем развертывании.

Если вы предпочитаете версию хранилища контейнеров Azure с открытым исходным кодом, перейдите в репозиторий local-csi-driver для альтернативных инструкций по установке.

К концу этого руководства вы получите следующее:

  • Подготовка среды Azure CLI
  • Создание или выбор группы ресурсов для кластера
  • Убедитесь, что типы виртуальных машин пула узлов соответствуют критериям установки
  • Установка хранилища контейнеров Azure путем создания кластера AKS или его включения в существующем кластере

Внимание

Эта статья относится к хранилищу контейнеров Azure (версия 2.x.x). Сведения о более ранних версиях см. в документации по хранилищу контейнеров Azure (версия 1.x.x). Если у вас уже есть хранилище контейнеров Azure (версия 1.x.x) в кластере AKS, удалите его, выполнив следующие действия.

Необходимые компоненты

  • Создайте подписку Azure, если у вас ее еще нет, зарегистрировавшись для бесплатной учетной записи.

  • Убедитесь, что целевой регион поддерживается, просмотрев региональную доступность хранилища контейнеров Azure.

  • Планирование конфигурации пула узлов:

    • Используйте Linux в качестве типа ОС (Windows не поддерживается).
    • Выберите номер SKU виртуальной машины, поддерживающий локальные диски данных NVMe, например оптимизированные для хранения или виртуальные машины с ускорением GPU .
    • Для существующих кластеров убедитесь, что пулы узлов уже используют поддерживаемый номер SKU виртуальной машины, прежде чем включить хранилище контейнеров Azure.
  • Установите последнюю версию Azure CLI (2.77.0 или более поздней версии), а затем войдите с помощью az login. Избегайте использования Azure Cloud Shell (так как az upgrade недоступен) и отключайте конфликтующие расширения, например aks-preview , если возникают проблемы.

  • Установите клиент командной строки Kubernetes. kubectl Его можно установить локально, выполнив команду az aks install-cli.

Установка требуемого расширения

Добавьте или обновите последнюю версию k8s-extension , выполнив следующую команду.

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

Настройка контекста подписки

Задайте контекст подписки Azure с помощью az account set команды. Идентификаторы подписок можно просмотреть для всех подписок, к которым у вас есть доступ, выполнив az account list --output table команду. Не забудьте заменить <subscription-id> идентификатор подписки.

az account set --subscription <subscription-id>

Создание или изменение группы ресурсов

Группа ресурсов Azure — это логическая группа, которая содержит ресурсы Azure, которым требуется управлять как группой. При создании группы ресурсов вам будет предложено указать расположение. Это расположение определяет следующее:

  • место хранения метаданных группы ресурсов;
  • Где ресурсы выполняются в Azure, если вы не указываете другой регион во время создания ресурса.

Создайте группу ресурсов с помощью az group create команды. Замените <resource-group-name> именем группы ресурсов, которую вы хотите создать, и замените <location> регион Azure, например eastus, westus2, westus3 или westeurope. Если вы включаете хранилище контейнеров Azure в существующем кластере AKS, используйте группу ресурсов, которая уже размещает кластер.

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
}

Установка хранилища контейнеров Azure в кластере AKS

Выберите сценарий, соответствующий вашей среде.

Внимание

Хранилище контейнеров Azure устанавливает последнюю доступную версию и обновляется автоматически. Выбор версий вручную не поддерживается.

Вариант 1. Создание кластера AKS с включенным хранилищем контейнеров Azure

Выполните следующую команду, чтобы создать кластер AKS и установить хранилище контейнеров Azure. Замените <cluster-name> и <resource-group> наведите собственные значения и укажите тип виртуальной машины, который вы хотите использовать.

az aks create -n <cluster-name> -g <resource-group> --node-vm-size Standard_L8s_v3 --enable-azure-container-storage --generate-ssh-keys

Развертывание занимает 5–10 минут. Когда процесс будет завершён, у вас будет развернут кластер AKS с хранилищем контейнеров Azure и развернутыми компонентами для локального типа хранилища NVMe.

Вариант 2. Включение хранилища контейнеров Azure в существующем кластере AKS

Выполните следующую команду, чтобы включить хранилище контейнеров Azure в существующем кластере AKS. Замените <cluster-name> и <resource-group> собственными значениями.

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

Развертывание занимает 5–10 минут. Когда процесс завершится, на кластере AKS будет установлено хранилище Azure Container Storage и развернуты компоненты для локального типа хранилища NVMe.

  • Подготовка Terraform и проверка подлинности в Azure
  • Определение группы ресурсов и конфигурации кластера AKS
  • Убедитесь, что типы виртуальных машин пула узлов соответствуют критериям установки
  • Применение Terraform для развертывания хранилища контейнеров Azure или его включения в существующем кластере

Внимание

Эта статья относится к хранилищу контейнеров Azure (версия 2.x.x). Сведения о более ранних версиях см. в документации по хранилищу контейнеров Azure (версия 1.x.x). Если у вас уже есть хранилище контейнеров Azure (версия 1.x.x) в кластере AKS, удалите его, выполнив следующие действия.

Необходимые компоненты

  • Создайте подписку Azure, если у вас ее еще нет, зарегистрировавшись для бесплатной учетной записи.

  • Убедитесь, что целевой регион поддерживается, проверив региональную доступность хранилища контейнеров Azure.

  • Планирование конфигурации пула узлов:

    • Используйте Linux в качестве типа ОС (Windows не поддерживается).
    • Выберите номер SKU виртуальной машины, поддерживающий локальные диски данных NVMe, например оптимизированные для хранения или виртуальные машины с ускорением GPU .
    • Для существующих кластеров убедитесь, что пулы узлов уже используют поддерживаемый номер SKU виртуальной машины, прежде чем включить хранилище контейнеров Azure.
  • Установите Azure CLI версии 2.77.0 или более поздней версии, а затем войдите с помощью az login.

  • Установите Terraform версии 1.5 или более поздней и подтвердите установку.terraform version Terraform может повторно использовать проверку подлинности Azure CLI.

  • Установите kubectl , чтобы проверить кластер после развертывания. При необходимости запустите az aks install-cli для установки его локально.

Настройка контекста подписки

Terraform может определить целевую подписку Azure с помощью различных средств:

  • subscription_id в блоке поставщика
  • Переменная среды ARM_SUBSCRIPTION_ID.
  • Подписка Azure CLI по умолчанию
  • Управляемое удостоверение (в среде Azure)

Для локального использования задайте контекст Azure CLI:

az account set --subscription <subscription-id>

Установка хранилища контейнеров Azure в кластере AKS

Выберите сценарий, соответствующий вашей среде.

Внимание

Хранилище контейнеров Azure устанавливает последнюю доступную версию и обновляется автоматически. Выбор версий вручную не поддерживается.

Вариант 1. Создание кластера AKS с включенным хранилищем контейнеров Azure

  1. В пустом рабочем каталоге создайте main.tf файл со следующей минимальной конфигурацией кластера AKS. Обновите имена ресурсов, расположения и размеры виртуальных машин в соответствии с вашими требованиями.

    terraform {
      required_version = ">= 1.5.0"
      required_providers {
        azurerm = {
          source  = "hashicorp/azurerm"
          version = "~> 4.x"
        }
      }
    }
    
    provider "azurerm" {
      features {}
    }
    
    resource "azurerm_resource_group" "rg" {
      name     = "demo-aks-rg"
      location = "eastus"
    }
    
    resource "azurerm_kubernetes_cluster" "aks" {
      name                = "demo-aks-cluster"
      dns_prefix          = "demo-aks"
      location            = azurerm_resource_group.rg.location
      resource_group_name = azurerm_resource_group.rg.name
    
      default_node_pool {
        name       = "systempool"
        vm_size    = "Standard_L8s_v3"
        node_count = 3
      }
    
      identity {
        type = "SystemAssigned"
      }
    }
    
    resource "azurerm_kubernetes_cluster_extension" "container_storage" {
      # NOTE: the `name` parameter must be "acstor" for Azure CLI compatibility
      name           = "acstor"
      cluster_id     = azurerm_kubernetes_cluster.aks.id
      extension_type = "microsoft.azurecontainerstoragev2"
    
      configuration_settings = {
        enable-azure-container-storage = "true"
      }
    }
    
  2. Инициализируйте рабочую директорию для загрузки поставщика AzureRM.

    terraform init
    
  3. Просмотрите запланированные изменения.

    terraform plan
    
  4. Примените конфигурацию для создания группы ресурсов, кластера AKS и расширения хранилища контейнеров Azure. Развертывание обычно занимает 5–10 минут.

    terraform apply
    

Вариант 2. Включение хранилища контейнеров Azure в существующем кластере AKS

Если кластер AKS уже существует, и вы управляете им за пределами Terraform, вы по-прежнему можете включить хранилище контейнеров Azure, создав только ресурс расширения. Используйте источник данных для поиска идентификатора кластера.

terraform {
  required_version = ">= 1.5.0"
  required_providers {
    azurerm = {
      source  = "hashicorp/azurerm"
      version = "~> 4.x"
    }
  }
}

provider "azurerm" {
  features {}
}

data "azurerm_kubernetes_cluster" "existing" {
  name                = "existing-aks"
  resource_group_name = "existing-aks-rg"
}

resource "azurerm_kubernetes_cluster_extension" "container_storage" {
  # NOTE: the `name` parameter must be "acstor" for Azure CLI compatibility
  name           = "acstor"
  cluster_id     = data.azurerm_kubernetes_cluster.existing.id
  extension_type = "microsoft.azurecontainerstoragev2"

  configuration_settings = {
    enable-azure-container-storage = "true"
  }
}

Запустите terraform init (если это новый рабочий каталог), а затем terraform apply установите хранилище контейнеров Azure в целевом кластере.

Подключение к кластеру и проверка состояния

После установки настройте kubectl подключение к кластеру и убедитесь, что узлы готовы.

  1. Скачайте учетные данные кластера и настройте интерфейс командной строки Kubernetes для их использования. По умолчанию учетные данные хранятся в ~/.kube/config. При необходимости укажите другой путь с помощью аргумента --file .

    az aks get-credentials --resource-group <resource-group> --name <cluster-name>
    
  2. Проверьте подключение, перечислив узлы кластера.

    kubectl get nodes
    
  3. Убедитесь, что все узлы сообщают о состоянии Ready, аналогичном следующим выходным данным:

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

Дальнейшие шаги