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


Настройка облачных томов Ingest Edge

В этой статье описывается конфигурация для томов Cloud Ingest Edge (отправка BLOB-объектов с помощью локальной очистки).

Что такое облачные тома Ingest Edge?

Облачные тома ingest Edge упрощают прием безграничных данных из пограничных объектов в большой двоичный объект, включая ADLSgen2. Файлы, записанные в этот тип хранилища, легко передаются в хранилище BLOB-объектов и после подтверждения отправки затем очищаются локально. Это удаление гарантирует доступность места для новых данных. Кроме того, этот параметр хранилища поддерживает целостность данных в отключенных средах, что позволяет локальному хранилищу и синхронизации при повторном подключении к сети.

Например, вы можете написать файл в облако приема ПВХ, а процесс выполняет проверку, чтобы проверить наличие новых файлов каждую минуту. После идентификации файл отправляется для отправки в назначенное место назначения BLOB-объектов. После подтверждения успешной отправки облачный том Ingest Edge ожидает пять минут, а затем удаляет локальную версию файла.

Необходимые компоненты

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

    Примечание.

    При создании учетной записи хранения рекомендуется создать ее в той же группе ресурсов и регионе или расположении, что и кластер Kubernetes.

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

Настройка удостоверения расширения

Пограничные тома позволяют использовать удостоверение расширения, назначаемое системой, для доступа к хранилищу BLOB-объектов. В этом разделе описывается, как использовать удостоверение расширения, назначаемое системой, для предоставления доступа к учетной записи хранения, что позволяет отправлять облачные тома в эти системы хранения.

Рекомендуется использовать удостоверение расширения. Если конечным назначением является хранилище BLOB-объектов или ADLSgen2, см. следующие инструкции. Если конечным местом является OneLake, следуйте инструкциям в разделе "Настройка OneLake для удостоверений расширения".

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

Получение удостоверения расширения

Портал Azure

  1. Перейдите в кластер, подключенный к Arc.
  2. Выберите Расширения.
  3. Выберите хранилище контейнеров Azure, включенное расширением Azure Arc.
  4. Обратите внимание на идентификатор субъекта в разделе "Сведения о расширении кластера".

Настройка учетной записи хранения BLOB-объектов для удостоверения расширения

Добавление разрешений удостоверения расширения в учетную запись хранения

  1. Перейдите к учетной записи хранения в портал Azure.
  2. Выберите Управление доступом (IAM).
  3. Нажмите кнопку Add+ (Добавить+ —> добавить назначение ролей).
  4. Выберите владельца данных BLOB-объектов хранилища, а затем нажмите кнопку "Далее".
  5. Нажмите кнопку +Выбрать участников.
  6. Чтобы добавить идентификатор субъекта в выбранные члены: вставьте идентификатор и выберите + рядом с удостоверением.
  7. Щелкните Выбрать.
  8. Чтобы просмотреть и назначить разрешения, нажмите кнопку "Далее", а затем нажмите кнопку "Проверить и назначить".

Создание утверждения постоянного объема в облаке (ПВХ)

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

    kubectl apply -f "cloudIngestPVC.yaml"
    

Присоединение подволок к пограничному тому

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

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

    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). Это число может варьироваться от 0 до 31536000.
    • spec.eviction.order: как файлы вытеснили (по умолчанию неупорядоченные). Варианты заказа на вытеснение: неупорядоченные или никогда.
    • spec.eviction.minDelaySec: количество секунд до очистки файла имеет право на вытеснение (по умолчанию — 300). Это число может варьироваться от 0 до 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>
    

    Дополнительные сведения об этих спецификациях см. в разделе "Настройка политики приема".

  2. Чтобы применить, выполните следующую myedgeingest-policy.yamlкоманду:

    kubectl apply -f "myedgeingest-policy.yaml"
    

Присоединение приложения (собственное приложение Kubernetes)

  1. Чтобы настроить универсальное одно pod (собственное приложение Kubernetes) для утверждения постоянного тома (PVC), создайте файл с именем deploymentExample.yaml со следующим содержимым. Измените containers.name значения и volumes.persistentVolumeClaim.claimName значения. При обновлении имени пути из edgeSubvolume.yamlexampleSubDir строки 33 необходимо обновить имя нового пути. Параметр spec.replicas определяет количество создаваемых модулей pod реплики. Это 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 для поиска имени модуля pod. Скопируйте это имя, чтобы использовать его на следующем шаге.

    Примечание.

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

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

    kubectl exec -it POD_NAME_HERE -- sh
    
  5. Измените каталоги в /data путь подключения, как указано из вашего deploymentExample.yaml.

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

  7. Например, создайте файл с именем file1.txt и напишите его с помощью echo "Hello World" > file1.txt.

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

Следующие шаги

После выполнения этих действий можно начать мониторинг развертывания с помощью Azure Monitor и Kubernetes Monitoring или 3-стороннего мониторинга с помощью Prometheus и Grafana.

Мониторинг развертывания