Использование службы хранилища контейнеров Azure с Azure Elastic SAN (предварительная версия)
Хранилище контейнеров Azure — это облачная служба управления томами, развертывания и оркестрации, созданная изначально для контейнеров. Azure Elastic SAN — это полностью интегрированное решение, которое упрощает развертывание, масштабирование, управление и настройку SAN, а также предлагает встроенные облачные возможности, такие как высокий уровень доступности.
В качестве предварительной версии можно настроить службу хранилища контейнеров Azure для использования Azure Elastic SAN. В этой статье описывается, как сделать эту конфигурацию. В конце этой статьи у вас будет модуль pod, использующий Elastic SAN в качестве хранилища.
Необходимые компоненты
Если у вас нет подписки 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 Kubernetes".
Проверьте, поддерживается ли целевой регион в регионах хранилища контейнеров Azure.
Убедитесь, что у вас есть роль владельца хранилища контейнеров Azure или роль участника службы хранилища контейнеров Azure в подписке. Любой из этих ролей предоставляет разрешения, позволяющие хранилищу контейнеров Azure взаимодействовать с ресурсом Elastic SAN. Чтобы внести это изменение, перейдите на страницу подписки на портал Azure. Выберите элемент управления доступом (IAM) Добавьте назначение ролей и найдите "Владелец хранилища контейнеров Azure" или "Участник службы хранилища контейнеров Azure" на вкладке ролей функции задания. Выберите "Просмотреть > назначения>" и добавьте свою учетную запись. >
Чтобы использовать хранилище контейнеров Azure с azure Elastic SAN (предварительная версия), кластер AKS должен иметь пул узлов не менее трех виртуальных машин общего назначения, таких как standard_d4s_v5 для узлов кластера, каждый из которых содержит не менее четырех виртуальных ЦП (виртуальных ЦП).
Ограничения
Следующие функции в настоящее время не поддерживаются при использовании хранилища контейнеров Azure для развертывания и оркестрации эластичной сети SAN.
- Моментальные снимки томов
- Расширение пула носителей
Доступность в регионах
Хранилище контейнеров Azure доступно только для подмножества регионов Azure:
- Северная часть ЮАР (Африка)
- "Восточная Австралия" (Азиатско-Тихоокеанский регион);
- (Азиатско-Тихоокеанский регион) Восточная Азия
- (Азиатско-Тихоокеанский регион) Восточная Япония
- (Азиатско-Тихоокеанский регион) Республика Корея, центральный регион
- Юго-Восточная Азия (Азиатско-Тихоокеанский регион)
- "Центральная Индия" (Азиатско-Тихоокеанский регион);
- (Европа) Центральная Франция
- Центрально-Западная Германия (Европа)
- "Северная Европа" (Европа);
- "Западная Европа" (Европа).
- (Европа) Южная часть Соединенного Королевства
- (Европа) Центральная Швеция;
- Северная Швейцария (Европа)
- Северная часть ОАЭ (Ближний Восток)
- (Северная Америка) Восточная часть США;
- (Северная Америка) Восточная часть США 2;
- (Северная Америка) Западная часть США
- (Северная Америка) Западная часть США 2;
- (Северная Америка) Западная часть США 3;
- (Северная Америка) Центральная часть США;
- (Северная Америка) Северная часть США
- (Северная Америка) Центрально-южная часть США;
- (Северная Америка) Западная часть США
- (Северная Америка) Центральная Канада;
- (Северная Америка) Восточная Канада
- Южная Бразилия (Южная Америка)
Создание и присоединение постоянных томов
Выполните следующие действия, чтобы создать и подключить постоянный том.
1. Создание пула носителей
Сначала создайте пул носителей, который является логическим группированием хранилища для кластера Kubernetes, определив его в файле манифеста YAML.
Если вы включили хранилище контейнеров Azure с помощью az aks create
или az aks update
командами, возможно, у вас уже есть пул носителей. Используется kubectl get sp -n acstor
для получения списка пулов носителей. Если у вас уже есть пул носителей, который вы хотите использовать, можно пропустить этот раздел и перейти к отображению доступных классов хранилища.
Выполните следующие действия, чтобы создать пул носителей с помощью Azure Elastic SAN (предварительная версия).
Используйте избранный текстовый редактор для создания файла манифеста YAML,
code acstor-storagepool.yaml
например.Вставьте приведенный ниже код. Значение имени пула носителей может быть любым нужным. Настройте хранилище , чтобы отразить емкость хранилища, которую вы хотите использовать в Gi или Ti, и сохраните файл. Azure Elastic SAN в настоящее время не поддерживает изменение размера пулов носителей.
apiVersion: containerstorage.azure.com/v1 kind: StoragePool metadata: name: managed namespace: acstor spec: poolType: elasticSan: {} resources: requests: {"storage": 1Ti}
Примените файл манифеста YAML для создания пула носителей.
kubectl apply -f acstor-storagepool.yaml
После завершения создания пула носителей вы увидите следующее сообщение:
storagepool.containerstorage.azure.com/managed created
Эту команду можно также запустить, чтобы проверить состояние пула носителей. Замените
<storage-pool-name>
значением имени пула носителей. В этом примере будет управляться значение.kubectl describe sp <storage-pool-name> -n acstor
При создании пула носителей хранилище контейнеров Azure создаст класс хранилища от вашего имени с помощью соглашения acstor-<storage-pool-name>
об именовании. Он также создаст ресурс Azure Elastic SAN.
2. Отображение доступных классов хранилища
Когда пул носителей готов к использованию, необходимо выбрать класс хранилища, чтобы определить, как хранилище динамически создается при создании утверждений постоянного тома и развертывании постоянных томов.
Запустите kubectl get sc
, чтобы отобразить доступные классы хранилища. Вы увидите класс хранилища с именем acstor-<storage-pool-name>
.
Внимание
Не используйте класс хранилища, помеченный внутренним. Это внутренний класс хранилища, необходимый для работы хранилища контейнеров Azure.
3. Создание утверждения постоянного тома
Утверждение постоянного тома (PVC) используется для автоматической подготовки хранилища на основе класса хранения. Выполните следующие действия, чтобы создать ПВХ с помощью нового класса хранения.
Используйте избранный текстовый редактор для создания файла манифеста YAML,
code acstor-pvc.yaml
например.Вставьте следующий код и сохраните файл. Значение ПВХ
name
может быть любым, что вы хотите.apiVersion: v1 kind: PersistentVolumeClaim metadata: name: managedpvc spec: accessModes: - ReadWriteOnce storageClassName: acstor-managed # replace with the name of your storage class if different resources: requests: storage: 100Gi
Примените файл манифеста YAML для создания ПВХ.
kubectl apply -f acstor-pvc.yaml
Должен отобразиться примерно такой результат:
persistentvolumeclaim/managedpvc created
Вы можете проверить состояние ПВХ, выполнив следующую команду:
kubectl describe pvc managedpvc
После создания ПВХ он готов к использованию pod.
4. Развертывание модуля pod и подключение постоянного тома
Создайте модуль pod с помощью Fio (гибкий средство тестирования ввода-вывода) для тестирования и моделирования рабочих нагрузок и укажите путь подключения для постоянного тома. Для имени утверждения используйте значение имени , используемое при создании утверждения постоянного тома.
Используйте избранный текстовый редактор для создания файла манифеста YAML,
code acstor-pod.yaml
например.Вставьте следующий код и сохраните файл.
kind: Pod apiVersion: v1 metadata: name: fiopod spec: nodeSelector: acstor.azure.com/io-engine: acstor volumes: - name: managedpv persistentVolumeClaim: claimName: managedpvc containers: - name: fio image: nixery.dev/shell/fio args: - sleep - "1000000" volumeMounts: - mountPath: "/volume" name: managedpv
Примените файл манифеста YAML для развертывания модуля pod.
kubectl apply -f acstor-pod.yaml
Вы должны увидеть результат, аналогичный приведенному ниже:
pod/fiopod created
Убедитесь, что модуль pod запущен и что утверждение постоянного тома успешно привязано к pod:
kubectl describe pod fiopod kubectl describe pvc managedpvc
Проверьте тестирование fio, чтобы просмотреть текущее состояние:
kubectl exec -it fiopod -- fio --name=benchtest --size=800m --filename=/volume/test --direct=1 --rw=randrw --ioengine=libaio --bs=4k --iodepth=16 --numjobs=8 --time_based --runtime=60
Теперь вы развернули модуль pod, использующий Elastic SAN в качестве хранилища, и его можно использовать для рабочих нагрузок Kubernetes.
Управление постоянными томами и пулами носителей
Теперь, когда вы создали постоянный том, вы можете отсоединить и повторно подключить его по мере необходимости. Вы также можете удалить пул носителей.
Отключение и повторное подключение постоянного тома
Чтобы отключить постоянный том, удалите модуль pod, к которому подключен постоянный том. Замените <pod-name>
именем pod, например fiopod.
kubectl delete pods <pod-name>
Чтобы повторно подключить постоянный том, просто укажите имя утверждения постоянного тома в файле манифеста YAML, как описано в разделе "Развертывание модуля pod" и подключение постоянного тома.
Чтобы проверить, к каким постоянным томам привязано утверждение постоянного тома, выполните команду kubectl get pvc <persistent-volume-claim-name>
.
Удаление пула носителей
Если вы хотите удалить пул носителей, выполните следующую команду. Замените <storage-pool-name>
именем пула носителей.
kubectl delete sp -n acstor <storage-pool-name>