Freigeben über


Konfiguration von Edgevolumes für die Clouderfassung

In diesem Artikel wird die Konfiguration für Edgevolumes für die Clouderfassung (Blobupload mit lokaler Bereinigung) beschrieben.

Was sind Edgevolumes für die Clouderfassung?

Edgevolumes für die Clouderfassung ermöglichst eine unbegrenzte Datenerfassung von Edge zu Blob, einschließlich ADLSgen2. Dateien, die in diesen Speichertyp geschrieben wurden, werden nahtlos in Blobspeicher übertragen und nach der Bestätigung des Uploads lokal gelöscht. Durch diese Entfernung wird die Speicherplatzverfügbarkeit für neue Daten sichergestellt. Darüber hinaus unterstützt diese Speicheroption die Datenintegrität in getrennten Umgebungen, wodurch beim erneuten Herstellen der Verbindung mit dem Netzwerk lokale Speicher und Synchronisierung aktiviert werden.

Sie können z. B. eine Datei in Ihre Clouderfassungs-PVC schreiben, und ein Prozess führt eine Überprüfung durch, um jede Minute nach neuen Dateien zu suchen. Nach der Identifizierung wird die Datei zum Hochladen in Ihr angegebenes Blobziel gesendet. Nach der Bestätigung eines erfolgreichen Uploads warten Edgevolumes für die Clouderfassung fünf Minuten und löscht dann die lokale Version Ihrer Datei.

Voraussetzungen

  1. Erstellen Sie ein Speicherkontos, indem Sie den Anweisungen hier folgen.

    Hinweis

    Wenn Sie Ihr Speicherkonto erstellen, sollten Sie es unter derselben Ressourcengruppe und in derselben Region bzw. am selben Standort wie Ihr Kubernetes-Cluster erstellen.

  2. Erstellen Sie einen Container in dem Speicherkonto, das Sie im zuvor erstellt haben, indem Sie den Anweisungen hier folgen.

Konfigurieren der Erweiterungsidentität

Edgevolumes ermöglichen die Verwendung einer systemseitig zugewiesenen Erweiterungsidentität für den Zugriff auf Blobspeicher. In diesem Abschnitt wird beschrieben, wie Sie systemseitig zugewiesene Erweiterungsidentität verwenden, um Zugriff auf Ihr Speicherkonto zu gewähren, sodass Sie Volumes aus der Cloud auf diese Speichersysteme hochladen können.

Es wird empfohlen, die Erweiterungsidentität zu verwenden. Wenn Ihr endgültiges Ziel ein Blobspeicher oder ADLSgen2 ist, lesen Sie die folgenden Anweisungen. Wenn Ihr endgültiges Ziel OneLake ist, befolgen Sie die Anweisungen unter Konfigurieren von OneLake für die Erweiterungsidentität.

Es wird zwar nicht empfohlen, aber wenn Sie die schlüsselbasierte Authentifizierung verwenden möchten, befolgen Sie die Anweisungen unter Schlüsselbasierte Authentifizierung.

Abrufen der Erweiterungsidentität

Azure-Portal

  1. Navigieren Sie zu Ihrem mit Arc verbundenen Cluster.
  2. Wählen Sie Erweiterungen.
  3. Wählen Sie Ihre Erweiterung für Azure Container Storage, aktiviert durch Azure Arc, aus.
  4. Beachten Sie die Prinzipal-ID unter Clustererweiterungsdetails.

Konfigurieren des Blobspeicherkontos für die Erweiterungsidentität

Hinzufügen von Erweiterungsidentitätsberechtigungen zu einem Speicherkonto

  1. Navigieren Sie zum Speicherkonto im Azure-Portal.
  2. Wählen Sie Zugriffssteuerung (IAM).
  3. Wählen Sie Hinzufügen+ –> Rollenzuweisung hinzufügen aus.
  4. Wählen Sie Besitzer von Speicherblobdaten und dann Weiter aus.
  5. Wählen Sie + Mitglieder auswählen aus.
  6. Zum Hinzufügen Ihrer Prinzipal-ID zu der Liste Ausgewählte Mitgliedern: fügen Sie die ID ein, und wählen Sie + neben der Identität aus.
  7. Klicken Sie auf Auswählen.
  8. Um Berechtigungen zu überprüfen und zuzuweisen, wählen Sie Weiter und dann Überprüfen und Zuweisen aus.

Erstellen eines persistenten Volumenanspruchs (Persistent Volume Claim, PVC) für die Clouderfassung

  1. Erstellen Sie eine Datei namens cloudIngestPVC.yaml mit folgendem Inhalt. Bearbeiten Sie die metadata.name-Zeile, und erstellen Sie einen Namen für Ihren persistenten Volumenanspruch. Auf diesen Namen wird in der letzten Zeile von deploymentExample.yaml im nächsten Schritts verwiesen. Aktualisieren Sie außerdem den metadata.namespace-Wert mit Ihrem beabsichtigten verbrauchenden Pod. Wenn Sie nicht über einen beabsichtigten, verbrauchenden Pod verfügen, hat metadata.namespace den Wert default. Der Parameter spec.resources.requests.storage bestimmt die Größe des persistenten Volumes. In diesem Beispiel beträgt die Größe 2 GB, sie kann jedoch an Ihre Anforderungen angepasst werden:

    Hinweis

    Verwenden Sie nur Kleinbuchstaben und Bindestriche. Weitere Informationen finden Sie in der Dokumentation zur Benennung von Kubernetes-Objekten.

    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. Führen Sie zum Anwenden von cloudIngestPVC.yaml Folgendes aus:

    kubectl apply -f "cloudIngestPVC.yaml"
    

Anfügen eines Untervolumes an ein Edgevolume

Verwenden Sie den folgenden Prozess, um ein Untervolume mithilfe der Erweiterungsidentität zum Herstellen einer Verbindung mit Ihrem Speicherkontocontainer zu erstellen:

  1. Rufen Sie den Namen Ihres Edgevolumes für die Erfassung mit dem folgenden Befehl ab:

    kubectl get edgevolumes
    
  2. Erstellen Sie eine Datei namens edgeSubvolume.yaml, und kopieren Sie den folgenden Inhalt. Diese Variablen müssen mit Ihren Informationen aktualisiert werden:

    Hinweis

    Verwenden Sie nur Kleinbuchstaben und Bindestriche. Weitere Informationen finden Sie in der Dokumentation zur Benennung von Kubernetes-Objekten.

    • metadata.name: Legen Sie einen Namen für Ihr Untervolume fest.
    • spec.edgevolume: Dieser Name wurde im vorherigen Schritt mit kubectl get edgevolumes abgerufen.
    • spec.path: Erstellen Sie einen eigenen Unterverzeichnisnamen unter dem Bereitstellungspfad. Das folgende Beispiel enthält bereits einen Beispielnamen (exampleSubDir). Wenn Sie diesen Pfadnamen ändern, muss deploymentExample.yaml in Zeile 33 mit dem neuen Pfadnamen aktualisiert werden. Wenn Sie den Pfad umbenennen möchten, verwenden Sie keinen vorangestellten Schrägstrich.
    • spec.container: Der Containername in Ihrem Speicherkonto.
    • spec.storageaccountendpoint: Navigieren Sie im Azure-Portal zu Ihrem Speicherkonto. Wählen Sie auf der Seite Übersicht rechts oben auf dem Bildschirm JSON-Ansicht aus. Sie finden den storageaccountendpoint-Link unter properties.primaryEndpoints.blob. Kopieren Sie den gesamten Link (z. B. 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. Führen Sie zum Anwenden von edgeSubvolume.yaml Folgendes aus:

    kubectl apply -f "edgeSubvolume.yaml"
    

Optional: Ändern Sie den Standardwert von ingestPolicy.

  1. Wenn Sie für ingestPolicy den Standardwert edgeingestpolicy-default ändern möchten, erstellen Sie eine Datei namens myedgeingest-policy.yaml mit folgendem Inhalt. Die folgenden Variablen müssen mit Ihren Einstellungen aktualisiert werden:

    Hinweis

    Verwenden Sie nur Kleinbuchstaben und Bindestriche. Weitere Informationen finden Sie in der Dokumentation zur Benennung von Kubernetes-Objekten.

    • metadata.name: Legen Sie einen Namen für Ihre ingestPolicy fest. Dieser Name muss im Abschnitt spec.ingestPolicy Ihrer Datei edgeSubvolume.yaml aktualisiert und referenziert werden.
    • spec.ingest.order: Reihenfolge, in der geänderte Dateien hochgeladen werden. Dies ist ein Versuch, keine Garantie (Standardwert oldest-first). Optionen für die Reihenfolge: oldest-first oder newest-first.
    • spec.ingest.minDelaySec: Mindestanzahl von Sekunden, bevor eine geänderte Datei erfasst werden kann (Standardwert 60). Diese Zahl kann zwischen 0 und 31.536.000 liegen.
    • spec.eviction.order: Reihenfolge für die Dateibereinigung (Standardwert unordered). Optionen für die Bereinigungsreihenfolge: unordered oder never.
    • spec.eviction.minDelaySec: Anzahl der Sekunden, bevor eine abgeglichene Datei bereinigt werden darf (Standardwert 300). Diese Zahl kann zwischen 0 und 31.536.000 liegen.
    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>
    

    Weitere Informationen zu diesen Spezifikationen finden Sie unter Festlegen der Erfassungsrichtlinie.

  2. Führen Sie zum Anwenden von myedgeingest-policy.yaml Folgendes aus:

    kubectl apply -f "myedgeingest-policy.yaml"
    

Anfügen Ihrer App (native Kubernetes-Anwendung)

  1. Erstellen Sie zum Konfigurieren eines generischen einzelnen Pods (native Kubernetes-Anwendung) für den persistenten Volumeanspruch (PVC) eine Datei mit dem Namen deploymentExample.yaml und folgendem Inhalt. Ändern Sie die Werte containers.name und volumes.persistentVolumeClaim.claimName. Wenn Sie den Pfadnamen von edgeSubvolume.yaml geändert haben, müssen Sie exampleSubDir in Zeile 33 mit dem neuen Pfadnamen aktualisieren. Der Parameter spec.replicas bestimmt die Anzahl der zu erstellenden Replikatpods. In diesem Beispiel ist die Anzahl 2, sie kann jedoch an Ihre Anforderungen angepasst werden:

    Hinweis

    Verwenden Sie nur Kleinbuchstaben und Bindestriche. Weitere Informationen finden Sie in der Dokumentation zur Benennung von Kubernetes-Objekten.

    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. Führen Sie zum Anwenden von deploymentExample.yaml Folgendes aus:

    kubectl apply -f "deploymentExample.yaml"
    
  3. Verwenden Sie kubectl get pods, um den Namen Ihres Pods zu finden. Kopieren Sie diesen Namen für den nächsten Schritt.

    Hinweis

    Da spec.replicas von deploymentExample.yaml als 2 angegeben wurde, werden mit kubectl get pods zwei Pods angezeigt. Sie können einen der beiden Podnamen für den nächsten Schritt auswählen.

  4. Führen Sie den folgenden Befehl aus, und ersetzen Sie POD_NAME_HERE durch den im vorherigen Schritt kopierten Wert:

    kubectl exec -it POD_NAME_HERE -- sh
    
  5. Ändern Sie Verzeichnisse in den /data Bereitstellungspfad, wie in Ihrem deploymentExample.yaml angegeben.

  6. Es sollte ein Verzeichnis mit dem Namen angezeigt werden, den Sie in Schritt 2 im Abschnitt Anfügen eines Untervolumes an ein Edgevolume als path angegeben haben. Ändern Sie Verzeichnisse zu /YOUR_PATH_NAME_HERE, und ersetzen Sie den YOUR_PATH_NAME_HERE-Wert durch Ihre Details.

  7. Erstellen Sie z. B. eine Datei mit dem Namen file1.txt, und schreiben Sie darin mithilfe von echo "Hello World" > file1.txt.

  8. Navigieren Sie im Azure-Portal zu Ihrem Speicherkonto, und suchen Sie den Container aus Schritt 2 im Abschnitt Anfügen eines Untervolumes an ein Edgevolume. Wenn Sie Ihren Container auswählen, sollte file1.txt im Container ausgefüllt werden. Wenn die Datei noch nicht angezeigt wurde, warten Sie ungefähr 1 Minute – die Wartezeit von Edgevolumes beim Upload.

Nächste Schritte

Nachdem Sie diese Schritte ausgeführt haben, können Sie mit der Überwachung Ihrer Bereitstellung mit Azure Monitor und Kubernetes Monitoring oder einer Überwachung von Drittanbietern mit Prometheus und Grafana beginnen.

Überwachen der Bereitstellung