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


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

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

В этой статье объясняется, как установить хранилище контейнеров Azure с помощью двух поддерживаемых потоков (только установщика или установщика и типа хранилища), активации установки драйвера и способа проверки и устранения неполадок развертывания. Хранилище контейнеров Azure устанавливает драйверы, реализующие интерфейс хранилища контейнеров (CSI).

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

В конце этого руководства вы можете:

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

Внимание

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

Предварительные условия

  • Если у вас нет подписки на Azure, создайте бесплатную учетную запись перед началом.

  • Для этой статьи требуется Azure CLI версии 2.83.0 или более поздней. Дополнительные сведения см. в статье "Установка Azure CLI". Отключите такие расширения, как aks-preview если возникают проблемы. Установите или обновите расширения по мере необходимости:

    • az extension add --upgrade --name k8s-extension
    • az extension add --upgrade --name elastic-san (только Elastic SAN)
  • Вам нужен клиент командной строки Kubernetes. kubectl Он уже установлен, если вы используете Azure Cloud Shell. Его можно установить локально, выполнив az aks install-cli команду.

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

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

    • Используйте Linux в качестве типа ОС (Windows не поддерживается).
    • Выберите номер SKU виртуальной машины, поддерживающий локальные диски данных NVMe, если планируется использовать локальный тип хранилища NVMe, например оптимизированные для хранения или виртуальные машины с ускорением GPU .
    • Для существующих кластеров убедитесь, что пулы узлов уже используют поддерживаемый номер SKU виртуальной машины, прежде чем включить хранилище контейнеров Azure.
  • Если вы используете Elastic SAN впервые в подписке, выполните следующую команду однократной регистрации:

    az provider register --namespace Microsoft.ElasticSan
    

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

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

az account set --subscription <subscription-id>

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

Группа ресурсов 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 устанавливает последнюю основную версию по умолчанию. Можно закрепить основную версию с помощью --container-storage-version. Нельзя закрепить минорные версии или патчевые версии.

Установка в режиме "только установщик"

Выполните следующую команду, чтобы создать кластер 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 минут. Установка драйвера CSI откладывается до создания класса хранилища или включения типа хранилища позже.

Следуйте инструкциям по созданию локального класса хранилища NVMe или класса хранилища Elastic SAN .

Установка установщика и типа хранилища

Выполните следующую команду, чтобы создать кластер 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 ephemeralDisk --generate-ssh-keys

Эта команда устанавливает установщик, развертывает локальный драйвер NVMe CSI и создает класс local-csiхранилища по умолчанию. Вы можете установить и использовать локальные NVMe и Elastic SAN, предоставив список, например ephemeralDisk elasticSan.

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

Установка в режиме "только установщик"

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

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

Развертывание может занять до 5 минут. Когда завершится процесс, на кластер будет установлен компонент установки Azure Container Storage. Установка драйвера CSI откладывается до создания класса хранилища или включения типа хранилища позже. Следуйте инструкциям по созданию локального класса хранилища NVMe или класса хранилища Elastic SAN .

Установка установщика и типа хранилища

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

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

Эта команда устанавливает установщик, развертывает драйвер Elastic SAN CSI и создает класс azuresan-csiхранилища по умолчанию. Вы можете установить и использовать локальные NVMe и Elastic SAN, предоставив список, например ephemeralDisk elasticSan.

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

Внимание

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

Предварительные условия

  • Если у вас нет подписки на Azure, создайте бесплатную учетную запись перед началом.

  • Для этой статьи требуется Azure CLI версии 2.83.0 или более поздней. Дополнительные сведения см. в статье "Установка Azure CLI". Отключите такие расширения, как aks-preview если возникают проблемы. Установите или обновите расширения по мере необходимости:

    • az extension add --upgrade --name k8s-extension
    • az extension add --upgrade --name elastic-san (только Elastic SAN)
  • Вам нужен клиент командной строки Kubernetes. kubectl Он уже установлен, если вы используете Azure Cloud Shell. Его можно установить локально, выполнив az aks install-cli команду.

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

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

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

  • Если вы используете Elastic SAN впервые в подписке, выполните следующую команду однократной регистрации:

    az provider register --namespace Microsoft.ElasticSan
    

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

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

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

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

az account set --subscription <subscription-id>

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

Внимание

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

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

    terraform {
      required_version = ">= 1.5.0"
      required_providers {
        azurerm = {
          source  = "hashicorp/azurerm"
          version = "~> 4.0"
        }
      }
    }
    
    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"
    }
    
  2. Инициализируйте рабочую директорию для загрузки поставщика AzureRM.

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

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

    terraform apply
    

Когда завершится процесс, на кластер будет установлен компонент установки Azure Container Storage. Установка драйвера CSI откладывается до создания класса хранилища. Следуйте инструкциям по созданию локального класса хранилища NVMe или класса хранилища Elastic SAN .

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

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

terraform {
  required_version = ">= 1.5.0"
  required_providers {
    azurerm = {
      source  = "hashicorp/azurerm"
      version = "~> 4.0"
    }
  }
}

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"
}

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

Когда завершится процесс, на кластер будет установлен компонент установки Azure Container Storage. Установка драйвера CSI откладывается до создания класса хранилища. Следуйте инструкциям по созданию локального класса хранилища NVMe или класса хранилища Elastic SAN .

Проверка установки

Подключение к кластеру AKS

Перед выполнением команд проверки убедитесь, что для локального kubeconfig задан целевой кластер:

az aks get-credentials --resource-group <resource-group-name> --name <cluster-name>

Если вы управляете несколькими кластерами, добавьте --overwrite-existing для замены существующего контекста или задайте --context уникальное имя контекста.

Проверка установщика (режим только установщика)

После включения только установщика убедитесь, что установщик присутствует:

kubectl get deploy -n kube-system | grep acstor

Ожидаемые выходные данные:

acstor-cluster-manager                2/2     2            2           4d9h
acstor-geneva                         2/2     2            2           4d9h

Проверка присутствия класса хранилища

После создания класса хранилища или включения типа хранилища проверьте класс хранилища:

kubectl get sc

Пример выходных данных:

NAME                    PROVISIONER               RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
azuresan-csi            san.csi.azure.com         Delete          Immediate              false                  4d7h
local-csi               localdisk.csi.acstor.io   Delete          WaitForFirstConsumer   true                   4d5h

Проверка установки драйверов

Проверьте компоненты, ожидаемые после создания класса хранилища или установки типа хранилища:

kubectl get pod -n kube-system | grep acstor

Пример выходных данных:

pod/acstor-azuresan-csi-driver-jrqd2                       7/7     Running   0               142m
pod/acstor-azuresan-csi-driver-tcdp8                       7/7     Running   0               142m
pod/acstor-cluster-manager-76c67496f9-8ln5d                2/2     Running   0               3h54m
pod/acstor-cluster-manager-76c67496f9-b4c8q                2/2     Running   0               3h54m
pod/acstor-geneva-588bcbcc67-4tr5d                         3/3     Running   0               3h54m
pod/acstor-geneva-588bcbcc67-k7j7k                         3/3     Running   0               3h54m
pod/acstor-node-agent-46v47                                1/1     Running   0               142m
pod/acstor-node-agent-6c99m                                1/1     Running   0               142m
pod/acstor-otel-collector-4lfgz                            1/1     Running   0               142m
pod/acstor-otel-collector-hw9nd                            1/1     Running   0               142m

Отладка

Для отладки наблюдайте за системой по мере того как компоненты разворачиваются.

kubectl get events -n kube-system --watch
kubectl get pod -n kube-system --watch

Проверьте настраиваемые ресурсы HelmRelease и OCIRepository, используемые установщиком:

kubectl describe helmreleases.helm.installer.acstor.io -n kube-system
kubectl describe ocirepositories.source.installer.acstor.io -n kube-system

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