Condividi tramite


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

  1. 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.

  2. 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

  1. Andare al cluster connesso ad Arc.
  2. Selezionare Estensioni.
  3. Selezionare l'Archiviazione di Container Azure abilitata dall'estensione Azure Arc.
  4. 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

  1. Andare all'account di archiviazione nel portale di Azure.
  2. Seleziona Controllo di accesso (IAM).
  3. Selezionare Aggiungi + -> Aggiungi assegnazione di ruolo.
  4. Selezionare Proprietario dati BLOB di archiviazione, seguito da Avanti.
  5. Selezionare + Seleziona membri.
  6. Per aggiungere l'ID entità di sicurezza all'elenco Membri selezionati:, incollare l'ID e selezionare + accanto all'identità.
  7. Fare clic su Seleziona.
  8. Per esaminare e assegnare le autorizzazioni, selezionare Avanti seguito da Rivedi + assegna.

Creare un'Attestazione di volume permanente (PVC) di inserimento cloud

  1. Creare un file denominato cloudIngestPVC.yaml con il contenuto seguente. Modificare la riga metadata.name e creare un nome per l'Attestazione di volume persistente. A questo nome viene fatto riferimento all'ultima riga di deploymentExample.yaml nel passaggio successivo. Aggiornare anche il valore metadata.namespace con il pod che utilizza. Se non si dispone di un pod destinato all'utilizzo, il valore metadata.namespace è default. Il parametro spec.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
    
  2. 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:

  1. Ottenere il nome del volume di Ingest Edge usando il comando seguente:

    kubectl get edgevolumes
    
  2. 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 usando kubectl 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 in deploymentExample.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 link storageaccountendpoint in properties.primaryEndpoints.blob. Copiare l'intero link, ad esempio 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. Per applicare edgeSubvolume.yaml, eseguire:

    kubectl apply -f "edgeSubvolume.yaml"
    

Facoltativo: modificare ingestPolicy dalle impostazioni predefinite

  1. Se si desidera modificare ingestPolicy dall'impostazione predefinita edgeingestpolicy-default, creare un file denominato myedgeingest-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 sezione spec.ingestPolicy del edgeSubvolume.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.

  2. Per applicare myedgeingest-policy.yaml, eseguire:

    kubectl apply -f "myedgeingest-policy.yaml"
    

Collegare l'app (applicazione nativa Kubernetes)

  1. 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 valori containers.name e volumes.persistentVolumeClaim.claimName. Se il nome del percorso è stato aggiornato da edgeSubvolume.yaml, è necessario aggiornare exampleSubDir alla riga 33 con il nuovo nome del percorso. Il parametro spec.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>
    
  2. Per applicare deploymentExample.yaml, eseguire:

    kubectl apply -f "deploymentExample.yaml"
    
  3. Usare kubectl get pods per trovare il nome del pod. Copiare il nome per usarlo nei passaggi successivi.

    Nota

    Poiché spec.replicas da deploymentExample.yaml è stato specificato come 2, vengono visualizzati due pod tramite kubectl get pods. È possibile scegliere uno dei nomi dei pod da usare per il passaggio successivo.

  4. Eseguire il comando seguente e sostituire POD_NAME_HERE con il valore copiato dall'ultimo passaggio:

    kubectl exec -it POD_NAME_HERE -- sh
    
  5. Modificare le directory nel percorso di montaggio /data specificato dal deploymentExample.yaml.

  6. 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 valore YOUR_PATH_NAME_HERE con i dettagli.

  7. Ad esempio, creare un file denominato file1.txt e scrivervi usando echo "Hello World" > file1.txt.

  8. 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.

Monitorare la distribuzione