Dela via


Konfigurera Cloud Ingest-delvolymer

Den här artikeln beskriver hur du konfigurerar molninmatningsundervolym (blobuppladdning med lokal rensning) i Azure Container Storage som aktiveras av Azure Arc. En molninmatningsundervolym möjliggör obegränsad datainmatning från edge till blob, inklusive ADLSgen2. Filer som skrivs till den här lagringstypen överförs sömlöst till bloblagring och när de har bekräftats som uppladdade rensas de sedan lokalt. Den här borttagningen säkerställer utrymmestillgänglighet för nya data. Dessutom stöder det här lagringsalternativet dataintegritet i frånkopplade miljöer, vilket möjliggör lokal lagring och synkronisering vid återanslutning till nätverket.

Du kan till exempel skriva en fil till ditt moln för att mata in beständigt volymanspråk (PVC) och en process kör en genomsökning för att söka efter nya filer varje minut. När filen har identifierats skickas den för uppladdning till din angivna blob-destination. Efter bekräftelse av en lyckad uppladdning väntar Cloud Ingest-delmängden i fem minuter och tar sedan bort den lokala versionen av filen.

Förutsättningar

Om slutmålet är bloblagring eller ADLSgen2 fortsätter du att följa kraven och instruktionerna i den här artikeln. Om din slutdestination är OneLake följer du först anvisningarna i Konfigurera OneLake-identitet för molndelvolymer.

  1. Skapa ett lagringskonto enligt anvisningarna i Skapa ett Azure-lagringskonto.

    Anmärkning

    När du skapar ditt lagringskonto rekommenderar vi att du skapar det under samma resursgrupp och region/plats som ditt Kubernetes-kluster.

  2. Skapa en container i lagringskontot som du skapade tidigare, enligt anvisningarna i Snabbstart: Ladda upp, ladda ned och lista blobar med Azure-portalen > Skapa en container.

Konfigurera tilläggsidentitet

Edge-volymer tillåter användning av en systemtilldelad tilläggsidentitet för åtkomst till bloblagring. I det här avsnittet beskrivs hur du använder den systemtilldelade tilläggsidentiteten för att bevilja åtkomst till ditt lagringskonto, så att du kan ladda upp Cloud Ingest-delvolymer till dessa lagringssystem.

Om du vill använda arbetsbelastningsidentitet med Azure Container Storage Aktiverat av Azure Arc följer du anvisningarna i Konfigurera arbetsbelastningsidentitet för molnundervolymer.

Azure-portalen

  1. Gå till det Arc-aktiverade klustret.
  2. Välj Tillägg.
  3. Välj din Azure Container Storage genom Azure Arc-tillägget.
  4. Observera princip-ID:t i Information om klustertillägg.

Konfigurera bloblagringskonto för tilläggsidentitet

Lägga till behörigheter för tilläggsidentitet till ett lagringskonto

  1. Gå till lagringskontot i Azure-portalen.
  2. Välj Access Control (IAM).
  3. Välj Lägg till+ –> Lägg till rolltilldelning.
  4. Välj Lagringsblobdataägare och välj sedan Nästa.
  5. Välj +Välj medlemmar.
  6. Om du vill lägga till ditt huvudnamns-ID i listan Valda medlemmar: klistrar du in ID:t och väljer + bredvid identiteten.
  7. Klicka på Välj.
  8. Om du vill granska och tilldela behörigheter väljer du Nästa och sedan Granska + Tilldela.

Skapa en Cloud Ingest Persistent Volume Claim (PVC)

Använd följande process för att skapa en PVC för din Ingest-undervolym:

  1. Skapa en fil med namnet cloudIngestPVC.yaml med följande innehåll:

    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
    

    Anmärkning

    Använd endast gemena bokstäver och bindestreck. Mer information finns i dokumentationen om namngivning av Kubernetes-objekt.

    • Redigera värdet metadata.name och skapa ett namn för din PVC. Det här namnet refereras till på den sista raden i deploymentExample.yaml i nästa steg.
    • Redigera värdet metadata.namespace för din avsedda konsumtionspodd. Om du inte har en avsedd förbrukningspodd anger du dess värde till default.
    • Parametern spec.resources.requests.storage avgör storleken på den beständiga volymen. Det är 2 GB i det här exemplet, men kan ändras så att det passar dina behov.
  2. Om du vill tillämpa cloudIngestPVC.yaml kör du:

    kubectl apply -f "cloudIngestPVC.yaml"
    

Koppla inmatningsundervolume till Edge-volym

För att skapa en subvolym för Ingest, och använda tilläggsidentitet autentisering för att ansluta till din lagringskontots container, följ denna process:

  1. Hämta namnet på den Edge-volym som du skapade genom att köra följande kommando:

    kubectl get edgevolumes
    
  2. Skapa en fil med namnet ingestSubvolume.yaml med följande innehåll:

    apiVersion: "arccontainerstorage.azure.net/v1"
    kind: IngestSubvolume
    metadata:
      name: <create-a-subvolume-name-here>
    spec:
      edgevolume: <your-edge-volume-name-here>
      path: ingestSubDir # Don't use a preceding slash
      authentication:
        authType: MANAGED_IDENTITY
      storageAccountEndpoint: "https://<STORAGE ACCOUNT NAME>.blob.core.windows.net/"
      containerName: <your-blob-storage-account-container-name>
      ingest:
        order: newest-first
        minDelaySec: 60
      eviction:
        order: unordered
        minDelaySec: 120
      onDelete: trigger-immediate-ingest
    

    Anmärkning

    Använd endast gemena bokstäver och bindestreck. Mer information finns i dokumentationen om namngivning av Kubernetes-objekt.

    • metadata.name: Skapa ett namn för delvolymen.
    • spec.edgevolume: Det här namnet hämtades från föregående steg.
    • spec.path: Skapa ett eget underkatalognamn under monteringsvägen. Standardnamnet är ingestSubDir.
    • spec.authentication.authType: Detta bör vara MANAGED_IDENTITY eller WORKLOAD_IDENTITY, beroende på vilken autentiseringsmekanism som valts.
    • spec.storageAccountEndpoint: Gå till ditt lagringskonto i Azure-portalen. På sidan Översikt väljer du JSON-vy längst upp till höger på skärmen. Du hittar länken under properties.primaryEndpoints.blob. Kopiera hela länken.
    • spec.containerName: Containernamnet i ditt lagringskonto.

    Följande variabler har rimliga standardvärden, men kan ändras:

    • spec.ingest.order: I vilken ordning smutsiga filer laddas upp. Detta är en bästa insats, inte en garanti. Alternativ för beställning är: oldest-first eller newest-first.
    • spec.ingest.minDelaySec: Det minsta antalet sekunder innan en smutsig fil är berättigad till inmatning. Det här talet kan variera mellan 0 och 31536000 (ett år i sekunder).
    • spec.eviction.order: Hur filer tas bort när de har laddats upp till molnet. Alternativ för borttagningsordning är: unordered eller never.
    • spec.eviction.minDelaySec: Antalet sekunder innan en ren fil är berättigad till borttagning. Det här talet kan variera mellan 0 och 31536000 (ett år i sekunder).
    • spec.onDelete: Den åtgärd som ska vidtas för denna IngestSubVolume om/när den begärs att tas bort. Alternativ är trigger-immediate-ingest som omedelbart markerar alla filer som giltiga för inmatning och försöker mata in dem, eller abandon som kommer att lämna all data i det här inmatningsunderblocket och ta bort underblocket.

    Anmärkning

    Om du väljer att överge för ditt spec.onDelete värde går alla felaktiga data i delmängden förlorade. Var försiktig och uppmärksam innan du väljer detta som ett alternativ.

  3. Om du vill tillämpa ingestSubvolume.yaml kör du:

    kubectl apply -f "ingestSubvolume.yaml"
    

Bifoga din app (kubernetes-inbyggt program)

För att konfigurera en generell pod (Kubernetes-inbyggt program) mot PVC för att använda ingest-funktionerna, följ dessa steg:

  1. Skapa en fil med namnet deploymentExample.yaml med följande innehåll:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: cloudingestsubvol-deployment ### This must be unique for each deployment you choose to create.
    spec:
      replicas: 2
      selector:
        matchLabels:
          name: acsa-testclientdeployment
      template:
        metadata:
          name: acsa-testclientdeployment
          labels:
            name: acsa-testclientdeployment
        spec:
          affinity:
            podAntiAffinity:
              requiredDuringSchedulingIgnoredDuringExecution:
              - labelSelector:
                  matchExpressions:
                  - key: app
                    operator: In
                    values:
                    - acsa-testclientdeployment
                topologyKey: kubernetes.io/hostname
          containers:
            ### Specify the container in which to launch the busy box. ###
            - name: ingest-deployment-container
              image: mcr.microsoft.com/azure-cli:2.57.0@sha256:c7c8a97f2dec87539983f9ded34cd40397986dcbed23ddbb5964a18edae9cd09
              command:
                - "/bin/sh"
                - "-c"
                - "dd if=/dev/urandom of=/data/ingestSubDir/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: acsa-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: acsa-volume
              persistentVolumeClaim:
                ### This claimName must refer to your PVC metadata.name (Line 5)
                claimName: <your-pvc-metadata-name-from-line-5-of-pvc-yaml>
    

    Anmärkning

    Använd endast gemena bokstäver och bindestreck. Mer information finns i dokumentationen om namngivning av Kubernetes-objekt.

    • Redigera containers.name och volumes.persistentVolumeClaim.claimName värdena.
    • Om du redigerade spec.path värdet i edgeSubvolume.yaml måste värdet ingestSubDir i den här filen uppdateras med det nya sökvägsnamnet.
    • Parametern spec.replicas avgör hur många replikpoddar som ska skapas. Det är 2 i det här exemplet, men kan ändras för att passa dina behov.
  2. Om du vill använda deploymentExample.yaml och skapa podden kör du:

    kubectl apply -f "deploymentExample.yaml"
    
  3. Leta reda på namnet på din podd som ska användas i nästa steg:

    kubectl get pods
    

    Anmärkning

    Eftersom spec.replicas från deploymentExample.yaml angavs med 2 skapas två poddar. Du kan använda endera poddnamnet för nästa steg.

  4. Kör följande kommando för att starta exec i podden. Ersätt <name-of-pod> med poddnamnet från föregående steg:

    kubectl exec -it <name-of-pod> -- sh
    
  5. Ändra kataloger till monteringssökvägen /data enligt vad som anges i din distributionExample.yaml-fil :

    cd /data
    
  6. Du bör se en katalog som matchar det värde som du angav för spec.pathingestSubvolume.yaml. Om du använde standardvärdena är dess namn ingestSubDir. Ändra till den underkatalogen:

    cd ingestSubDir
    
  7. Skapa till exempel en fil med namnet file1.txt och skriv till den:

    echo "Hello World" > file1.txt
    

    Den här filen laddas upp till containern i ditt bloblagringskonto och rensas sedan lokalt efter fem minuter.

  8. I Azure-portalen går du till ditt lagringskonto och letar reda på containern som matchar det värde som du angav för spec.containerNamei ingestSubvolume.yaml. Du bör hitta file1.txt ifylld i containern. Om filen inte finns där ännu väntar du cirka 1 minut. Edge-volymer väntar en minut innan de laddas upp.

Nästa steg