Настройка облачных томов Ingest Edge
В этой статье описывается конфигурация для томов Cloud Ingest Edge (отправка BLOB-объектов с помощью локальной очистки).
Что такое облачные тома Ingest Edge?
Облачные тома ingest Edge упрощают прием безграничных данных из пограничных объектов в большой двоичный объект, включая ADLSgen2. Файлы, записанные в этот тип хранилища, легко передаются в хранилище BLOB-объектов и после подтверждения отправки затем очищаются локально. Это удаление гарантирует доступность места для новых данных. Кроме того, этот параметр хранилища поддерживает целостность данных в отключенных средах, что позволяет локальному хранилищу и синхронизации при повторном подключении к сети.
Например, вы можете написать файл в облако приема ПВХ, а процесс выполняет проверку, чтобы проверить наличие новых файлов каждую минуту. После идентификации файл отправляется для отправки в назначенное место назначения BLOB-объектов. После подтверждения успешной отправки облачный том Ingest Edge ожидает пять минут, а затем удаляет локальную версию файла.
Необходимые компоненты
Создайте учетную запись хранения, следуя инструкциям ниже.
Примечание.
При создании учетной записи хранения рекомендуется создать ее в той же группе ресурсов и регионе или расположении, что и кластер Kubernetes.
Создайте контейнер в созданной ранее учетной записи хранения, следуя инструкциям ниже.
Настройка удостоверения расширения
Пограничные тома позволяют использовать удостоверение расширения, назначаемое системой, для доступа к хранилищу BLOB-объектов. В этом разделе описывается, как использовать удостоверение расширения, назначаемое системой, для предоставления доступа к учетной записи хранения, что позволяет отправлять облачные тома в эти системы хранения.
Рекомендуется использовать удостоверение расширения. Если конечным назначением является хранилище BLOB-объектов или ADLSgen2, см. следующие инструкции. Если конечным местом является OneLake, следуйте инструкциям в разделе "Настройка OneLake для удостоверений расширения".
Хотя это не рекомендуется, если вы предпочитаете использовать проверку подлинности на основе ключей, следуйте инструкциям в проверке подлинности на основе ключей.
Получение удостоверения расширения
Портал Azure
- Перейдите в кластер, подключенный к Arc.
- Выберите Расширения.
- Выберите хранилище контейнеров Azure, включенное расширением Azure Arc.
- Обратите внимание на идентификатор субъекта в разделе "Сведения о расширении кластера".
Настройка учетной записи хранения BLOB-объектов для удостоверения расширения
Добавление разрешений удостоверения расширения в учетную запись хранения
- Перейдите к учетной записи хранения в портал Azure.
- Выберите Управление доступом (IAM).
- Нажмите кнопку Add+ (Добавить+ —> добавить назначение ролей).
- Выберите владельца данных BLOB-объектов хранилища, а затем нажмите кнопку "Далее".
- Нажмите кнопку +Выбрать участников.
- Чтобы добавить идентификатор субъекта в выбранные члены: вставьте идентификатор и выберите + рядом с удостоверением.
- Щелкните Выбрать.
- Чтобы просмотреть и назначить разрешения, нажмите кнопку "Далее", а затем нажмите кнопку "Проверить и назначить".
Создание утверждения постоянного объема в облаке (ПВХ)
Создайте файл с именем
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
Чтобы применить, выполните следующую
cloudIngestPVC.yaml
команду:kubectl apply -f "cloudIngestPVC.yaml"
Присоединение подволок к пограничному тому
Чтобы создать подволок с помощью удостоверения расширения для подключения к контейнеру учетной записи хранения, используйте следующий процесс:
Получите имя тома Ingest Edge с помощью следующей команды:
kubectl get edgevolumes
Создайте файл с именем
edgeSubvolume.yaml
и скопируйте следующее содержимое. Эти переменные необходимо обновить с помощью ваших сведений:Примечание.
Используйте только строчные буквы и дефисы. Дополнительные сведения см. в документации по именовании объектов Kubernetes.
metadata.name
: создайте имя для подволок.spec.edgevolume
: это имя было получено из предыдущего шага с помощьюkubectl get edgevolumes
.spec.path
: создайте собственное подкаталогное имя подкаталога в пути подключения. В следующем примере уже содержится имя примера (exampleSubDir
). При изменении этого имени пути необходимо обновить строку 33deploymentExample.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). Это число может варьироваться от 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>
Дополнительные сведения об этих спецификациях см. в разделе "Настройка политики приема".
Чтобы применить, выполните следующую
myedgeingest-policy.yaml
команду:kubectl apply -f "myedgeingest-policy.yaml"
Присоединение приложения (собственное приложение Kubernetes)
Чтобы настроить универсальное одно pod (собственное приложение Kubernetes) для утверждения постоянного тома (PVC), создайте файл с именем
deploymentExample.yaml
со следующим содержимым. Изменитеcontainers.name
значения иvolumes.persistentVolumeClaim.claimName
значения. При обновлении имени пути изedgeSubvolume.yaml
exampleSubDir
строки 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>
Чтобы применить, выполните следующую
deploymentExample.yaml
команду:kubectl apply -f "deploymentExample.yaml"
Используется
kubectl get pods
для поиска имени модуля pod. Скопируйте это имя, чтобы использовать его на следующем шаге.Примечание.
Так как
spec.replicas
вdeploymentExample.yaml
качестве2
значения задано два модуля pod, используютсяkubectl get pods
. Вы можете выбрать любое имя модуля pod, используемое для следующего шага.Выполните следующую команду и замените
POD_NAME_HERE
скопированное значение на последнем шаге:kubectl exec -it POD_NAME_HERE -- sh
Измените каталоги в
/data
путь подключения, как указано из вашегоdeploymentExample.yaml
.Вы увидите каталог с именем, указанным в
path
шаге 2 , в разделе "Присоединение подволюки" к пограничному тому . Измените каталоги/YOUR_PATH_NAME_HERE
на , заменивYOUR_PATH_NAME_HERE
значение своими сведениями.Например, создайте файл с именем
file1.txt
и напишите его с помощьюecho "Hello World" > file1.txt
.В портал Azure перейдите к учетной записи хранения и найдите контейнер, указанный на шаге 2 вложенной части подключения к тому Edge. При выборе контейнера необходимо найти
file1.txt
заполненное в контейнере. Если файл еще не появился, подождите примерно 1 минуту; Пограничные тома ожидается минуту перед отправкой.
Следующие шаги
После выполнения этих действий можно начать мониторинг развертывания с помощью Azure Monitor и Kubernetes Monitoring или 3-стороннего мониторинга с помощью Prometheus и Grafana.