Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Эта статья описывает конфигурацию для Cloud Ingest Edge Volumes (загрузка блобов с локальной очисткой).
Что такое Cloud Ingest Edge Volumes?
Cloud Ingest Edge Volumes обеспечивает неограниченную загрузку данных с периферии в блоб, включая ADLSgen2. Файлы, записанные в этот тип хранилища, плавно передаются в хранение blob, и после подтверждения загрузки, они затем удаляются локально. Это удаление обеспечивает наличие свободного пространства для новых данных. Кроме того, этот вариант хранения поддерживает целостность данных в автономных средах, что позволяет локальное хранение и синхронизацию при повторном подключении к сети.
Например, вы можете записать файл в ваш облачный PVC, и процесс будет запускать сканирование для проверки новых файлов каждую минуту. После идентификации файл отправляется для загрузки в назначенное вами хранилище блоков. Following confirmation of a successful upload, Cloud Ingest Edge Volume waits for five minutes, and then deletes the local version of your file.
Prerequisites
Create a storage account following the instructions here.
Note
Когда вы создаете учетную запись хранилища, рекомендуется создать её в той же группе ресурсов и в том же регионе/местоположении, что и ваш кластер Kubernetes.
Создайте контейнер в учетной записи хранения, которую вы создали ранее, следуя инструкциям здесь.
Настроить идентификацию расширения
Edge Volumes позволяет использовать назначенную системой идентичность расширения для доступа к хранилищу BLOB. This section describes how to use the system-assigned extension identity to grant access to your storage account, allowing you to upload cloud ingest volumes to these storage systems.
Рекомендуется использовать идентификатор расширения. Если вашим конечным пунктом назначения является хранилище blob или ADLSgen2, ознакомьтесь с следующими инструкциями. If your final destination is OneLake, follow the instructions in Configure OneLake for Extension Identity.
Хотя это не рекомендуется, если вы предпочитаете использовать аутентификацию по ключу, следуйте инструкциям в Аутентификация по ключу.
Получить идентификатор расширения
Azure portal
- Перейдите к вашему кластеру с поддержкой Arc.
- Select Extensions.
- Выберите хранилище контейнеров Azure, включенное с помощью расширения Azure Arc.
- Запишите основной идентификатор в разделе Подробности расширения кластера.
Настройка учетной записи хранилища Blob для расширенной идентификации
Добавьте разрешения на идентификацию расширения в учетную запись хранилища.
- Перейдите к учетной записи хранилища в портале Azure.
- Select Access Control (IAM).
- Выберите Добавить+ -> Добавить назначение роли.
- Выберите Storage Blob Data Owner, затем выберите Далее.
- Выберите +Выбрать участников.
- Чтобы добавить ваш основной идентификатор в список Выбранные участники:, вставьте идентификатор и выберите + рядом с этим элементом.
- Click Select.
- Чтобы просмотреть и назначить разрешения, выберите Далее, затем выберите Проверить + Назначить.
Создайте заявку на постоянный том для облачной загрузки (PVC)
Создайте файл с именем
cloudIngestPVC.yaml
со следующим содержимым. Отредактируйте строкуmetadata.name
и создайте имя для вашего запроса на постоянный том. Имя упоминается в последней строкеdeploymentExample.yaml
на следующем этапе. Также обновите значениеmetadata.namespace
, чтобы использовать его в вашем целевом потребляющем модуле. Если у вас нет предназначенного потребляющего контейнера, значениеmetadata.namespace
—default
. Параметрspec.resources.requests.storage
определяет размер постоянного тома. В этом примере размер составляет 2 ГБ, но его можно изменить в соответствии с вашими требованиями:Примечание
Используйте только строчные буквы и дефисы. Для получения дополнительной информации см. документацию по именованию объектов в Kubernetes.
kind: PersistentVolumeClaim apiVersion: v1 metadata: ### Create a name for your PVC ### name: <create-persistent-volume-claim-name-here> ### Use a namespace that matched your intended consuming pod, or "default" ### namespace: <intended-consuming-pod-or-default-here> spec: accessModes: - ReadWriteMany resources: requests: storage: 2Gi storageClassName: cloud-backed-sc
Чтобы применить
cloudIngestPVC.yaml
, выполните:kubectl apply -f "cloudIngestPVC.yaml"
Подключить подтом к краевому тома
Чтобы создать подтом с использованием идентификатора расширения для подключения к контейнеру вашей учетной записи хранения, выполните следующий процесс:
Получите название вашего Ingest Edge Volume с помощью следующей команды:
kubectl get edgevolumes
Создайте файл с именем
edgeSubvolume.yaml
и скопируйте следующие содержимое. Эти переменные должны быть обновлены с вашей информацией.Примечание
Используйте только строчные буквы и дефисы. Для получения дополнительной информации см. документацию по именованию объектов в Kubernetes.
-
metadata.name
: Придумайте имя для вашего подтома. -
spec.edgevolume
: Это имя было получено из предыдущего шага с использованиемkubectl get edgevolumes
. -
spec.path
: Создайте собственное имя подкаталога в путе монтирования. В следующем примере уже указано имя примера (exampleSubDir
). Если вы измените это имя пути, строка 33 вdeploymentExample.yaml
должна быть обновлена новым именем пути. Если вы решите переименовать путь, не используйте начальный слэш. -
spec.container
: Имя контейнера в вашей учетной записи хранения. -
spec.storageaccountendpoint
: Перейдите к своему учетной записи хранения в портале Azure. На странице Обзор в правом верхнем углу экрана выберите JSON Вид. Вы можете найти ссылкуstorageaccountendpoint
в properties.primaryEndpoints.blob. Скопируйте всю ссылку; например,https://mytest.blob.core.windows.net/
.
apiVersion: "arccontainerstorage.azure.net/v1" kind: EdgeSubvolume metadata: name: <create-a-subvolume-name-here> spec: edgevolume: <your-edge-volume-name-here> path: exampleSubDir # If you change this path, line 33 in deploymentExample.yaml must be updated. Don't use a preceding slash. auth: authType: MANAGED_IDENTITY storageaccountendpoint: "https://<STORAGE ACCOUNT NAME>.blob.core.windows.net/" container: <your-blob-storage-account-container-name> ingestPolicy: edgeingestpolicy-default # Optional: See the following instructions if you want to update the ingestPolicy with your own configuration
-
Чтобы применить
edgeSubvolume.yaml
, выполните:kubectl apply -f "edgeSubvolume.yaml"
Необязательно: измените ingestPolicy
из значения по умолчанию
Если вы хотите изменить
ingestPolicy
с значения по умолчаниюedgeingestpolicy-default
, создайте файл с именемmyedgeingest-policy.yaml
со следующим содержимым. Следующие переменные должны быть обновлены в соответствии с вашими предпочтениями.Примечание
Используйте только строчные буквы и дефисы. Для получения дополнительной информации см. документацию по именованию объектов в Kubernetes.
-
metadata.name
: Создайте имя для вашей ingestPolicy. Это имя необходимо обновить и указать в разделеspec.ingestPolicy
вашегоedgeSubvolume.yaml
. -
spec.ingest.order
: Порядок загрузки измененных файлов. Это лучшее усилие, а не гарантия (по умолчанию от старых к новым). Варианты сортировки: сначала старые или сначала новые. -
spec.ingest.minDelaySec
: Минимальное количество секунд до того, как испорченный файл может быть обработан (по умолчанию — 60). This number can range between 0 and 31536000. -
spec.eviction.order
: Как файлы удаляются (по умолчанию неупорядоченно). Варианты порядка выселения: без упорядочивания или никогда. -
spec.eviction.minDelaySec
: Количество секунд до того, как чистый файл будет подлежать удалению (по умолчанию 300). This number can range between 0 and 31536000.
apiVersion: arccontainerstorage.azure.net/v1 kind: EdgeIngestPolicy metadata: name: <create-a-policy-name-here> # This must be updated and referenced in the spec.ingestPolicy section of the edgeSubvolume.yaml spec: ingest: order: <your-ingest-order> minDelaySec: <your-min-delay-sec> eviction: order: <your-eviction-order> minDelaySec: <your-min-delay-sec>
Для получения дополнительной информации об этих спецификациях, см Set ingest policy.
-
Чтобы применить
myedgeingest-policy.yaml
, выполните:kubectl apply -f "myedgeingest-policy.yaml"
Подключите свое приложение (нативное приложение для Kubernetes)
Чтобы настроить общий одиночный под (родное приложение Kubernetes) для работы с Persistent Volume Claim (PVC), создайте файл с именем
deploymentExample.yaml
со следующим содержимым. Измените значенияcontainers.name
иvolumes.persistentVolumeClaim.claimName
. Если вы обновили имя пути изedgeSubvolume.yaml
,exampleSubDir
в строке 33, оно должно быть обновлено в соответствии с вашим новым именем пути. Параметрspec.replicas
определяет количество создаваемых реплик подов. В этом примере это 2, но его можно изменить в соответствии с вашими потребностями.Примечание
Используйте только строчные буквы и дефисы. Для получения дополнительной информации см. документацию по именованию объектов Kubernetes.
apiVersion: apps/v1 kind: Deployment metadata: name: cloudingestedgevol-deployment ### This must be unique for each deployment you choose to create. spec: replicas: 2 selector: matchLabels: name: wyvern-testclientdeployment template: metadata: name: wyvern-testclientdeployment labels: name: wyvern-testclientdeployment spec: affinity: podAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchExpressions: - key: app operator: In values: - wyvern-testclientdeployment topologyKey: kubernetes.io/hostname containers: ### Specify the container in which to launch the busy box. ### - name: <create-a-container-name-here> image: mcr.microsoft.com/azure-cli:2.57.0@sha256:c7c8a97f2dec87539983f9ded34cd40397986dcbed23ddbb5964a18edae9cd09 command: - "/bin/sh" - "-c" - "dd if=/dev/urandom of=/data/exampleSubDir/acsaingesttestfile count=16 bs=1M && while true; do ls /data &>/dev/null || break; sleep 1; done" volumeMounts: ### This name must match the volumes.name attribute below ### - name: wyvern-volume ### This mountPath is where the PVC is attached to the pod's filesystem ### mountPath: "/data" volumes: ### User-defined 'name' that's used to link the volumeMounts. This name must match volumeMounts.name as previously specified. ### - name: wyvern-volume persistentVolumeClaim: ### This claimName must refer to your PVC metadata.name (Line 5) claimName: <your-pvc-metadata-name-from-line-5-of-pvc-yaml>
Чтобы применить
deploymentExample.yaml
, выполните:kubectl apply -f "deploymentExample.yaml"
Используйте
kubectl get pods
, чтобы найти имя вашего пода. Скопируйте это имя, чтобы использовать его на следующем этапе.Примечание
Поскольку
spec.replicas
изdeploymentExample.yaml
был указан как2
, две капсулы появляются, используяkubectl get pods
. Вы можете выбрать любое имя pod для использования на следующем этапе.Выполните следующую команду и замените
POD_NAME_HERE
на значение, скопированное вами на предыдущем этапе:kubectl exec -it POD_NAME_HERE -- sh
Перейдите в каталог, указанный в пути монтирования
/data
по спецификации вашегоdeploymentExample.yaml
.Вы должны увидеть каталог с именем, которое вы указали как ваше
path
на шаге 2 в разделе Присоединение подтома к Edge Volume. Измените каталог на/YOUR_PATH_NAME_HERE
, заменив значениеYOUR_PATH_NAME_HERE
на ваши данные.В качестве примера создайте файл с именем
file1.txt
и запишите в него, используяecho "Hello World" > file1.txt
.В портале Azure перейдите к вашей учетной записи хранилища и найдите контейнер, указанный в Шаге 2 руководства Подключение подтома к Edge Volume. Когда вы выберете свой контейнер, вы должны найти
file1.txt
, размещённый внутри контейнера. Если файл ещё не появился, подождите примерно 1 минуту; Edge Volumes ждёт одну минуту перед загрузкой.
Next steps
После выполнения этих шагов вы сможете начать мониторинг своего внедрения, используя Azure Monitor и Kubernetes Monitoring или сторонние решения для мониторинга, такие как Prometheus и Grafana.