Использование предварительной версии контейнера Azure служба хранилища с временным диском
Контейнер Azure служба хранилища — это облачная служба управления томами, развертывания и оркестрации, созданная в собственном коде для контейнеров. В этой статье показано, как настроить контейнер Azure служба хранилища использовать временный диск в качестве внутреннего хранилища для рабочих нагрузок Kubernetes. В конце концов у вас будет модуль pod, использующий локальный NVMe или temp SSD в качестве хранилища.
Внимание
Локальные диски являются временными, что означает, что они создаются в локальном хранилище виртуальной машины и не сохраняются в службе хранилища Azure. Данные будут потеряны на этих дисках при остановке или освобождении виртуальной машины. Вы можете создавать только универсальные временные тома Kubernetes из пула носителей эфемерных дисков. Если вы хотите создать постоянный том, необходимо включить реплика tion для пула носителей.
Необходимые компоненты
Если у вас нет подписки 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 служба хранилища с временным диском, кластер AKS должен иметь пул узлов не менее трех оптимизированных для хранения виртуальных машин, таких как standard_l8s_v3. Рекомендуется использовать для каждой виртуальной машины не менее четырех виртуальных ЦП (виртуальных ЦП).
Доступность в регионах
Контейнер Azure служба хранилища доступен только для подмножества регионов Azure:
- Северная часть ЮАР (Африка)
- "Восточная Австралия" (Азиатско-Тихоокеанский регион);
- (Азиатско-Тихоокеанский регион) Восточная Азия
- (Азиатско-Тихоокеанский регион) Восточная Япония
- (Азиатско-Тихоокеанский регион) Республика Корея, центральный регион
- Юго-Восточная Азия (Азиатско-Тихоокеанский регион)
- "Центральная Индия" (Азиатско-Тихоокеанский регион);
- (Европа) Центральная Франция
- Центрально-Западная Германия (Европа)
- "Северная Европа" (Европа);
- "Западная Европа" (Европа).
- (Европа) Южная часть Соединенного Королевства
- (Европа) Центральная Швеция;
- Северная Швейцария (Европа)
- Северная часть ОАЭ (Ближний Восток)
- (Северная Америка) Восточная часть США;
- (Северная Америка) Восточная часть США 2;
- (Северная Америка) Западная часть США
- (Северная Америка) Западная часть США 2;
- (Северная Америка) Западная часть США 3;
- (Северная Америка) Центральная часть США;
- (Северная Америка) Северная часть США
- (Северная Америка) Центрально-южная часть США;
- (Северная Америка) Западная часть США
- (Северная Америка) Центральная Канада;
- (Северная Америка) Восточная Канада
- Южная Бразилия (Южная Америка)
Создание пула носителей
Сначала создайте пул носителей, который является логическим группированием хранилища для кластера Kubernetes, определив его в файле манифеста YAML.
Если вы включили служба хранилища контейнера Azure или az aks create
az aks update
команды, возможно, у вас уже есть пул носителей. Используется kubectl get sp -n acstor
для получения списка пулов носителей. Если у вас уже есть пул носителей, который вы хотите использовать, можно пропустить этот раздел и перейти к отображению доступных классов хранилища.
Существует три варианта создания пула носителей, использующего временный диск:
- Создание пула носителей с помощью локального NVMe
- Создание пула носителей с временным SSD
- Создание пула носителей с помощью локального NVMe и реплика tion
Создание пула носителей с помощью NVMe
Выполните следующие действия, чтобы создать пул носителей с помощью локального NVMe.
Используйте избранный текстовый редактор для создания файла манифеста YAML,
code acstor-storagepool.yaml
например.Вставьте следующий код и сохраните файл. Значение имени пула носителей может быть любым нужным.
apiVersion: containerstorage.azure.com/v1 kind: StoragePool metadata: name: ephemeraldisk namespace: acstor spec: poolType: ephemeralDisk: {}
Примените файл манифеста YAML для создания пула носителей.
kubectl apply -f acstor-storagepool.yaml
После завершения создания пула носителей вы увидите следующее сообщение:
storagepool.containerstorage.azure.com/ephemeraldisk created
Вы также можете выполнить эту команду, чтобы проверка состояние пула носителей. Замените
<storage-pool-name>
значением имени пула носителей. В этом примере значение будет эфемерным.kubectl describe sp <storage-pool-name> -n acstor
При создании пула носителей контейнер Azure служба хранилища создаст класс хранилища от вашего имени с помощью соглашения acstor-<storage-pool-name>
об именовании.
Создание пула носителей с временным SSD
Выполните следующие действия, чтобы создать пул носителей с помощью temp SSD.
Используйте избранный текстовый редактор для создания файла манифеста YAML,
code acstor-storagepool.yaml
например.Вставьте следующий код и сохраните файл. Значение имени пула носителей может быть любым нужным.
apiVersion: containerstorage.azure.com/v1 kind: StoragePool metadata: name: ephemeraldisk namespace: acstor spec: poolType: ephemeralDisk: diskType: temp
Примените файл манифеста YAML для создания пула носителей.
kubectl apply -f acstor-storagepool.yaml
После завершения создания пула носителей вы увидите следующее сообщение:
storagepool.containerstorage.azure.com/ephemeraldisk created
Вы также можете выполнить эту команду, чтобы проверка состояние пула носителей. Замените
<storage-pool-name>
значением имени пула носителей. В этом примере значение будет эфемерным.kubectl describe sp <storage-pool-name> -n acstor
При создании пула носителей контейнер Azure служба хранилища создаст класс хранилища от вашего имени с помощью соглашения acstor-<storage-pool-name>
об именовании.
Отображение доступных классов хранилища
Когда пул носителей готов к использованию, необходимо выбрать класс хранилища, чтобы определить, как хранилище динамически создается при создании утверждений постоянного тома и развертывании постоянных томов.
Запустите kubectl get sc
, чтобы отобразить доступные классы хранилища. Вы увидите класс хранилища с именем acstor-<storage-pool-name>
.
Внимание
Не используйте класс хранилища, помеченный внутренним. Это внутренний класс хранилища, необходимый для работы служба хранилища контейнера Azure.
Развертывание модуля pod с универсальным временным томом
Создайте модуль pod с помощью Fio (гибкий модуль ввода-вывода Tester) для тестирования и моделирования рабочих нагрузок, использующего универсальный временный том.
Используйте избранный текстовый редактор для создания файла манифеста YAML,
code acstor-pod.yaml
например.Вставьте следующий код и сохраните файл.
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
Примените файл манифеста YAML для развертывания модуля pod.
kubectl apply -f acstor-pod.yaml
Вы должны увидеть результат, аналогичный приведенному ниже:
pod/fiopod created
Убедитесь, что модуль pod запущен и что утверждение эфемерного тома успешно привязано к pod:
kubectl describe pod fiopod kubectl describe pvc fiopod-ephemeralvolume
Проверьте тестирование 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, использующий временный диск в качестве хранилища, и его можно использовать для рабочих нагрузок Kubernetes.
Развертывание пула носителей
Вы можете расширить пулы носителей, поддерживаемые локальным NVMe или temp SSD, чтобы быстро масштабироваться и без простоя. Сжатие пулов носителей в настоящее время не поддерживается.
Так как пул носителей, поддерживаемый временным диском, использует локальные ресурсы хранилища на узлах кластера AKS (виртуальных машинах), расширение пула носителей требует добавления другого узла в кластер. Следуйте этим инструкциям, чтобы развернуть пул носителей.
Выполните следующую команду, чтобы добавить узел в кластер AKS. Замените
<cluster-name>
,<nodepool name>
и<resource-group-name>
собственными значениями. Чтобы получить имя пула узлов, выполните командуkubectl get nodes
.az aks nodepool add --cluster-name <cluster name> --name <nodepool name> --resource-group <resource group> --node-vm-size Standard_L8s_v3 --node-count 1 --labels acstor.azure.com/io-engine=acstor
Запустите
kubectl get nodes
и увидите, что узел был добавлен в кластер.Запустите
kubectl get sp -A
и убедитесь, что емкость пула носителей увеличилась.
Удаление пула носителей
Если вы хотите удалить пул носителей, выполните следующую команду. Замените <storage-pool-name>
именем пула носителей.
kubectl delete sp -n acstor <storage-pool-name>
Необязательно. Создание пула носителей с помощью тома реплика tion (только NVMe)
Приложения, использующие локальные NVMe, могут использовать реплика хранения для повышения устойчивости. Репликация в настоящее время не поддерживается для temp SSD.
В настоящее время контейнер Azure служба хранилища поддерживает конфигурации трех реплика и пяти реплика. Если указать три реплика, в кластере AKS должно быть не менее трех узлов. Если указать пять реплика, необходимо иметь по крайней мере пять узлов.
Выполните следующие действия, чтобы создать пул носителей с помощью локального NVMe с реплика tion.
Примечание.
Так как пулы носителей временных дисков потребляют все доступные диски NVMe, необходимо удалить все существующие локальные пулы носителей NVMe, прежде чем создавать новый пул носителей с реплика.
Используйте избранный текстовый редактор для создания файла манифеста YAML,
code acstor-storagepool.yaml
например.Вставьте следующий код и сохраните файл. Значение имени пула носителей может быть любым нужным. Задайте для реплика значение 3 или 5.
apiVersion: containerstorage.azure.com/v1 kind: StoragePool metadata: name: nvme namespace: acstor spec: poolType: ephemeralDisk: diskType: nvme replicas: 3
Примените файл манифеста YAML для создания пула носителей.
kubectl apply -f acstor-storagepool.yaml
После завершения создания пула носителей вы увидите следующее сообщение:
storagepool.containerstorage.azure.com/nvme created
Вы также можете выполнить эту команду, чтобы проверка состояние пула носителей. Замените
<storage-pool-name>
значением имени пула носителей. В этом примере значение будет nvme.kubectl describe sp <storage-pool-name> -n acstor
При создании пула носителей контейнер Azure служба хранилища создаст класс хранилища от вашего имени с помощью соглашения acstor-<storage-pool-name>
об именовании. Теперь можно отобразить доступные классы хранилища и создать утверждение постоянного тома.
Создание заявки на доступ к постоянному тому
Утверждение постоянного тома (PVC) используется для автоматической подготовки хранилища на основе класса хранения. Выполните следующие действия, чтобы создать ПВХ с помощью нового класса хранения.
Используйте избранный текстовый редактор для создания файла манифеста YAML,
code acstor-pvc.yaml
например.Вставьте следующий код и сохраните файл. Значение ПВХ
name
может быть любым, что вы хотите.apiVersion: v1 kind: PersistentVolumeClaim metadata: name: ephemeralpvc spec: accessModes: - ReadWriteOnce storageClassName: acstor-ephemeraldisk-nvme # replace with the name of your storage class if different resources: requests: storage: 100Gi
Примените файл манифеста YAML для создания ПВХ.
kubectl apply -f acstor-pvc.yaml
Должен отобразиться примерно такой результат:
persistentvolumeclaim/ephemeralpvc created
Вы можете проверить состояние ПВХ, выполнив следующую команду:
kubectl describe pvc ephemeralpvc
После создания ПВХ он готов к использованию pod.
Развертывание модуля 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: ephemeralpv persistentVolumeClaim: claimName: ephemeralpvc containers: - name: fio image: nixery.dev/shell/fio args: - sleep - "1000000" volumeMounts: - mountPath: "/volume" name: ephemeralpv
Примените файл манифеста YAML для развертывания модуля pod.
kubectl apply -f acstor-pod.yaml
Вы должны увидеть результат, аналогичный приведенному ниже:
pod/fiopod created
Убедитесь, что модуль pod запущен и что утверждение постоянного тома успешно привязано к pod:
kubectl describe pod fiopod kubectl describe pvc ephemeralpvc
Проверьте тестирование 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, использующий временный диск в качестве хранилища, и его можно использовать для рабочих нагрузок Kubernetes.
Отключение и повторное подключение постоянного тома
Чтобы отключить постоянный том, удалите модуль pod, к которому подключен постоянный том. Замените <pod-name>
именем pod, например fiopod.
kubectl delete pods <pod-name>
Чтобы повторно подключить постоянный том, просто укажите имя утверждения постоянного тома в файле манифеста YAML, как описано в разделе "Развертывание модуля pod" и подключение постоянного тома.
Чтобы проверка, к которому привязан постоянный том, к которому привязано утверждение постоянного тома, выполните командуkubectl get pvc <persistent-volume-claim-name>
.