Konfiguracja woluminów brzegowych pozyskiwania w chmurze
W tym artykule opisano konfigurację woluminów usługi Cloud Ingest Edge (przekazywanie obiektów blob za pomocą przeczyszczania lokalnego).
Co to jest woluminy brzegowe pozyskiwania w chmurze?
Woluminy brzegowe pozyskiwania w chmurze ułatwiają nieograniczone pozyskiwanie danych z krawędzi do obiektu blob, w tym ADLSgen2. Pliki zapisane w tym typie magazynu są bezproblemowo przesyłane do magazynu obiektów blob i po potwierdzeniu przekazania są następnie czyszczone lokalnie. To usunięcie zapewnia dostępność miejsca dla nowych danych. Ponadto ta opcja magazynu obsługuje integralność danych w środowiskach odłączonych, co umożliwia przechowywanie lokalne i synchronizację po ponownym połączeniu z siecią.
Na przykład można napisać plik do chmury pozyskiwania PVC, a proces uruchamia skanowanie w celu sprawdzenia nowych plików co minutę. Po zidentyfikowaniu plik jest wysyłany do przekazywania do wyznaczonego miejsca docelowego obiektu blob. Po potwierdzeniu pomyślnego przekazania wolumin usługi Cloud Ingest Edge czeka na pięć minut, a następnie usuwa lokalną wersję pliku.
Wymagania wstępne
Utwórz konto magazynu zgodnie z instrukcjami podanymi tutaj.
Uwaga
Podczas tworzenia konta magazynu zaleca się utworzenie go w tej samej grupie zasobów i regionie/lokalizacji co klaster Kubernetes.
Utwórz kontener na utworzonym wcześniej koncie magazynu, postępując zgodnie z instrukcjami podanymi tutaj.
Konfigurowanie tożsamości rozszerzenia
Woluminy brzegowe umożliwiają korzystanie z tożsamości rozszerzenia przypisanego przez system na potrzeby dostępu do magazynu obiektów blob. W tej sekcji opisano sposób używania tożsamości rozszerzenia przypisanej przez system w celu udzielenia dostępu do konta magazynu, co umożliwia przekazywanie woluminów pozyskiwania w chmurze do tych systemów magazynowania.
Zaleca się używanie tożsamości rozszerzenia. Jeśli ostatnim miejscem docelowym jest magazyn obiektów blob lub ADLSgen2, zapoznaj się z poniższymi instrukcjami. Jeśli ostatnią lokalizacją docelową jest OneLake, postępuj zgodnie z instrukcjami w temacie Konfigurowanie usługi OneLake pod kątem tożsamości rozszerzenia.
Chociaż nie jest to zalecane, jeśli wolisz używać uwierzytelniania opartego na kluczach, postępuj zgodnie z instrukcjami w artykule Uwierzytelnianie oparte na kluczach.
Uzyskiwanie tożsamości rozszerzenia
Azure Portal
- Przejdź do klastra połączonego z usługą Arc.
- Wybierz pozycję Rozszerzenia.
- Wybierz usługę Azure Container Storage włączoną przez rozszerzenie usługi Azure Arc.
- Zanotuj identyfikator podmiotu zabezpieczeń w obszarze Szczegóły rozszerzenia klastra.
Konfigurowanie konta usługi Blob Storage dla tożsamości rozszerzenia
Dodawanie uprawnień tożsamości rozszerzenia do konta magazynu
- Przejdź do konta magazynu w witrynie Azure Portal.
- Wybierz Access Control (Zarządzanie dostępem i tożsamościami).
- Wybierz pozycję Dodaj+ —> Dodaj przypisanie roli.
- Wybierz pozycję Właściciel danych obiektu blob usługi Storage, a następnie wybierz pozycję Dalej.
- Wybierz pozycję +Wybierz członków.
- Aby dodać identyfikator podmiotu zabezpieczeń do listy Wybrane elementy członkowskie, wklej identyfikator i wybierz + obok tożsamości.
- Kliknij opcję Wybierz.
- Aby przejrzeć i przypisać uprawnienia, wybierz pozycję Dalej, a następnie wybierz pozycję Przejrzyj i przypisz.
Tworzenie oświadczenia trwałego woluminu pozyskiwania w chmurze (PVC)
Utwórz plik o nazwie z
cloudIngestPVC.yaml
następującą zawartością.metadata.name
Edytuj wiersz i utwórz nazwę oświadczenia trwałego woluminu. Ta nazwa jest przywołyowana w ostatnim wierszudeploymentExample.yaml
w następnym kroku. Ponadto zaktualizuj wartość zametadata.namespace
pomocą zamierzonego zasobnika zużywania. Jeśli nie masz zamierzonego zasobnika zużywanego,metadata.namespace
wartość todefault
. Parametrspec.resources.requests.storage
określa rozmiar woluminu trwałego. W tym przykładzie jest to 2 GB, ale można go zmodyfikować zgodnie z potrzebami:Uwaga
Używaj tylko małych liter i kreski. Aby uzyskać więcej informacji, zobacz dokumentację nazewnictwa obiektów Kubernetes.
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
Aby zastosować
cloudIngestPVC.yaml
polecenie , uruchom polecenie:kubectl apply -f "cloudIngestPVC.yaml"
Dołączanie podwolułki do woluminu usługi Edge
Aby utworzyć podvolume przy użyciu tożsamości rozszerzenia w celu nawiązania połączenia z kontenerem konta magazynu, użyj następującego procesu:
Pobierz nazwę woluminu usługi Ingest Edge przy użyciu następującego polecenia:
kubectl get edgevolumes
Utwórz plik o nazwie
edgeSubvolume.yaml
i skopiuj następującą zawartość. Te zmienne muszą zostać zaktualizowane przy użyciu informacji:Uwaga
Używaj tylko małych liter i kreski. Aby uzyskać więcej informacji, zobacz dokumentację nazewnictwa obiektów Kubernetes.
metadata.name
: Utwórz nazwę dla podvolume.spec.edgevolume
: Ta nazwa została pobrana z poprzedniego kroku przy użyciu poleceniakubectl get edgevolumes
.spec.path
: Utwórz własną nazwę podkatalogu pod ścieżką instalacji. Poniższy przykład zawiera już przykładową nazwę (exampleSubDir
). Jeśli zmienisz tę nazwę ścieżki, wiersz 33 wdeploymentExample.yaml
pliku musi zostać zaktualizowany o nową nazwę ścieżki. Jeśli zdecydujesz się zmienić nazwę ścieżki, nie używaj poprzedniego ukośnika.spec.container
: nazwa kontenera na koncie magazynu.spec.storageaccountendpoint
: przejdź do konta magazynu w witrynie Azure Portal. Na stronie Przegląd w prawym górnym rogu ekranu wybierz pozycję Widok JSON. Link można znaleźćstorageaccountendpoint
w obszarze properties.primaryEndpoints.blob. Skopiuj cały link; na przykładhttps://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
Aby zastosować
edgeSubvolume.yaml
polecenie , uruchom polecenie:kubectl apply -f "edgeSubvolume.yaml"
Opcjonalnie: zmodyfikuj element ingestPolicy
z domyślnego
Jeśli chcesz zmienić wartość z
ingestPolicy
domyślnejedgeingestpolicy-default
, utwórz plik o nazwie zmyedgeingest-policy.yaml
następującą zawartością. Następujące zmienne muszą zostać zaktualizowane przy użyciu preferencji:Uwaga
Używaj tylko małych liter i kreski. Aby uzyskać więcej informacji, zobacz dokumentację nazewnictwa obiektów Kubernetes.
metadata.name
: Utwórz nazwę elementu ingestPolicy. Ta nazwa musi zostać zaktualizowana i odwołana wspec.ingestPolicy
sekcji .edgeSubvolume.yaml
spec.ingest.order
: kolejność przekazywania zanieczyszczonych plików. Jest to najlepsze rozwiązanie, a nie gwarancja (domyślnie jest to wartość domyślna najstarszego pierwszego). Opcje kolejności to: pierwszy lub najnowszy.spec.ingest.minDelaySec
: minimalna liczba sekund, po których zanieczyszczony plik kwalifikuje się do pozyskiwania (wartość domyślna to 60). Ta liczba może mieścić się w zakresie od 0 do 31536000.spec.eviction.order
: jak pliki są eksmitowane (domyślnie nieurządkowane). Opcje kolejności eksmisji to: nieurządkowane lub nigdy.spec.eviction.minDelaySec
: liczba sekund, po których czysty plik kwalifikuje się do eksmisji (wartość domyślna to 300). Ta liczba może mieścić się w zakresie od 0 do 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>
Aby uzyskać więcej informacji na temat tych specyfikacji, zobacz Ustawianie zasad pozyskiwania.
Aby zastosować
myedgeingest-policy.yaml
polecenie , uruchom polecenie:kubectl apply -f "myedgeingest-policy.yaml"
Dołączanie aplikacji (aplikacja natywna Kubernetes)
Aby skonfigurować ogólny pojedynczy zasobnik (aplikacja natywna Kubernetes) względem oświadczenia trwałego woluminu (PVC), utwórz plik o nazwie
deploymentExample.yaml
z następującą zawartością. Zmodyfikujcontainers.name
wartości ivolumes.persistentVolumeClaim.claimName
. W przypadku zaktualizowania nazwy ścieżki zedgeSubvolume.yaml
wierszaexampleSubDir
33 należy zaktualizować przy użyciu nowej nazwy ścieżki. Parametrspec.replicas
określa liczbę zasobników repliki do utworzenia. W tym przykładzie jest to 2, ale można go zmodyfikować zgodnie z potrzebami:Uwaga
Używaj tylko małych liter i kreski. Aby uzyskać więcej informacji, zobacz dokumentację nazewnictwa obiektów Kubernetes.
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>
Aby zastosować
deploymentExample.yaml
polecenie , uruchom polecenie:kubectl apply -f "deploymentExample.yaml"
Użyj polecenia
kubectl get pods
, aby znaleźć nazwę zasobnika. Skopiuj tę nazwę do użycia w następnym kroku.Uwaga
Ponieważ
spec.replicas
parametr fromdeploymentExample.yaml
został określony jako2
, dwa zasobniki są wyświetlane przy użyciu poleceniakubectl get pods
. Możesz wybrać nazwę zasobnika do użycia w następnym kroku.Uruchom następujące polecenie i zastąp
POD_NAME_HERE
wartość skopiowaną z ostatniego kroku:kubectl exec -it POD_NAME_HERE -- sh
Zmień katalogi na ścieżkę
/data
instalacji, jak określono z plikudeploymentExample.yaml
.Powinien zostać wyświetlony katalog o podanej
path
nazwie w kroku 2 sekcji Dołączanie podwolułki do woluminu krawędzi. Zmień katalogi na/YOUR_PATH_NAME_HERE
, zastępującYOUR_PATH_NAME_HERE
wartość swoimi szczegółami.Na przykład utwórz plik o nazwie
file1.txt
i zapisz go przy użyciu poleceniaecho "Hello World" > file1.txt
.W witrynie Azure Portal przejdź do konta magazynu i znajdź kontener określony w kroku 2 podwolułki Dołączanie do woluminu brzegowego. Po wybraniu kontenera powinno zostać wypełnione
file1.txt
w kontenerze. Jeśli plik nie został jeszcze wyświetlony, poczekaj około 1 minutę; Woluminy brzegowe czekają minutę przed przekazaniem.
Następne kroki
Po wykonaniu tych kroków możesz rozpocząć monitorowanie wdrożenia przy użyciu usług Azure Monitor i Kubernetes Monitoring lub monitorowania innych firm za pomocą rozwiązania Prometheus i narzędzia Grafana.