Поделиться через


Конфигурация облачного приема периферийных томов

Эта статья описывает конфигурацию для 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

  1. Create a storage account following the instructions here.

    Note

    Когда вы создаете учетную запись хранилища, рекомендуется создать её в той же группе ресурсов и в том же регионе/местоположении, что и ваш кластер Kubernetes.

  2. Создайте контейнер в учетной записи хранения, которую вы создали ранее, следуя инструкциям здесь.

Настроить идентификацию расширения

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

  1. Перейдите к вашему кластеру с поддержкой Arc.
  2. Select Extensions.
  3. Выберите хранилище контейнеров Azure, включенное с помощью расширения Azure Arc.
  4. Запишите основной идентификатор в разделе Подробности расширения кластера.

Настройка учетной записи хранилища Blob для расширенной идентификации

Добавьте разрешения на идентификацию расширения в учетную запись хранилища.

  1. Перейдите к учетной записи хранилища в портале Azure.
  2. Select Access Control (IAM).
  3. Выберите Добавить+ -> Добавить назначение роли.
  4. Выберите Storage Blob Data Owner, затем выберите Далее.
  5. Выберите +Выбрать участников.
  6. Чтобы добавить ваш основной идентификатор в список Выбранные участники:, вставьте идентификатор и выберите + рядом с этим элементом.
  7. Click Select.
  8. Чтобы просмотреть и назначить разрешения, выберите Далее, затем выберите Проверить + Назначить.

Создайте заявку на постоянный том для облачной загрузки (PVC)

  1. Создайте файл с именем cloudIngestPVC.yaml со следующим содержимым. Отредактируйте строку metadata.name и создайте имя для вашего запроса на постоянный том. Имя упоминается в последней строке deploymentExample.yaml на следующем этапе. Также обновите значение metadata.namespace, чтобы использовать его в вашем целевом потребляющем модуле. Если у вас нет предназначенного потребляющего контейнера, значение metadata.namespacedefault. Параметр 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
    
  2. Чтобы применить cloudIngestPVC.yaml, выполните:

    kubectl apply -f "cloudIngestPVC.yaml"
    

Подключить подтом к краевому тома

Чтобы создать подтом с использованием идентификатора расширения для подключения к контейнеру вашей учетной записи хранения, выполните следующий процесс:

  1. Получите название вашего Ingest Edge Volume с помощью следующей команды:

    kubectl get edgevolumes
    
  2. Создайте файл с именем 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
    
  3. Чтобы применить edgeSubvolume.yaml, выполните:

    kubectl apply -f "edgeSubvolume.yaml"
    

Необязательно: измените ingestPolicy из значения по умолчанию

  1. Если вы хотите изменить 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.

  2. Чтобы применить myedgeingest-policy.yaml, выполните:

    kubectl apply -f "myedgeingest-policy.yaml"
    

Подключите свое приложение (нативное приложение для Kubernetes)

  1. Чтобы настроить общий одиночный под (родное приложение 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>
    
  2. Чтобы применить deploymentExample.yaml, выполните:

    kubectl apply -f "deploymentExample.yaml"
    
  3. Используйте kubectl get pods, чтобы найти имя вашего пода. Скопируйте это имя, чтобы использовать его на следующем этапе.

    Примечание

    Поскольку spec.replicas из deploymentExample.yaml был указан как 2, две капсулы появляются, используя kubectl get pods. Вы можете выбрать любое имя pod для использования на следующем этапе.

  4. Выполните следующую команду и замените POD_NAME_HERE на значение, скопированное вами на предыдущем этапе:

    kubectl exec -it POD_NAME_HERE -- sh
    
  5. Перейдите в каталог, указанный в пути монтирования /data по спецификации вашего deploymentExample.yaml.

  6. Вы должны увидеть каталог с именем, которое вы указали как ваше path на шаге 2 в разделе Присоединение подтома к Edge Volume. Измените каталог на /YOUR_PATH_NAME_HERE, заменив значение YOUR_PATH_NAME_HERE на ваши данные.

  7. В качестве примера создайте файл с именем file1.txt и запишите в него, используя echo "Hello World" > file1.txt.

  8. В портале Azure перейдите к вашей учетной записи хранилища и найдите контейнер, указанный в Шаге 2 руководства Подключение подтома к Edge Volume. Когда вы выберете свой контейнер, вы должны найти file1.txt, размещённый внутри контейнера. Если файл ещё не появился, подождите примерно 1 минуту; Edge Volumes ждёт одну минуту перед загрузкой.

Next steps

После выполнения этих шагов вы сможете начать мониторинг своего внедрения, используя Azure Monitor и Kubernetes Monitoring или сторонние решения для мониторинга, такие как Prometheus и Grafana.

Контролируйте ваше развертывание