Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Azure Container Storage — это облачная служба управления объемами, развертывания и оркестрации, изначально созданная для контейнеров. В этой статье описывается, как создать моментальный снимок тома постоянного хранения и восстановить его как новый том с помощью запроса на постоянный том.
Предварительные условия
- Для этой статьи требуется последняя версия (2.35.0 или более поздняя) Azure CLI. Узнайте , как установить Azure CLI. Если вы используете Azure Cloud Shell, последняя версия уже установлена. Если вы планируете выполнять команды локально, а не в Azure Cloud Shell, обязательно запустите их с правами администратора.
- Вам потребуется кластер Azure Kubernetes Service (AKS) с пулом узлов не менее чем из трех виртуальных машин (VM) для узлов кластера, каждая из которых имеет минимально четыре виртуальных CPU (vCPU).
- Считается, что вы уже установили хранилище контейнеров Azure в кластере AKS и создали пул хранения и запрос на постоянное место для хранения (ПВХ) с помощью дисков Azure или временных дисков (локального хранилища). Моментальные снимки томов в настоящее время не поддерживаются при использовании Elastic SAN в качестве резервного хранилища.
Создайте класс моментального снимка тома
Сначала создайте класс моментального снимка тома, который позволяет указать атрибуты моментального снимка тома, определив его в файле манифеста YAML. Выполните следующие действия, чтобы создать класс моментального снимка тома для дисков Azure.
Используйте избранный текстовый редактор для создания файла манифеста YAML,
code acstor-volumesnapshotclass.yaml
например.Вставьте приведенный ниже код. Значение name класса моментального снимка тома может быть любым.
apiVersion: snapshot.storage.k8s.io/v1 kind: VolumeSnapshotClass metadata: name: csi-acstor-vsc driver: containerstorage.csi.azure.com deletionPolicy: Delete parameters: incremental: "true" # available values: "true", "false" ("true" by default for Azure Public Cloud, and "false" by default for Azure Stack Cloud)
Примените манифест YAML, чтобы создать класс моментального снимка тома.
kubectl apply -f acstor-volumesnapshotclass.yaml
После завершения создания появится следующее сообщение:
volumesnapshotclass.snapshot.storage.k8s.io/csi-acstor-vsc created
Можно также запустить
kubectl get volumesnapshotclass
, чтобы проверить, был ли создан класс моментальных снимков тома. Вы должны увидеть такие выходные данные, как:NAME DRIVER DELETIONPOLICY AGE csi-acstor-vsc containerstorage.csi.azure.com Delete 11s
Создание моментального снимка тома
Затем вы создадите моментальный снимок существующего утверждения постоянного тома и примените класс моментального снимка тома, созданный на предыдущем шаге.
Используйте избранный текстовый редактор для создания файла манифеста YAML,
code acstor-volumesnapshot.yaml
например.Вставьте приведенный ниже код. Должно
volumeSnapshotClassName
быть имя класса моментального снимка тома, созданного на предыдущем шаге. ДляpersistentVolumeClaimName
используйте имя запроса на постоянный объем, для которого требуется создать снимок состояния. Имя моментального снимка тома name может быть любым.apiVersion: snapshot.storage.k8s.io/v1 kind: VolumeSnapshot metadata: name: azuredisk-volume-snapshot spec: volumeSnapshotClassName: csi-acstor-vsc source: persistentVolumeClaimName: azurediskpvc
Примените YAML-манифест для создания снимка тома.
kubectl apply -f acstor-volumesnapshot.yaml
После завершения создания появится следующее сообщение:
volumesnapshot.snapshot.storage.k8s.io/azuredisk-volume-snapshot created
Можно также запустить
kubectl get volumesnapshot
, чтобы проверить, был ли создан моментальный снимок тома. ЕслиREADYTOUSE
равняется true, можно перейти к следующему шагу.
Создать восстановленный запрос на постоянный том
Теперь можно создать новое утверждение постоянного тома, которое использует моментальный снимок тома в качестве источника данных.
Используйте избранный текстовый редактор для создания файла манифеста YAML,
code acstor-pvc-restored.yaml
например.Вставьте приведенный ниже код. Должен
storageClassName
соответствовать классу хранилища, который использовался при создании исходного постоянного тома. Например, если вы используете временный диск (локальный NVMe) вместо дисков Azure для внутреннего хранилища, перейдитеstorageClassName
наacstor-ephemeraldisk
. Для значения имени источника данных используйте имя моментального снимка тома, созданного на предыдущем шаге. Значение имени метаданных для утверждения постоянного тома может быть любым, каким захотите.apiVersion: v1 kind: PersistentVolumeClaim metadata: name: pvc-azuredisk-snapshot-restored spec: accessModes: - ReadWriteOnce storageClassName: acstor-azuredisk resources: requests: storage: 100Gi dataSource: name: azuredisk-volume-snapshot kind: VolumeSnapshot apiGroup: snapshot.storage.k8s.io
Примените файл манифеста YAML для создания ПВХ.
kubectl apply -f acstor-pvc-restored.yaml
После завершения создания появится следующее сообщение:
persistentvolumeclaim/pvc-azuredisk-snapshot-restored created
Можно также запустить
kubectl describe pvc pvc-azuredisk-snapshot-restored
, чтобы проверить, создан ли постоянный том. Вам следует установить состояние "Ожидание" и сообщение "ожидание создания первого потребителя перед привязкой".
Совет
Если вы уже создали восстановленное утверждение постоянного тома и хотите применить yaml-файл еще раз, чтобы исправить ошибку или внести изменения, необходимо сначала удалить старое утверждение постоянного тома перед применением yaml-файла еще раз: kubectl delete pvc <pvc-name>
Удаление исходного модуля pod (необязательно)
Перед созданием нового pod, возможно, стоит удалить исходный pod, из которого вы создали моментальный снимок.
- Запустите
kubectl get pods
, чтобы вывести список подов. Убедитесь, что вы удаляете правильный модуль pod. - Чтобы удалить модуль pod, выполните команду
kubectl delete pod <pod-name>
.
Создайте новый Pod, используя восстановленный моментальный снимок
Затем создайте новый pod, используя восстановленный запрос на постоянный том. Создайте pod с помощью Fio (гибкого тестировщика I/O) для тестирования и моделирования рабочей нагрузки и укажите путь монтирования для постоянного тома.
Используйте избранный текстовый редактор для создания файла манифеста YAML,
code acstor-pod2.yaml
например.Вставьте приведенный ниже код. Утверждение постоянного тома
claimName
должно быть именем постоянного тома из восстановленного вами моментального снимка. Значение name в метаданных для pod может быть любым.kind: Pod apiVersion: v1 metadata: name: fiopod2 spec: nodeSelector: acstor.azure.com/io-engine: acstor volumes: - name: diskpv persistentVolumeClaim: claimName: pvc-azuredisk-snapshot-restored containers: - name: fio image: nixery.dev/shell/fio args: - sleep - "1000000" volumeMounts: - mountPath: "/volume" name: diskpv
Примените файл манифеста YAML для развертывания модуля pod.
kubectl apply -f acstor-pod2.yaml
Вы должны увидеть результат, аналогичный приведенному ниже:
pod/fiopod2 created
Убедитесь, что Pod запущен и что запрос на постоянный том успешно привязан к Pod.
kubectl describe pod fiopod2 kubectl describe pvc pvc-azuredisk-snapshot-restored
Проверьте тестирование fio, чтобы просмотреть текущее состояние:
kubectl exec -it fiopod2 -- fio --name=benchtest --size=800m --filename=/volume/test --direct=1 --rw=randrw --ioengine=libaio --bs=4k --iodepth=16 --numjobs=8 --time_based --runtime=60
Теперь вы развернули новый под из восстановленного запроса на постоянный том, и его можно использовать для нагрузок Kubernetes.