Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Хранилище модулей Azure — это облачная служба управления хранилищем, развертывания и оркестрации, разработанная для модулей. В этой статье показано, как создать моментальный снимок постоянного тома и восстановить его с новым утверждением постоянного тома (ПВХ).
Ограничения
Моментальные снимки томов не поддерживаются при использовании эфемерного диска (локального NVMe) в качестве резервного хранилища.
Предварительные условия
Если у вас нет подписки на Azure, создайте бесплатную учетную запись перед началом.
Для этой статьи требуется Azure CLI версии 2.83.0 или более поздней. Дополнительные сведения см. в статье "Установка Azure CLI". Отключите такие расширения, как
aks-previewесли возникают проблемы. Установите или обновите расширения по мере необходимости:az extension add --upgrade --name k8s-extension-
az extension add --upgrade --name elastic-san(только Elastic SAN)
Вам нужен клиент командной строки Kubernetes.
kubectlОн уже установлен, если вы используете Azure Cloud Shell. Его можно установить локально, выполнивaz aks install-cliкоманду.Проверьте, поддерживается ли целевой регион в регионах хранилища контейнеров Azure.
- В этой статье предполагается, что вы установили хранилище контейнеров Azure на вашем кластере Azure Kubernetes Service (AKS) и создали PVC с помощью Azure Elastic SAN.
Создайте класс моментального снимка тома
Класс снимка тома определяет настройки снимка. Выполните следующие действия, чтобы создать класс снимка состояния тома для Elastic SAN.
Создайте файл манифеста YAML, например
acstor-volumesnapshotclass.yaml.Вставьте следующий код. Значение для класса моментального снимка тома
nameможет быть любым.apiVersion: snapshot.storage.k8s.io/v1 kind: VolumeSnapshotClass metadata: name: elasticsan-snapshot-class driver: san.csi.azure.com deletionPolicy: DeleteПримените манифест для создания класса моментального снимка тома.
kubectl apply -f acstor-volumesnapshotclass.yamlПосле завершения создания появится следующее сообщение:
volumesnapshotclass.snapshot.storage.k8s.io/elasticsan-snapshot-class createdМожно также запустить
kubectl get volumesnapshotclassдля подтверждения создания. Должен отобразиться результат, как в примере ниже:NAME DRIVER DELETIONPOLICY AGE elasticsan-snapshot-class san.csi.azure.com Delete 11s
Создание моментального снимка тома
Затем создайте моментальный снимок существующего ПВХ и примените класс моментальных снимков тома, созданный на предыдущем шаге.
Создайте файл манифеста YAML, например
acstor-volumesnapshot.yaml.Вставьте следующий код. Задайте
volumeSnapshotClassNameимя класса моментального снимка тома, созданного на предыдущем шаге. ЗадайтеpersistentVolumeClaimNameназвание ПВХ, который вы хотите снять. Значение моментального снимкаnameтома может быть любым значением.apiVersion: snapshot.storage.k8s.io/v1 kind: VolumeSnapshot metadata: name: elasticsan-volume-snapshot spec: volumeSnapshotClassName: elasticsan-snapshot-class source: persistentVolumeClaimName: elasticsanpvcПримените манифест для создания моментального снимка тома.
kubectl apply -f acstor-volumesnapshot.yamlПосле завершения создания появится следующее сообщение:
volumesnapshot.snapshot.storage.k8s.io/elasticsan-volume-snapshot createdМожно также запустить
kubectl get volumesnapshot, чтобы проверить, создан ли моментальный снимок тома. ЕслиREADYTOUSEравноtrue, вы можете перейти к следующему шагу.
Создать восстановленный запрос на постоянный том
Создайте новый PVC, который использует снимок тома в качестве источника данных.
Создайте файл манифеста YAML, например
acstor-pvc-restored.yaml.Вставьте следующий код. Он
storageClassNameдолжен соответствовать классу StorageClass, используемому при создании исходного ПВХ. Для значения источникаnameданных используйте имя моментального снимка тома, созданного на предыдущем шаге. Значение ПВХmetadata.nameможет быть любым значением.apiVersion: v1 kind: PersistentVolumeClaim metadata: name: pvc-elasticsan-snapshot-restored spec: accessModes: - ReadWriteOnce storageClassName: azuresan-csi resources: requests: storage: 100Gi dataSource: name: elasticsan-volume-snapshot kind: VolumeSnapshot apiGroup: snapshot.storage.k8s.ioПримените манифест для создания PVC.
kubectl apply -f acstor-pvc-restored.yamlПосле завершения создания появится следующее сообщение:
persistentvolumeclaim/pvc-elasticsan-snapshot-restored createdМожно также запустить
kubectl describe pvc pvc-elasticsan-snapshot-restored, чтобы проверить, создан ли постоянный том. Статус показывает В ожидании с сообщением, что он ожидает создания первого потребителя перед привязкой.
Совет
Если необходимо повторно применить YAML-файл, чтобы исправить ошибку или внести изменения, удалите старый ПВХ в первую очередь: kubectl delete pvc <pvc-name>
Удаление исходного модуля pod (необязательно)
Перед созданием нового модуля pod можно удалить исходный модуль pod, из который вы создали моментальный снимок.
- Запустите
kubectl get pods, чтобы вывести список подов. Убедитесь, что вы удалили правильный модуль pod. - Чтобы удалить модуль pod, выполните команду
kubectl delete pod <pod-name>.
Создайте новый Pod, используя восстановленный моментальный снимок
Создайте новый модуль pod с помощью восстановленного ПВХ. Создайте модуль pod с помощью средства тестирования гибких операций ввода-вывода (fio) для тестирования и моделирования рабочей нагрузки и укажите путь подключения для постоянного тома.
Создайте файл манифеста YAML, например
fio-pod-restore.yaml.Вставьте следующий код. Утверждение постоянного тома
claimNameдолжно быть именем созданного вами восстановленного ПВХ. Значение podmetadata.nameможет быть любым значением.apiVersion: v1 kind: Pod metadata: name: fio-restore spec: volumes: - name: iscsi-volume persistentVolumeClaim: claimName: pvc-elasticsan-snapshot-restored containers: - name: fio image: nixery.dev/shell/fio volumeMounts: - mountPath: /volume name: iscsi-volumeПримените манифест для развертывания модуля pod.
kubectl apply -f fio-pod-restore.yamlДолжен отобразиться результат, как в примере ниже:
pod/fio-restore createdУбедитесь, что модуль pod запущен, и ПВХ привязан:
kubectl describe pod fio-restore kubectl describe pvc pvc-elasticsan-snapshot-restoredПроверьте тестирование fio, чтобы просмотреть текущее состояние:
kubectl exec -it fio-restore -- 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.