Udostępnij za pośrednictwem


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

  1. 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.

  2. 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

  1. Przejdź do klastra połączonego z usługą Arc.
  2. Wybierz pozycję Rozszerzenia.
  3. Wybierz usługę Azure Container Storage włączoną przez rozszerzenie usługi Azure Arc.
  4. 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

  1. Przejdź do konta magazynu w witrynie Azure Portal.
  2. Wybierz Access Control (Zarządzanie dostępem i tożsamościami).
  3. Wybierz pozycję Dodaj+ —> Dodaj przypisanie roli.
  4. Wybierz pozycję Właściciel danych obiektu blob usługi Storage, a następnie wybierz pozycję Dalej.
  5. Wybierz pozycję +Wybierz członków.
  6. Aby dodać identyfikator podmiotu zabezpieczeń do listy Wybrane elementy członkowskie, wklej identyfikator i wybierz + obok tożsamości.
  7. Kliknij opcję Wybierz.
  8. 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)

  1. 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 wierszu deploymentExample.yaml w następnym kroku. Ponadto zaktualizuj wartość za metadata.namespace pomocą zamierzonego zasobnika zużywania. Jeśli nie masz zamierzonego zasobnika zużywanego, metadata.namespace wartość to default. Parametr spec.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
    
  2. Aby zastosować cloudIngestPVC.yamlpolecenie , 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:

  1. Pobierz nazwę woluminu usługi Ingest Edge przy użyciu następującego polecenia:

    kubectl get edgevolumes
    
  2. 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 polecenia kubectl 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 w deploymentExample.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ład 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. Aby zastosować edgeSubvolume.yamlpolecenie , uruchom polecenie:

    kubectl apply -f "edgeSubvolume.yaml"
    

Opcjonalnie: zmodyfikuj element ingestPolicy z domyślnego

  1. Jeśli chcesz zmienić wartość z ingestPolicy domyślnej edgeingestpolicy-default, utwórz plik o nazwie z myedgeingest-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 w spec.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.

  2. Aby zastosować myedgeingest-policy.yamlpolecenie , uruchom polecenie:

    kubectl apply -f "myedgeingest-policy.yaml"
    

Dołączanie aplikacji (aplikacja natywna Kubernetes)

  1. 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ą. Zmodyfikuj containers.name wartości i volumes.persistentVolumeClaim.claimName . W przypadku zaktualizowania nazwy ścieżki z edgeSubvolume.yamlwiersza exampleSubDir 33 należy zaktualizować przy użyciu nowej nazwy ścieżki. Parametr spec.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>
    
  2. Aby zastosować deploymentExample.yamlpolecenie , uruchom polecenie:

    kubectl apply -f "deploymentExample.yaml"
    
  3. 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 from deploymentExample.yaml został określony jako 2, dwa zasobniki są wyświetlane przy użyciu polecenia kubectl get pods. Możesz wybrać nazwę zasobnika do użycia w następnym kroku.

  4. Uruchom następujące polecenie i zastąp POD_NAME_HERE wartość skopiowaną z ostatniego kroku:

    kubectl exec -it POD_NAME_HERE -- sh
    
  5. Zmień katalogi na ścieżkę /data instalacji, jak określono z pliku deploymentExample.yaml.

  6. 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ąc YOUR_PATH_NAME_HERE wartość swoimi szczegółami.

  7. Na przykład utwórz plik o nazwie file1.txt i zapisz go przy użyciu polecenia echo "Hello World" > file1.txt.

  8. 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.

Monitorowanie wdrożenia