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


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

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

Внимание

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

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

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

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

  • Для этой статьи требуется последняя версия (2.35.0 или более поздняя) Azure CLI. Узнайте , как установить Azure CLI. Если вы используете среду Bash в Azure Cloud Shell, то последняя версия уже установлена. Если вы планируете выполнять команды локально, а не в Azure Cloud Shell, обязательно запустите их с правами администратора. Дополнительные сведения см. в статье "Начало работы с Azure Cloud Shell".

  • Вам потребуется клиент командной строки Kubernetes. kubectl Он уже установлен, если вы используете Azure Cloud Shell или вы можете установить его локально, выполнив az aks install-cli команду.

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

Начало работы

  • Запишите идентификатор подписки Azure. Если вы хотите использовать Azure Elastic SAN в качестве хранилища данных, вам потребуется роль владельца хранилища контейнеров Azure или роль участника службы хранилища контейнеров Azure, назначенная подписке Azure. Доступ на уровне владельца позволяет установить расширение хранилища контейнеров Azure, предоставить доступ к ресурсам хранилища и предоставить разрешение на настройку ресурса Azure Elastic SAN. Доступ на уровне участника позволяет установить расширение и предоставить доступ к ресурсам хранилища. Если вы планируете использовать диски Azure или временный диск в качестве хранилища данных, вам не нужны специальные разрешения на подписку.

  • Запустите Azure Cloud Shell или, если вы используете локальную установку, войдите в Azure CLI с помощью команды az login .

  • Если вы используете Azure Cloud Shell, вам может потребоваться подключить хранилище. Выберите подписку Azure, в которой вы хотите создать учетную запись хранения и нажмите кнопку "Создать".

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

Добавьте или обновите последнюю версию 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.

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 Elastic SAN: Azure Elastic SAN подходит для баз данных общего назначения, служб потоковой передачи и обмена сообщениями, сред CD/CI и других рабочих нагрузок уровня 1/2. Хранилище подготавливается по требованию для каждого созданного тома и моментального снимка тома. Несколько кластеров могут одновременно получить доступ к одной сети SAN, однако постоянные тома могут быть подключены только одним потребителем одновременно.

  • Диски Azure: диски Azure хорошо подходят для баз данных, таких как MySQL, MongoDB и PostgreSQL. Хранилище подготавливается для каждого целевого пула носителей контейнеров и максимального размера тома.

  • Временный диск. Этот параметр использует локальные NVMe или временные диски SSD на узлах AKS и очень чувствительны к задержке (низкая задержка в мс), поэтому лучше всего использовать приложения без необходимости обеспечения устойчивости данных или встроенной поддержки репликации данных, например Cassandra. AKS обнаруживает доступное эфемерное хранилище на узлах AKS и получает диски для развертывания томов.

Потребление ресурсов

Службе хранилища контейнеров Azure требуются определенные ресурсы узлов для запуска компонентов службы. На основе выбора типа пула носителей, который будет указан при установке хранилища контейнеров Azure, это ресурсы, которые будут использоваться:

Тип пула носителей Ядра ЦП ОЗУ
Azure Elastic SAN  нет нет
Диски Azure 1 1 ГиБ
Временный диск — временный SSD 1 1 ГиБ
Временный диск — локальный NVMe (стандартный уровень) 25% ядер (уровень производительности можно обновить)* 1 ГиБ

Ресурсы, используемые на каждом узле, будут использоваться для каждого узла в пуле узлов, где будет установлено хранилище контейнеров Azure. Если у узлов недостаточно ресурсов, хранилище контейнеров Azure не будет выполняться. Kubernetes автоматически попытается инициализировать эти неудачные модули pod, поэтому если ресурсы освобождены, эти модули pod можно инициализировать снова.

*В типе эфемерного диска пула носителей — локальный NVMe со стандартным уровнем производительности (по умолчанию), если для узлов кластера используется несколько типов SKU виртуальной машины, 25% используемых ядер ЦП применяется к наименьшему используемому SKU. Например, если вы используете сочетание типов виртуальных машин с 8 ядрами и 16 ядрами, потребление ресурсов составляет 2 ядра. Вы можете обновить уровень производительности, чтобы использовать больший процент ядер и достичь большего количества операций ввода-вывода в секунду.

Убедитесь, что тип виртуальной машины для кластера соответствует следующим критериям.

Чтобы использовать хранилище контейнеров Azure, вам потребуется пул узлов не менее трех виртуальных машин Linux. Каждая виртуальная машина должна иметь не менее четырех виртуальных ЦП (виртуальных ЦП). Хранилище контейнеров Azure будет использовать один основной компонент для обработки ввода-вывода на каждой виртуальной машине, в который развертывается расширение.

Следуйте этим рекомендациям при выборе типа виртуальной машины для узлов кластера. Необходимо выбрать тип виртуальной машины, поддерживающий хранилище Azure уровня "Премиум".

  • Если вы планируете использовать Azure Elastic SAN или диски Azure в качестве резервного хранилища, выберите тип виртуальной машины общего назначения, например standard_d4s_v5.
  • Если вы планируете использовать временный диск с локальным NVMe, выберите номер SKU виртуальной машины, поддерживающий локальные диски NVMe, например SKU оптимизированных для хранилища виртуальных машин или SKU ускорения GPU.
  • Если вы планируете использовать временный диск с временным SSD, выберите виртуальную машину с временным ssd-диском, таким как Ev3 и Esv3-series.

Создание кластера AKS и установка хранилища контейнеров Azure

Если у вас уже развернут кластер AKS, следуйте инструкциям по установке в этом кратком руководстве.

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

При выполнении этой команды хранилище контейнеров Azure будет включаться в пул системных узлов* с тремя виртуальными машинами Linux. Если вы указываете локальный NVMe для типа пула носителей, обязательно установите для параметра "Число узлов" значение 4 или больше, или команда не будет выполняться.

По умолчанию пул системных узлов называется nodepool1. Если вы хотите включить хранилище контейнеров Azure в других пулах узлов, см. статью "Установка хранилища контейнеров Azure" в определенных пулах узлов. Если вы хотите указать дополнительные параметры пула носителей с помощью этой команды, см . в этой таблице.

*Если есть существующие пулы узлов с acstor.azure.com/io-engine:acstor меткой, хранилище контейнеров Azure установит компоненты плоскости данных по умолчанию. В противном случае пользователи могут передать предпочтительный пул узлов через acstor Azure CLI. Если кластер имеет только пул системных узлов, он будет помечен и используется для хранилища контейнеров Azure по умолчанию. Важно отметить, что только компоненты плоскости данных будут ограничены пулом помеченных узлов. Компоненты уровня управления хранилища контейнеров Azure не ограничиваются помеченными узлами и могут быть установлены в пуле системных узлов.

az aks create -n <cluster-name> -g <resource-group> --node-vm-size Standard_D4s_v3 --node-count 3 --enable-azure-container-storage <storage-pool-type> --generate-ssh-keys

Развертывание займет 10–15 минут. После завершения будет установлен кластер AKS с хранилищем контейнеров Azure, компоненты для выбранного типа пула носителей и пул носителей по умолчанию. Если вы хотите включить дополнительные типы пулов носителей для создания дополнительных пулов носителей, см . дополнительные типы пулов носителей.

Внимание

Если вы указали Azure Elastic SAN в качестве резервного хранилища для пула носителей и не имеете роль владельца хранилища контейнеров Azure или роль участника службы хранилища контейнеров Azure, назначенную подписке Azure, установка хранилища контейнеров Azure завершится ошибкой, и пул носителей не будет создан. Если вы пытаетесь включить Azure Elastic SAN в качестве дополнительного типа пула носителей без какой-либо из этих ролей, предыдущие установки и пулы носителей останутся не затронутыми, а пул носителей Elastic SAN не будет создан.

Отображение доступных пулов носителей

Чтобы получить список доступных пулов носителей, выполните следующую команду:

kubectl get sp -n acstor

Чтобы проверить состояние пула носителей, выполните следующую команду:

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

Message Если вы не говоритеStoragePool is ready, пул носителей по-прежнему создает или столкнулась с проблемой. См. раздел "Устранение неполадок с хранилищем контейнеров Azure".

Следующий шаг

Выберите ссылку для выбранного типа резервного хранилища и следуйте инструкциям по созданию томов.