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


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

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

Внимание

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

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

  • Если у вас нет подписки 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.

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

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

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

  • Запустите Azure Cloud Shell или, если вы используете локальную установку, войдите в Azure с помощью команды 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>

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

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

  1. Настройте kubectl подключение к кластеру az aks get-credentials с помощью команды. Приведенная ниже команда:

    • скачивает учетные данные и настраивает интерфейс командной строки Kubernetes для их использования;
    • Использует ~/.kube/configрасположение по умолчанию для файла конфигурации Kubernetes. Можно указать другое расположение для файла конфигурации Kubernetes с помощью аргумента --file .
    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. Хранилище подготавливается для каждого целевого пула носителей контейнеров и максимального размера тома.

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

Примечание.

Для azure Elastic SAN и дисков Azure хранилище контейнеров Azure развернет резервное хранилище для вас в процессе установки. Вам не нужно создавать собственную эластичную san или диск Azure. Чтобы использовать Elastic SAN, вам потребуется роль владельца хранилища контейнеров Azure или роль участника службы хранилища контейнеров Azure в подписке Azure.

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

Службе хранилища контейнеров 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. Если для пула носителей используется локальный NVMe, пул узлов должен содержать не менее четырех виртуальных машин Linux. Каждая виртуальная машина должна иметь не менее четырех виртуальных ЦП (виртуальных ЦП). Хранилище контейнеров Azure будет использовать один основной компонент для обработки ввода-вывода на каждой виртуальной машине, в который развертывается расширение.

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

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

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

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

Обновление предварительной установки до общедоступной версии

Если у вас уже есть экземпляр предварительной версии хранилища контейнеров Azure, запущенного в кластере, рекомендуется обновить до последней общедоступной версии, выполнив следующую команду. Если вы впервые устанавливаете хранилище контейнеров 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 соответствует требованиям виртуальной машины.

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

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

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

Внимание

Если вы создали кластер AKS с помощью портал Azure: кластер, скорее всего, будет иметь пул узлов пользователя и пул узлов системы или агента. Однако если кластер состоит только из пула системных узлов, то это относится к кластерам test/dev, созданным с помощью портал Azure, необходимо сначала добавить новый пул узлов пользователя, а затем пометить его. Это связано с тем, что при создании кластера AKS с помощью портал Azure в пул узлов системы или агента добавляется фрагментCriticalAddOnsOnly, который блокирует установку хранилища контейнеров Azure в пуле системных узлов. Этот момент не добавляется при создании кластера AKS с помощью Azure CLI.

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

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

Внимание

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

Установка хранилища контейнеров Azure на определенных пулах узлов

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

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

    az aks nodepool list --resource-group <resource-group> --cluster-name <cluster-name>
    
  2. Выполните следующую команду, чтобы установить хранилище контейнеров Azure на определенных пулах узлов. Замените <cluster-name> и <resource-group> собственными значениями. Замените <storage-pool-type> на azureDisk, ephemeralDisk или elasticSan. При выборе ephemeralDiskможно также указать параметр --storage-pool-, и значения могут быть 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 в этом пуле узлов, можно указать пул узлов при --azure-container-storage-nodepools <nodepool-name> выполнении az aks update команды.

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

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

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>

Примечание.

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

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

Чтобы создать тома, выберите ссылку для выбранного типа резервного хранилища.