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


Руководство. Развертывание хранилища контейнеров Azure (версия 1.x.x) в кластере AKS

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

Это важно

В этой статье объясняется, как установить хранилище контейнеров Azure (версия 1.x.x), которое теперь явно требует параметра фиксации версии --container-storage-version 1 для установки. Теперь доступно хранилище контейнеров Azure (версия 2.x.x ).

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

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

  • Узнайте, как хранилище контейнеров Azure поддерживает различные рабочие нагрузки в Kubernetes.
  • Изучите несколько вариантов серверной части хранилища для настройки хранилища в соответствии с потребностями приложения.
  • Разверните хранилище контейнеров Azure (версия 1.x.x) в кластере AKS и создайте универсальный временный том.

Перед тем как начать

В предыдущих руководствах вы создали образ контейнера, загрузили его в экземпляр ACR и создали кластер AKS. Начните с Учебника 1 - Подготовка приложения для AKS, чтобы следовать инструкции шаг за шагом.

  • Для работы с этим руководством требуется использовать Azure CLI версии 2.35.0 или более поздней версии. Портал и PowerShell в настоящее время не поддерживаются для хранилища контейнеров Azure. Проверьте вашу версию с помощью az --version. Чтобы выполнить установку или обновление, см. сведения в статье Установка Azure CLI. Если вы используете среду Bash в Azure Cloud Shell, то последняя версия уже установлена.
  • У вас должен быть существующий кластер AKS на базе Linux как минимум с 3 узлами с виртуальными машинами, оптимизированными для хранения SKU или виртуальными машинами SKU с ускорением GPU. См. руководство 3. Создание кластера AKS.
  • Вам потребуется клиент командной строки Kubernetes. kubectl Он уже установлен, если вы используете Azure Cloud Shell или вы можете установить его локально, выполнив az aks install-cli команду.

Установка расширения Kubernetes

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

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

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

Если вы еще не подключены к кластеру из предыдущего руководства, выполните следующие команды. Если вы уже подключены, этот раздел можно пропустить.

  1. Выполните следующую команду, чтобы подключиться к кластеру.

    az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
    
  2. Проверьте подключение к кластеру kubectl get с помощью команды. Эта команда возвращает список узлов кластера.

    kubectl get nodes
    
  3. В следующем примере выходных данных показаны узлы в кластере. Убедитесь, что состояние всех узлов отображается как Готово:

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

Выбор варианта резервного хранилища

Хранилище контейнеров Azure (версия 1.x.x) использует пулы носителей для подготовки постоянных и универсальных томов и управления ими. Он предлагает различные варианты хранения данных для пулов хранилища, каждый из которых подходит для конкретных рабочих нагрузок. Выбор подходящего типа хранилища имеет решающее значение для оптимизации производительности рабочей нагрузки, устойчивости и экономичности. В этом руководстве мы будем использовать эфемерный диск с локальным накопителем NVMe в качестве резервного хранилища для создания общего эфемерного тома. Однако мы также рассмотрим другие варианты резервного хранилища, которые позволяют создавать постоянные тома.

Временный диск

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

Для создания универсальных временных томов или постоянных томов можно использовать временный диск, даже если данные будут потеряны при перезапуске виртуальной машины.

Диски Azure

Идеально подходит для баз данных, таких как PostgreSQL и MongoDB, диски Azure обеспечивают устойчивость, масштабируемость и многоуровневую производительность, включая SSD уровня "Премиум" и SSD "Ультра".

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

Azure Elastic SAN (предварительная версия)

Предназначен для общих потребностей в хранилище и баз данных общего назначения, требующих масштабируемости и высокой доступности, Azure Elastic SAN подходит для рабочих нагрузок, таких как конвейеры CI/CD или крупномасштабная обработка данных.

Включение хранилища контейнеров Azure (версия 1.x.x) и создание пула носителей

Выполните следующую команду, чтобы установить хранилище контейнеров Azure в кластере и создать локальный пул носителей NVMe.

az aks update -n myAKSCluster -g myResourceGroup --enable-azure-container-storage ephemeralDisk --container-storage-version 1 --storage-pool-option NVMe

Развертывание должно занять менее 15 минут.

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

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

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

kubectl get sp -n acstor

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

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

Если Message не говорит StoragePool is ready, тогда ваш пул хранения всё ещё создаётся или столкнулся с проблемой.

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

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

Запустите kubectl get sc , чтобы отобразить доступные классы хранилища. Вы увидите класс хранилища с именем acstor-<storage-pool-name>. Используйте этот класс хранилища в следующем разделе для развертывания модуля pod.

Развертывание модуля pod с универсальным временным томом

Создайте pod с помощью Fio (гибкий тестировщик ввода-вывода) для тестирования и моделирования рабочих нагрузок, используя универсальный временный том.

  1. Используйте избранный текстовый редактор для создания файла манифеста YAML, code acstor-pod.yamlнапример.

  2. Вставьте следующий код и сохраните файл.

    kind: Pod
    apiVersion: v1
    metadata:
      name: fiopod
    spec:
      nodeSelector:
        acstor.azure.com/io-engine: acstor
      containers:
        - name: fio
          image: nixery.dev/shell/fio
          args:
            - sleep
            - "1000000"
          volumeMounts:
            - mountPath: "/volume"
              name: ephemeralvolume
      volumes:
        - name: ephemeralvolume
          ephemeral:
            volumeClaimTemplate:
              metadata:
                labels:
                  type: my-ephemeral-volume
              spec:
                accessModes: [ "ReadWriteOnce" ]
                storageClassName: acstor-ephemeraldisk-nvme # replace with the name of your storage class if different
                resources:
                  requests:
                    storage: 1Gi
    

    Если вы изменяете размер тома, убедитесь, что этот размер меньше доступной емкости эфемерного диска одного узла. Запустите kubectl get diskpool -n acstor, чтобы проверить доступную емкость.

  3. Примените файл манифеста YAML для развертывания модуля pod.

    kubectl apply -f acstor-pod.yaml
    

    Вы должны увидеть результат, аналогичный приведенному ниже:

    pod/fiopod created
    
  4. Убедитесь, что pod запущен, а также что запрос эфемерного тома успешно подключен к pod.

    kubectl describe pod fiopod
    kubectl describe pvc fiopod-ephemeralvolume
    

Теперь вы развернули модуль pod, использующий локальный NVMe в качестве хранилища, и его можно использовать для рабочих нагрузок Kubernetes.

Перед подготовкой дополнительных томов проверьте доступную емкость временных дисков:

kubectl describe node <node-name>

Дополнительные сведения о хранилище контейнеров Azure (версия 1.x.x), включая создание постоянных томов, см. в статье "Что такое хранилище контейнеров Azure"

Очистите ресурсы

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

  1. Удалите модуль.

    kubectl delete pod fiopod
    
  2. Удалите пул хранения.

    kubectl delete sp -n acstor <storage-pool-name>
    
  3. Удалите экземпляр расширения.

    az aks update -n myAKSCluster -g myResourceGroup --disable-azure-container-storage all
    

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

В этом руководстве вы развернули хранилище контейнеров Azure (версия 1.x.x) в кластере AKS. Вы узнали, как:

  • Включите хранилище контейнеров Azure (версия 1.x.x) в кластере AKS.
  • Выберите резервный тип хранилища и создайте пул носителей.
  • Разверните модуль pod с универсальным временным томом.

В следующем руководстве вы узнаете, как развернуть приложение в кластере.