Configurazione di Volumi Edge di inserimento cloud
Questo articolo descrive la configurazione per Volumi Edge di inserimento cloud (caricamento BLOB con ripulitura locale).
Cosa è Configurazione dei Volumi Edge di inserimento cloud?
Volumi Edge di inserimento cloud facilita l'inserimento di dati illimitati dall'edge a BLOB, incluso ADLSgen2. I file scritti in questo tipo di archiviazione vengono trasferiti facilmente all'archiviazione BLOB e, una volta confermato il caricamento, vengono quindi eliminati localmente. Questa rimozione garantisce la disponibilità dello spazio per i nuovi dati. Inoltre, questa opzione di archiviazione supporta l'integrità dei dati in ambienti disconnessi, che consente l'archiviazione locale e la sincronizzazione al momento della riconnessione alla rete.
Ad esempio, è possibile scrivere un file nel cloud inserire PVC e un processo esegue un'analisi per verificare la presenza di nuovi file ogni minuto. Una volta identificato, il file viene inviato per il caricamento nella destinazione BLOB designata. Dopo la conferma di un caricamento riuscito, Volumi Edge di inserimento cloud attende cinque minuti e quindi elimina la versione locale del file.
Prerequisiti
Creare un account di archiviazione seguendo le istruzioni riportate qui.
Nota
Quando si crea l'account di archiviazione, occorre crearlo nello stesso gruppo di risorse del cluster Kubernetes.
Creare un contenitore nell'account di archiviazione creato in precedenza, seguendo le istruzioni riportate qui.
Configurare l'identità dell'estensione
Volumi Edge consente l'uso di un'identità di estensione assegnata dal sistema per l'accesso all'archiviazione BLOB. Questa sezione descrive come usare l'identità dell'estensione assegnata dal sistema per concedere l'accesso all'account di archiviazione, consentendo di caricare volumi di inserimento cloud in questi sistemi di archiviazione.
È consigliabile usare l'identità dell'estensione. Se la destinazione finale è l'archiviazione BLOB o ADLSgen2, vedere le istruzioni seguenti. Se la destinazione finale è OneLake, seguire le istruzioni riportate in Configurare OneLake per l'identità dell'estensione.
Sebbene non sia consigliabile, se si preferisce usare l'autenticazione basata su chiave, seguire le istruzioni riportate in Autenticazione basata su chiave.
Ottenere l'identità dell'estensione
Azure portal
- Andare al cluster connesso ad Arc.
- Selezionare Estensioni.
- Selezionare l'Archiviazione di Container Azure abilitata dall'estensione Azure Arc.
- Prendere nota dell'ID entità di sicurezza in Dettagli dell'estensione del cluster.
Configurare l'account di archiviazione BLOB per l'identità dell'estensione
Aggiungere autorizzazioni di identità dell'estensione a un account di archiviazione
- Andare all'account di archiviazione nel portale di Azure.
- Seleziona Controllo di accesso (IAM).
- Selezionare Aggiungi + -> Aggiungi assegnazione di ruolo.
- Selezionare Proprietario dati BLOB di archiviazione, seguito da Avanti.
- Selezionare + Seleziona membri.
- Per aggiungere l'ID entità di sicurezza all'elenco Membri selezionati:, incollare l'ID e selezionare + accanto all'identità.
- Fare clic su Seleziona.
- Per esaminare e assegnare le autorizzazioni, selezionare Avanti seguito da Rivedi + assegna.
Creare un'Attestazione di volume permanente (PVC) di inserimento cloud
Creare un file denominato
cloudIngestPVC.yaml
con il contenuto seguente. Modificare la rigametadata.name
e creare un nome per l'Attestazione di volume persistente. A questo nome viene fatto riferimento all'ultima riga dideploymentExample.yaml
nel passaggio successivo. Aggiornare anche il valoremetadata.namespace
con il pod che utilizza. Se non si dispone di un pod destinato all'utilizzo, il valoremetadata.namespace
èdefault
. Il parametrospec.resources.requests.storage
determina le dimensioni del volume persistente. In questo esempio è da 2 GB, ma può essere modificato per soddisfare le esigenze degli utenti:Nota
Usare solo lettere minuscole e trattini. Per altre informazioni, vedere la documentazione sulla denominazione degli oggetti 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
Per applicare
cloudIngestPVC.yaml
, eseguire:kubectl apply -f "cloudIngestPVC.yaml"
Collegare un volume secondario a un volume Edge
Per creare un volume secondario usando l'identità dell'estensione per connettersi al contenitore dell'account di archiviazione, usare il processo seguente:
Ottenere il nome del volume di Ingest Edge usando il comando seguente:
kubectl get edgevolumes
Creare un file denominato
edgeSubvolume.yaml
e copiare i seguenti contenuti. Queste variabili devono essere aggiornate con le informazioni:Nota
Usare solo lettere minuscole e trattini. Per altre informazioni, vedere la documentazione sulla denominazione degli oggetti Kubernetes.
metadata.name
: creare un nome per il volume secondario.spec.edgevolume
: questo nome è stato recuperato dal passaggio precedente usandokubectl get edgevolumes
.spec.path
: creare un nome di sottodirectory personalizzato nel percorso di montaggio. L'esempio seguente contiene già un nome di esempio (exampleSubDir
). Se si modifica questo nome di percorso, è necessario aggiornare la riga 33 indeploymentExample.yaml
con il nuovo nome del percorso. Se si sceglie di rinominare il percorso, non inserire prima una barra.spec.container
: nome del contenitore nell'account di archiviazione.spec.storageaccountendpoint
: andare all'account di archiviazione nel portale di Azure. Nella pagina Panoramica, nella parte superiore destra della schermata selezionare Vista JSON. È possibile trovare il linkstorageaccountendpoint
in properties.primaryEndpoints.blob. Copiare l'intero link, ad esempiohttps://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
Per applicare
edgeSubvolume.yaml
, eseguire:kubectl apply -f "edgeSubvolume.yaml"
Facoltativo: modificare ingestPolicy
dalle impostazioni predefinite
Se si desidera modificare
ingestPolicy
dall'impostazione predefinitaedgeingestpolicy-default
, creare un file denominatomyedgeingest-policy.yaml
con il contenuto seguente. Le variabili seguenti devono essere aggiornate con le preferenze specifiche:Nota
Usare solo lettere minuscole e trattini. Per altre informazioni, vedere la documentazione sulla denominazione degli oggetti Kubernetes.
metadata.name
: creare un nome per ingestPolicy. Questo nome deve essere aggiornato e occorre farvi riferimento nella sezionespec.ingestPolicy
deledgeSubvolume.yaml
.spec.ingest.order
: ordine in cui vengono caricati i file modificati ma non salvati. Questo è il miglior sforzo, non una garanzia (il valore predefinito è primo posto-il meno recente). Le opzioni per l'ordine sono: primo posto-il meno recente o primo posto-il più recente.spec.ingest.minDelaySec
: numero minimo di secondi prima che un file modificato ma non salvato sia idoneo per l'inserimento (il valore predefinito è 60). Questo numero può essere compreso tra 0 e 31536000.spec.eviction.order
: modalità di rimozione dei file (il valore predefinito è non ordinati). Le opzioni per l'ordine di rimozione sono: non ordinati o mai.spec.eviction.minDelaySec
: numero di secondi prima che un file pulito sia idoneo per la rimozione (il valore predefinito è 300). Questo numero può essere compreso tra 0 e 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>
Per altre informazioni su queste specifiche, vedere Impostare i criteri di inserimento.
Per applicare
myedgeingest-policy.yaml
, eseguire:kubectl apply -f "myedgeingest-policy.yaml"
Collegare l'app (applicazione nativa Kubernetes)
Per configurare un singolo pod generico (applicazione nativa Kubernetes) rispetto all'Attestazione di volume persistente (PVC), creare un file denominato
deploymentExample.yaml
con il contenuto seguente. Modificare i valoricontainers.name
evolumes.persistentVolumeClaim.claimName
. Se il nome del percorso è stato aggiornato daedgeSubvolume.yaml
, è necessario aggiornareexampleSubDir
alla riga 33 con il nuovo nome del percorso. Il parametrospec.replicas
determina il numero di pod di replica da creare. In questo esempio è 2, ma può essere modificato per soddisfare le esigenze degli utenti:Nota
Usare solo lettere minuscole e trattini. Per altre informazioni, vedere la documentazione sulla denominazione degli oggetti 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>
Per applicare
deploymentExample.yaml
, eseguire:kubectl apply -f "deploymentExample.yaml"
Usare
kubectl get pods
per trovare il nome del pod. Copiare il nome per usarlo nei passaggi successivi.Nota
Poiché
spec.replicas
dadeploymentExample.yaml
è stato specificato come2
, vengono visualizzati due pod tramitekubectl get pods
. È possibile scegliere uno dei nomi dei pod da usare per il passaggio successivo.Eseguire il comando seguente e sostituire
POD_NAME_HERE
con il valore copiato dall'ultimo passaggio:kubectl exec -it POD_NAME_HERE -- sh
Modificare le directory nel percorso di montaggio
/data
specificato daldeploymentExample.yaml
.Verrà visualizzata una directory con il nome specificato come
path
nel passaggio 2 della sezione Collegare un volume secondario a un volume Edge. Modificare le directory in/YOUR_PATH_NAME_HERE
, sostituendo il valoreYOUR_PATH_NAME_HERE
con i dettagli.Ad esempio, creare un file denominato
file1.txt
e scrivervi usandoecho "Hello World" > file1.txt
.Nel portale di Azure passare all'account di archiviazione e trovare il contenitore specificato nel passaggio 2 di Collegare un volume secondario a un volume Edge. Quando si seleziona il contenitore,
file1.txt
dovrebbe essere popolato all'interno del contenitore. Se il file non è ancora visualizzato, attendere circa 1 minuto. Volumi Edge attende un minuto prima del caricamento.
Passaggi successivi
Dopo aver completato questi passaggi, è possibile iniziare a monitorare la distribuzione usando Monitoraggio di Azure e Monitoraggio di Kubernetes o il monitoraggio di terze parti con Prometheus e Grafana.