Udostępnij za pomocą


Samouczek — wdrażanie usługi Azure Container Storage (wersja 1.x.x) w klastrze usługi AKS

W tym samouczku przedstawiono usługę Azure Container Storage i pokazano, jak wdrażać i zarządzać magazynem natywnym dla kontenerów dla aplikacji działających w usłudze Azure Kubernetes Service (AKS). Jeśli nie chcesz teraz wdrażać usługi Azure Container Storage, możesz pominąć ten samouczek i przejść bezpośrednio do sekcji Wdrażanie aplikacji w usłudze AKS. Usługa Azure Container Storage nie będzie potrzebna dla podstawowej aplikacji storefront w tej serii samouczków.

Ważne

W tym artykule wyjaśniono, jak zainstalować usługę Azure Container Storage (wersja 1.x.x), która teraz jawnie wymaga parametru --container-storage-version 1 przypinania wersji do instalacji. Usługa Azure Container Storage (wersja 2.x.x) jest teraz dostępna.

Usługa Azure Container Storage upraszcza zarządzanie stanowymi aplikacjami na platformie Kubernetes, oferując magazyn natywne dla kontenerów dostosowany do różnych obciążeń, w tym baz danych, platform analitycznych i aplikacji o wysokiej wydajności.

Po ukończeniu tego samouczka wykonasz następujące elementy:

  • Dowiedz się, jak usługa Azure Container Storage obsługuje różne obciążenia na platformie Kubernetes.
  • Zapoznaj się z wieloma opcjami zaplecza magazynu, aby dostosować magazyn do potrzeb aplikacji.
  • Wdróż usługę Azure Container Storage (w wersji 1.x.x) w klastrze usługi AKS i utwórz ogólny wolumin efemeryczny.

Zanim rozpoczniesz

W poprzednich samouczkach utworzyłeś obraz kontenera, przekazałeś go do wystąpienia ACR i utworzyłeś klaster AKS. Rozpocznij od Samouczka 1 — przygotuj aplikację dla usługi AKS, aby śledzić postępowanie.

  • Ten samouczek wymaga użycia interfejsu wiersza polecenia platformy Azure w wersji 2.35.0 lub nowszej. Portal i program PowerShell nie są obecnie obsługiwane w usłudze Azure Container Storage. Sprawdź swoją wersję z pomocą az --version. Aby zainstalować lub uaktualnić, zobacz Instalowanie interfejsu wiersza polecenia platformy Azure. Jeśli korzystasz ze środowiska Bash w usłudze Azure Cloud Shell, najnowsza wersja jest już zainstalowana.
  • Musisz mieć istniejący klaster AKS oparty na systemie Linux z co najmniej 3 węzłami, z jednostkami SKU maszyn wirtualnych zoptymalizowanymi pod kątem magazynu lub przyspieszonymi jednostkami SKU maszyn wirtualnych GPU. Zobacz Samouczek 3 — Utworzenie klastra AKS.
  • Będziesz potrzebować klienta wiersza polecenia Kubernetes, kubectl. Jest on już zainstalowany, jeśli używasz usługi Azure Cloud Shell lub możesz zainstalować go lokalnie, uruchamiając az aks install-cli polecenie .

Instalowanie rozszerzenia Kubernetes

Dodaj lub zaktualizuj do najnowszej wersji programu k8s-extension, uruchamiając następujące polecenie.

az extension add --upgrade --name k8s-extension

Nawiązywanie połączenia z klastrem i sprawdzanie stanu węzła

Jeśli nie masz jeszcze połączenia z klastrem z poprzedniego samouczka, uruchom następujące polecenia. Jeśli masz już połączenie, możesz pominąć tę sekcję.

  1. Uruchom następujące polecenie, aby połączyć się z klastrem.

    az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
    
  2. Sprawdź połączenie z klastrem, używając polecenia kubectl get. To polecenie zwraca listę węzłów klastra.

    kubectl get nodes
    
  3. Poniższy przykład danych wyjściowych przedstawia węzły w klastrze. Upewnij się, że stan dla wszystkich węzłów ma wartość Gotowe:

    NAME                                STATUS   ROLES   AGE   VERSION
    aks-nodepool1-34832848-vmss000000   Ready    agent   80m   v1.30.9
    aks-nodepool1-34832848-vmss000001   Ready    agent   80m   v1.30.9
    aks-nodepool1-34832848-vmss000002   Ready    agent   80m   v1.30.9
    

Wybieranie opcji magazynu zapasowego

Usługa Azure Container Storage (wersja 1.x.x) używa pul magazynów do aprowizowania trwałych i ogólnych woluminów oraz zarządzania nimi. Oferuje ona różne opcje zaplecza magazynowego dla pul magazynowych, z których każda jest odpowiednia dla konkretnych obciążeń. Wybór odpowiedniego typu magazynu ma kluczowe znaczenie dla optymalizacji wydajności, trwałości i wydajności kosztów obciążeń. Na potrzeby tego samouczka użyjemy efemerycznego dysku z lokalnym dyskiem NVMe jako magazynu zapasowego w celu utworzenia ogólnego woluminu efemerycznego. Jednak przyjrzymy się również innym opcjom przechowywania kopii zapasowych, które umożliwiają tworzenie woluminów trwałych.

Dysk efemeryczny

Dysk efemeryczny korzysta z zasobów magazynu lokalnego w węzłach usługi AKS (lokalnego dysku NVMe lub dysku ssd tymczasowego). Oferuje ona niskie opóźnienia poniżej milisekundy i wysokie IOPS, ale brak trwałości danych, jeśli maszyna wirtualna zostanie uruchomiona ponownie. Dysk efemeryczny najlepiej nadaje się dla aplikacji, takich jak Cassandra, które priorytetują szybkość nad trwałością i idealnie nadają się do obciążeń z własną replikacją na poziomie aplikacji.

Możesz użyć dysku efemerycznego, aby utworzyć ogólne woluminy efemeryczne lub woluminy trwałe, mimo że dane zostaną utracone, jeśli maszyna wirtualna zostanie ponownie uruchomiona.

Dyski Azure

Idealne rozwiązanie dla baz danych, takich jak PostgreSQL i MongoDB, usługa Azure Disks oferuje trwałość, skalowalność i wielowarstwową wydajność, w tym ssd w warstwie Premium i ssd w warstwie Ultra.

Dyski platformy Azure umożliwiają automatyczne przydzielanie woluminów magazynowych oraz zapewniają wbudowaną nadmiarowość i wysoką dostępność.

Azure Elastic SAN (wersja zapoznawcza)

Zaprojektowana z myślą o potrzebach wspólnego magazynowania i baz danych o uniwersalnym zastosowaniu, które wymagają skalowalności i wysokiej dostępności, usługa Azure Elastic SAN jest odpowiednim rozwiązaniem dla obciążeń, takich jak potoki CI/CD (ciągłej integracji/ciągłego wdrażania) lub przetwarzanie danych na dużą skalę.

Włączanie usługi Azure Container Storage (wersja 1.x.x) i tworzenie puli magazynów

Uruchom następujące polecenie, aby zainstalować usługę Azure Container Storage w klastrze i utworzyć lokalną pulę magazynów NVMe.

az aks update -n myAKSCluster -g myResourceGroup --enable-azure-container-storage ephemeralDisk --container-storage-version 1 --storage-pool-option NVMe

Wdrożenie powinno potrwać mniej niż 15 minut.

Weryfikowanie stanu puli magazynu

Po zakończeniu wdrażania składniki wybranego typu puli magazynów zostaną włączone i będziesz mieć domyślną pulę magazynów.

Aby uzyskać listę dostępnych pul magazynów, uruchom następujące polecenie:

kubectl get sp -n acstor

Aby sprawdzić stan puli magazynów, uruchom następujące polecenie:

kubectl describe sp <storage-pool-name> -n acstor

Jeśli Message nie wyświetla StoragePool is ready, to twoja pula magazynowa nadal się tworzy lub napotkała problem.

Wyświetlanie dostępnych klas przechowywania

Gdy pula magazynów jest gotowa do użycia, należy wybrać klasę magazynu, aby zdefiniować sposób dynamicznego tworzenia i wdrażania woluminów magazynu.

Uruchom kubectl get sc, aby wyświetlić dostępne klasy magazynu. Powinna widnieć klasa pamięci o nazwie acstor-<storage-pool-name>. Użyj tej klasy pamięci w następnej sekcji, aby wdrożyć pod.

Wdrażanie zasobnika z ogólnym woluminem efemerycznym

Utwórz pod przy użyciu narzędzia Fio (elastycznego testera wejścia/wyjścia) do testowania porównawczego i symulacji obciążenia, który używa ogólnego efemerycznego woluminu.

  1. Użyj ulubionego edytora tekstów, aby utworzyć plik manifestu YAML, taki jak code acstor-pod.yaml.

  2. Wklej następujący kod i zapisz plik.

    kind: Pod
    apiVersion: v1
    metadata:
      name: fiopod
    spec:
      nodeSelector:
        acstor.azure.com/io-engine: acstor
      containers:
        - name: fio
          image: nixery.dev/shell/fio
          args:
            - sleep
            - "1000000"
          volumeMounts:
            - mountPath: "/volume"
              name: ephemeralvolume
      volumes:
        - name: ephemeralvolume
          ephemeral:
            volumeClaimTemplate:
              metadata:
                labels:
                  type: my-ephemeral-volume
              spec:
                accessModes: [ "ReadWriteOnce" ]
                storageClassName: acstor-ephemeraldisk-nvme # replace with the name of your storage class if different
                resources:
                  requests:
                    storage: 1Gi
    

    Jeśli zmienisz rozmiar woluminu, upewnij się, że jest on mniejszy niż dostępna pojemność dysku efemerycznego pojedynczego węzła. Uruchom polecenie kubectl get diskpool -n acstor , aby sprawdzić dostępną pojemność.

  3. Zastosuj plik manifestu YAML, aby wdrożyć pod.

    kubectl apply -f acstor-pod.yaml
    

    Powinny zostać wyświetlone dane wyjściowe podobne do następujących:

    pod/fiopod created
    
  4. Sprawdź, czy zasobnik jest uruchomiony i czy żądanie woluminu efemerycznego zostało pomyślnie powiązane z zasobnikiem.

    kubectl describe pod fiopod
    kubectl describe pvc fiopod-ephemeralvolume
    

Teraz wdrożyłeś pod korzystający z lokalnego NVMe jako pamięci masowej i może być używany w obciążeniach Kubernetes.

Przed aprowizowaniem dodatkowych woluminów sprawdź dostępną pojemność dysków efemerycznych:

kubectl describe node <node-name>

Aby dowiedzieć się więcej o usłudze Azure Container Storage (wersja 1.x.x), w tym o sposobie tworzenia woluminów trwałych, zobacz Co to jest usługa Azure Container Storage?

Czyszczenie zasobów

W pozostałej części tej serii samouczków nie będzie potrzebna usługa Azure Container Storage, dlatego zalecamy jego usunięcie, aby uniknąć naliczania niepotrzebnych opłat za platformę Azure.

  1. Usuń pod.

    kubectl delete pod fiopod
    
  2. Usuń pulę pamięci masowej.

    kubectl delete sp -n acstor <storage-pool-name>
    
  3. Usuń wystąpienie rozszerzenia.

    az aks update -n myAKSCluster -g myResourceGroup --disable-azure-container-storage all
    

Następny krok

W tym samouczku wdrożono usługę Azure Container Storage (w wersji 1.x.x) w klastrze usługi AKS. Nauczyłeś się, jak:

  • Włącz usługę Azure Container Storage (w wersji 1.x.x) w klastrze usługi AKS.
  • Wybierz typ magazynu zapasowego i utwórz pulę magazynów.
  • Wdróż zasobnik z efemerycznym ogólnym woluminem.

W następnym samouczku dowiesz się, jak wdrożyć aplikację w klastrze.