Dela via


Konfigurera Cloud Mirror-delvolymer (förhandsversion)

Den här artikeln beskriver hur du konfigurerar Cloud Mirror-undervolymer (synkroniserar data från molnet till gränsen) i Azure Container Storage som aktiveras av Azure Arc. Konceptuellt är en Cloud Mirror-delmängd en plats som speglar data från ett molnmål till gränsen som en skrivskyddad kopia. Frekvensen styr när en speglingssynkronisering sker utan direkt användarintervention, till exempel varje timme eller en gång om dagen vid en viss tidpunkt. Med OneShot-funktionen kan en användare utföra en synkronisering just nu vid en tidpunkt som de väljer, men systemet kan utföra en engångssynkronisering, varefter det återgår till sitt normala schema enligt frekvensen.

Viktigt!

Cloud Mirror-delvolymer är för närvarande i förhandsversion. Den här funktionen rekommenderas inte för produktionsarbetsbelastningar. Kontakta vårt team om du har problem eller behöver hjälp med konfigurationen eller om du vill ge feedback.

Förutsättningar

Om din speglingsrot är placerad i bloblagring eller ADLSgen2, fortsätt att följa de förutsättningar och instruktioner som finns i den här artikeln. Om din speglingsrotplats är OneLake, följ först anvisningarna i Konfigurera OneLake Identity för moln-delvolymer.

  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 data kan speglas från dessa platser till din gränsplats.

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 ett beständigt volymanspråk för molnspegling (PVC)

För att skapa en PVC för din spegel-delvolym, följ denna process:

  1. Skapa en fil med namnet cloudMirrorPVC.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 cloudMirrorPVC.yaml kör du:

    kubectl apply -f "cloudMirrorPVC.yaml"
    

Koppla speglingsundervolume till Edge-volymen

Om du vill skapa en delvolym för Mirror använder du följande process med hjälp av tilläggsidentitet för att ansluta till lagringskontocontainern:

  1. Hämta namnet på den Edge-volym som du skapade genom att köra följande kommando:
kubectl get edgevolumes
  1. Skapa en fil med namnet mirrorSubvolume.yaml med följande innehåll:

    apiVersion: "arccontainerstorage.azure.net/v1"
    kind: MirrorSubvolume
    metadata:
      name: <create-a-subvolume-name-here>
    spec:
      edgevolume: <your-edge-volume-name-here>
      path: mirrorSubDir # Don't use a preceding slash
      authentication:
        authType: MANAGED_IDENTITY
      blobAccount:
        accountEndpoint: "https://<STORAGE ACCOUNT NAME>.blob.core.windows.net/"
        containerName: <your-blob-storage-account-container-name>
        indexTagsMode: NoIndexTags
      blobFiltering:
        blobNamePrefix:
      schedule:
        frequency: "@hourly"
        oneshot:
    

    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 mirrorSubDir.
    • spec.authentication.authType: Detta bör vara MANAGED_IDENTITY eller WORKLOAD_IDENTITY, beroende på vilken autentiseringsmekanism som valts.
    • spec.blobAccount.accountEndpoint: 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.blobAccount.containerName: Containernamnet i ditt lagringskonto.
    • spec.blobAccount.indexTagsMode: NoIndexTags eller MirrorIndexTags. MirrorIndexTags kräver behörigheterna "Storage Blob Data Owner" och när de anges översätts indextaggar till motsvarande azindex.<name> xattrs. NoIndexTags kräver endast behörigheten "Storage Blob Data Reader", och när den är ställd, lämnas index tag xattrs oinställda.
    • spec.blobFiltering.blobNamePrefix: Valfritt prefix för att filtrera blobar. Om värdet till exempel är blobNamePrefix: a speglar det bara blobar med namn som börjar med en.
    • spec.schedule.frequency: Schema för när spegling ska köras. Alternativen är: @annually, @yearly, @monthly, @weekly, @daily, @hourly, "never"eller cron-syntax (fem siffror, första är minuter (0–59), sekunden är timmar (0–23), den tredje är dagen (1–31), den fjärde är månaden (1–12), den femte är veckodagen (0–6))
    • spec.schedule.oneshot: Som standard lämnas tomt. Om en uuid när som helst har angetts här, utlöses en "omedelbar" synkronisering. Om en uuid anges vid skapandet, utför undervolymen en synkronisering vid den initiala skapelsen och därefter enligt frekvensen. Om den här parametern är tom när den skapas skapas delmängden först utan synkronisering och synkroniseras sedan enligt frekvensen. Uuids kan genereras vid uuidgenerator.net eller med sed -i "s/oneshot: .*/oneshot: $(uuidgen)/" mirrorSubvolume.yaml
  2. Om du vill använda mirrorSubvolume.yaml kör du:

    kubectl apply -f "mirrorSubvolume.yaml"
    

Bifoga din app (kubernetes-inbyggt program)

Använd följande process för att konfigurera en allmän enskild podd (kubernetes-inbyggt program) mot PVC för att använda speglingsfunktionerna:

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

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: cloudmirrorsubvol-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: mirror-deployment-container
              image: mcr.microsoft.com/azure-cli:2.57.0@sha256:c7c8a97f2dec87539983f9ded34cd40397986dcbed23ddbb5964a18edae9cd09
              command:
                - "/bin/sh"
                - "-c"
                - "while true; do ls /data/mirrorSubDir &>/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 har redigerat spec.path värdet i mirrorSubvolume.yaml måste värdet mirrorSubDir för 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 har angett i spec.pathmirrorSubvolume.yaml. Om du använde standardvärdet är dess namn mirrorSubDir. Ändra till den underkatalogen och sök efter innehåll som speglas där:

    cd mirrorSubDir
    ls
    

Om du angav en uuid i spec.schedule.oneshot-fältet när du skapade och/eller de angivna spec.schedule.frequency-kraven är uppfyllda, bör subvolymen utföra en synkronisering vid första skapandet, och du bör se data här speglade från din angivna lagringskontots container. Om något av dessa villkor inte uppfylldes bör den här katalogen vara tom.

Kontrollera statusen för cloud mirror-undervolumesynkronisering

Kontrollera först statusen för mirrorSubvolume. Kontrollera sedan att du har data i lagringskontocontainern i Azure. Kontrollera slutligen innehållet i speglingsundervolume igen för att säkerställa att data speglades korrekt.

Kontrollera status för speglingsundervolume

Kontrollera statusen för din speglingsundervolym, och säkerställ särskilt att fältet BACKENDCONNECTION är Anslutet:

kubectl get mirrorsubvolumes

Lägga till data i lagringskontocontainern

Om du inte redan har data i den angivna containern använder du någon av följande metoder för att ladda upp filer:

Lägg till eller flytta filer till containern för bloblagringskontot så att de kan speglas i edge-klustret.

Utlösa speglingssynkroniseringen

  1. Uppdatera fältet i filen spec.schedule.oneshot till en ny uuid för att se till att de nya data speglas från molnet till delmängden. Uuids kan genereras på uuidgenerator.net eller med följande kommando:

    sed -i "s/oneshot: .*/oneshot: $(uuidgen)/" mirrorSubvolume.yaml
    
  2. Om du vill tillämpa ändringen och utlösa oneshot-synkroniseringen kör du:

    kubectl apply -f "mirrorSubvolume.yaml"
    

Kontrollera speglingsundervolume igen

  1. Kontrollera statusen för vår speglingsdelvolym på nytt för att se till att fältet BACKENDCONNECTION fortfarande är Anslutet:

    kubectl get mirrorsubvolumes
    
  2. När det är klart kan vi kontrollera innehållet i vår Mirror-undervolym. Du kan göra det genom att ansluta till exempelpodden som vi skapade genom att köra:

    kubectl exec -it <name-of-pod> -- sh
    

    Nu bör du se filerna från ditt Molnlagringskonto speglade i den här delmängden.

Nästa steg