Delen via


Configuratie van Edge-volumes opnemen in de cloud

In dit artikel wordt de configuratie voor Cloud Ingest Edge Volumes (blob-upload met lokale opschoning) beschreven.

Wat is Cloud Ingest Edge Volumes?

Cloud Ingest Edge Volumes faciliteert onbeperkte gegevensopname van edge naar blob, waaronder ADLSgen2. Bestanden die naar dit opslagtype worden geschreven, worden naadloos overgebracht naar blobopslag en zodra bevestigd dat ze zijn geüpload, worden ze lokaal verwijderd. Deze verwijdering zorgt voor beschikbaarheid van ruimte voor nieuwe gegevens. Bovendien ondersteunt deze opslagoptie gegevensintegriteit in niet-verbonden omgevingen, waardoor lokale opslag en synchronisatie mogelijk is bij opnieuw verbinding met het netwerk.

U kunt bijvoorbeeld een bestand schrijven naar uw cloudopname PVC en een proces voert een scan uit om elke minuut op nieuwe bestanden te controleren. Zodra het is geïdentificeerd, wordt het bestand verzonden voor uploaden naar uw aangewezen blobbestemming. Na bevestiging van een geslaagde upload wacht Cloud Ingest Edge Volume vijf minuten en verwijdert u vervolgens de lokale versie van uw bestand.

Vereisten

  1. Maak hier een opslagaccount volgens de instructies.

    Notitie

    Wanneer u uw opslagaccount maakt, wordt u aangeraden het account te maken onder dezelfde resourcegroep en regio/locatie als uw Kubernetes-cluster.

  2. Maak een container in het opslagaccount dat u eerder hebt gemaakt. Volg hier de instructies.

Extensie-identiteit configureren

Met Edge-volumes kan een door het systeem toegewezen extensie-identiteit worden gebruikt voor toegang tot blobopslag. In deze sectie wordt beschreven hoe u de door het systeem toegewezen extensie-identiteit gebruikt om toegang te verlenen tot uw opslagaccount, zodat u cloudopnamevolumes naar deze opslagsystemen kunt uploaden.

Het is raadzaam om extensie-identiteit te gebruiken. Als uw uiteindelijke bestemming blobopslag of ADLSgen2 is, raadpleegt u de volgende instructies. Als uw uiteindelijke bestemming OneLake is, volgt u de instructies in OneLake configureren voor extensie-identiteit.

Hoewel dit niet wordt aanbevolen, volgt u de instructies in verificatie op basis van sleutels als u liever gebruikmaakt van verificatie op basis van sleutels.

Extensie-identiteit verkrijgen

Azure Portal

  1. Navigeer naar uw cluster dat is verbonden met Arc.
  2. Selecteer Extensies.
  3. Selecteer uw Azure Container Storage-extensie die is ingeschakeld door de Azure Arc-extensie.
  4. Noteer de principal-id onder Details van clusterextensie.

Blob Storage-account configureren voor extensie-id

Machtigingen voor extensie-identiteit toevoegen aan een opslagaccount

  1. Navigeer naar het opslagaccount in Azure Portal.
  2. Selecteer Access Control (IAM).
  3. Selecteer Toevoegen+ -> Roltoewijzing toevoegen.
  4. Selecteer Eigenaar van opslagblobgegevens en selecteer vervolgens Volgende.
  5. Selecteer +Leden selecteren.
  6. Als u uw principal-id wilt toevoegen aan de lijst Geselecteerde leden, plakt u de id en selecteert u + naast de identiteit.
  7. Klik op Selecteren.
  8. Als u machtigingen wilt controleren en toewijzen, selecteert u Volgende en selecteert u Beoordelen en toewijzen.

Een permanente volumeclaim (PVC) voor cloudopname maken

  1. Maak een bestand met de naam cloudIngestPVC.yaml met de volgende inhoud. Bewerk de metadata.name regel en maak een naam voor uw permanente volumeclaim. Naar deze naam wordt verwezen op de laatste regel van deploymentExample.yaml de volgende stap. Werk ook de metadata.namespace waarde bij met de beoogde verbruikspod. Als u geen beoogde pod hebt, is defaultde metadata.namespace waarde . De spec.resources.requests.storage parameter bepaalt de grootte van het permanente volume. In dit voorbeeld is het 2 GB, maar kan worden aangepast aan uw behoeften:

    Notitie

    Gebruik alleen kleine letters en streepjes. Zie de documentatie voor de naamgeving van Kubernetes-objecten voor meer informatie.

    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. Voer het volgende uit om toe te passen cloudIngestPVC.yaml:

    kubectl apply -f "cloudIngestPVC.yaml"
    

Subvolume koppelen aan Edge-volume

Als u een subvolume wilt maken met behulp van extensie-id om verbinding te maken met uw opslagaccountcontainer, gebruikt u het volgende proces:

  1. Haal de naam van uw Edge-volume opnemen op met behulp van de volgende opdracht:

    kubectl get edgevolumes
    
  2. Maak een bestand met de naam edgeSubvolume.yaml en kopieer de volgende inhoud. Deze variabelen moeten worden bijgewerkt met uw gegevens:

    Notitie

    Gebruik alleen kleine letters en streepjes. Zie de documentatie voor de naamgeving van Kubernetes-objecten voor meer informatie.

    • metadata.name: Maak een naam voor uw subvolume.
    • spec.edgevolume: Deze naam is opgehaald uit de vorige stap met behulp van kubectl get edgevolumes.
    • spec.path: Maak uw eigen submapnaam onder het koppelingspad. Het volgende voorbeeld bevat al een voorbeeldnaam (exampleSubDir). Als u deze padnaam wijzigt, moet regel 33 deploymentExample.yaml worden bijgewerkt met de nieuwe padnaam. Als u ervoor kiest om de naam van het pad te wijzigen, gebruikt u geen voorgaande slash.
    • spec.container: de containernaam in uw opslagaccount.
    • spec.storageaccountendpoint: Navigeer naar uw opslagaccount in Azure Portal. Selecteer op de pagina Overzicht, rechtsboven in het scherm, de JSON-weergave. U vindt de storageaccountendpoint koppeling onder properties.primaryEndpoints.blob. Kopieer de volledige koppeling; bijvoorbeeld 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. Voer het volgende uit om toe te passen edgeSubvolume.yaml:

    kubectl apply -f "edgeSubvolume.yaml"
    

Optioneel: de standaardinstelling wijzigen ingestPolicy

  1. Als u de ingestPolicy standaardinstelling edgeingestpolicy-defaultwilt wijzigen, maakt u een bestand met de naam myedgeingest-policy.yaml met de volgende inhoud. De volgende variabelen moeten worden bijgewerkt met uw voorkeuren:

    Notitie

    Gebruik alleen kleine letters en streepjes. Zie de documentatie voor de naamgeving van Kubernetes-objecten voor meer informatie.

    • metadata.name: Maak een naam voor uw ingestPolicy. Deze naam moet worden bijgewerkt en waarnaar wordt verwezen in de spec.ingestPolicy sectie van uw edgeSubvolume.yaml.
    • spec.ingest.order: De volgorde waarin vuile bestanden worden geüpload. Dit is het beste werk, geen garantie (standaard ingesteld op oudste). De volgordeopties zijn: oudste of nieuwste.
    • spec.ingest.minDelaySec: Het minimum aantal seconden voordat een vies bestand in aanmerking komt voor opname (standaard ingesteld op 60). Dit getal kan variëren tussen 0 en 31536000.
    • spec.eviction.order: Hoe bestanden worden verwijderd (standaard niet-gerangschikt). Opties voor verwijderingsvolgorde zijn: ongeordeerd of nooit.
    • spec.eviction.minDelaySec: Het aantal seconden voordat een schoon bestand in aanmerking komt voor verwijdering (standaard ingesteld op 300). Dit getal kan variëren tussen 0 en 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>
    

    Zie Opnamebeleid instellen voor meer informatie over deze specificaties.

  2. Voer het volgende uit om toe te passen myedgeingest-policy.yaml:

    kubectl apply -f "myedgeingest-policy.yaml"
    

Uw app koppelen (systeemeigen Kubernetes-toepassing)

  1. Als u een algemene enkele pod (Kubernetes native toepassing) wilt configureren voor de persistente volumeclaim (PVC), maakt u een bestand met de naam deploymentExample.yaml met de volgende inhoud. Wijzig de containers.name en volumes.persistentVolumeClaim.claimName waarden. Als u de padnaam hebt bijgewerkt, edgeSubvolume.yamlexampleSubDir moet regel 33 worden bijgewerkt met de naam van het nieuwe pad. De spec.replicas parameter bepaalt het aantal replicapods dat moet worden gemaakt. Het is 2 in dit voorbeeld, maar kan worden aangepast aan uw behoeften:

    Notitie

    Gebruik alleen kleine letters en streepjes. Zie de documentatie voor de naamgeving van Kubernetes-objecten voor meer informatie.

    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. Voer het volgende uit om toe te passen deploymentExample.yaml:

    kubectl apply -f "deploymentExample.yaml"
    
  3. Gebruik kubectl get pods dit om de naam van uw pod te vinden. Kopieer deze naam voor gebruik in de volgende stap.

    Notitie

    Omdat spec.replicas van deploymentExample.yaml is opgegeven als 2, worden twee pods weergegeven met behulp van kubectl get pods. U kunt kiezen welke podnaam u wilt gebruiken voor de volgende stap.

  4. Voer de volgende opdracht uit en vervang deze door POD_NAME_HERE de gekopieerde waarde uit de laatste stap:

    kubectl exec -it POD_NAME_HERE -- sh
    
  5. Wijzig mappen in het /data koppelpad zoals opgegeven vanuit uw deploymentExample.yaml.

  6. Als het goed is, ziet u een map met de naam die u hebt opgegeven in path stap 2 van de sectie Subvolume koppelen aan edge-volume . Wijzig mappen in /YOUR_PATH_NAME_HERE, waarbij u de YOUR_PATH_NAME_HERE waarde vervangt door uw gegevens.

  7. Maak bijvoorbeeld een bestand met de naam file1.txt en schrijf ernaar met behulp van echo "Hello World" > file1.txt.

  8. Navigeer in Azure Portal naar uw opslagaccount en zoek de container die is opgegeven in stap 2 van subvolume koppelen aan Edge-volume. Wanneer u de container selecteert, wordt file1.txt deze ingevuld in de container. Als het bestand nog niet is weergegeven, wacht u ongeveer 1 minuut. Edge-volumes wachten een minuut voordat ze worden geüpload.

Volgende stappen

Nadat u deze stappen hebt voltooid, kunt u beginnen met het bewaken van uw implementatie met behulp van Azure Monitor en Kubernetes Monitoring of bewaking van derden met Prometheus en Grafana.

Uw implementatie bewaken