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
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.
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
- Navigieren Sie zu Ihrem mit Arc verbundenen Cluster.
- Wählen Sie Erweiterungen.
- Wählen Sie Ihre Erweiterung für Azure Container Storage, aktiviert durch Azure Arc, aus.
- Beachten Sie die Prinzipal-ID unter Clustererweiterungsdetails.
Konfigurieren des Blobspeicherkontos für die Erweiterungsidentität
Hinzufügen von Erweiterungsidentitätsberechtigungen zu einem Speicherkonto
- Navigieren Sie zum Speicherkonto im Azure-Portal.
- Wählen Sie Zugriffssteuerung (IAM).
- Wählen Sie Hinzufügen+ –> Rollenzuweisung hinzufügen aus.
- Wählen Sie Besitzer von Speicherblobdaten und dann Weiter aus.
- Wählen Sie + Mitglieder auswählen aus.
- 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.
- Klicken Sie auf Auswählen.
- 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
Erstellen Sie eine Datei namens
cloudIngestPVC.yaml
mit folgendem Inhalt. Bearbeiten Sie diemetadata.name
-Zeile, und erstellen Sie einen Namen für Ihren persistenten Volumenanspruch. Auf diesen Namen wird in der letzten Zeile vondeploymentExample.yaml
im nächsten Schritts verwiesen. Aktualisieren Sie außerdem denmetadata.namespace
-Wert mit Ihrem beabsichtigten verbrauchenden Pod. Wenn Sie nicht über einen beabsichtigten, verbrauchenden Pod verfügen, hatmetadata.namespace
den Wertdefault
. Der Parameterspec.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
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:
Rufen Sie den Namen Ihres Edgevolumes für die Erfassung mit dem folgenden Befehl ab:
kubectl get edgevolumes
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 mitkubectl 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, mussdeploymentExample.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 denstorageaccountendpoint
-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
Führen Sie zum Anwenden von
edgeSubvolume.yaml
Folgendes aus:kubectl apply -f "edgeSubvolume.yaml"
Optional: Ändern Sie den Standardwert von ingestPolicy
.
Wenn Sie für
ingestPolicy
den Standardwertedgeingestpolicy-default
ändern möchten, erstellen Sie eine Datei namensmyedgeingest-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 Abschnittspec.ingestPolicy
Ihrer DateiedgeSubvolume.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.
Führen Sie zum Anwenden von
myedgeingest-policy.yaml
Folgendes aus:kubectl apply -f "myedgeingest-policy.yaml"
Anfügen Ihrer App (native Kubernetes-Anwendung)
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 Wertecontainers.name
undvolumes.persistentVolumeClaim.claimName
. Wenn Sie den Pfadnamen vonedgeSubvolume.yaml
geändert haben, müssen SieexampleSubDir
in Zeile 33 mit dem neuen Pfadnamen aktualisieren. Der Parameterspec.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>
Führen Sie zum Anwenden von
deploymentExample.yaml
Folgendes aus:kubectl apply -f "deploymentExample.yaml"
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
vondeploymentExample.yaml
als2
angegeben wurde, werden mitkubectl get pods
zwei Pods angezeigt. Sie können einen der beiden Podnamen für den nächsten Schritt auswählen.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
Ändern Sie Verzeichnisse in den
/data
Bereitstellungspfad, wie in IhremdeploymentExample.yaml
angegeben.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 denYOUR_PATH_NAME_HERE
-Wert durch Ihre Details.Erstellen Sie z. B. eine Datei mit dem Namen
file1.txt
, und schreiben Sie darin mithilfe vonecho "Hello World" > file1.txt
.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.