Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Usługa Azure Container Storage to oparta na chmurze usługa zarządzania woluminami, wdrażania i orkiestracji wbudowana natywnie dla kontenerów. W tym artykule pokazano, jak skonfigurować usługę Azure Container Storage (w wersji 1.x.x) do korzystania z dysku efemerycznego z lokalnymi urządzeniami NVMe i replikacją woluminu jako magazynem zaplecza dla obciążeń Kubernetes. Na końcu będziesz mieć zasobnik używający lokalnego dysku NVMe do przechowywania. Replikacja kopiuje dane między woluminami na różnych węzłach i przywraca wolumin po utracie repliki, zapewniając odporność dla dysku efemerycznego.
Ważne
W tym artykule opisano funkcje i możliwości dostępne w usłudze Azure Container Storage (wersja 1.x.x). Usługa Azure Container Storage (wersja 2.x.x) jest teraz dostępna, ale obecnie nie obsługuje replikacji.
Co to jest dysk efemeryczny?
Gdy Twoja aplikacja wymaga opóźnienia pamięci poniżej milisekundy, możesz użyć dysku efemerycznego z usługą Azure Container Storage, aby spełnić wymagania dotyczące wydajności. Efemeryczne oznacza, że dyski są wdrażane na lokalnej maszynie wirtualnej hostujące klaster usługi AKS i nie są zapisywane w usłudze Azure Storage. Dane zostaną utracone na tych dyskach, jeśli zatrzymasz/cofniesz przydział maszyny wirtualnej.
Dostępne są dwa typy efemerycznego dysku: lokalny dysk NVMe i dysk SSD tymczasowy. NvMe jest przeznaczony do szybkiego transferu danych między magazynem a procesorem CPU. Wybierz urządzenie NVMe, gdy aplikacja potrzebuje większej przepływności lub liczby operacji we/wy na sekundę niż dysk SSD tymczasowy lub wymaga więcej miejsca do magazynowania. Należy pamiętać, że usługa Azure Container Storage obsługuje tylko replikację danych synchronicznych dla lokalnego urządzenia NVMe.
Ze względu na efemeryczny charakter tych dysków usługa Azure Container Storage domyślnie obsługuje korzystanie z ogólnych woluminów efemerycznych podczas korzystania z dysku efemerycznego. Jednak niektóre przypadki użycia mogą wywoływać woluminy trwałe, nawet jeśli dane nie są trwałe, na przykład jeśli chcesz użyć istniejących plików YAML lub szablonów wdrożenia, które są zakodowane w celu używania woluminów trwałych, a obciążenie obsługuje replikację na poziomie aplikacji w celu zapewnienia trwałości. W takich przypadkach można zaktualizować instalację usługi Azure Container Storage i dodać adnotację acstor.azure.com/accept-ephemeral-storage=true w definicji żądania trwałego wolumenu, aby wspierać tworzenie woluminów trwałych z efemerycznych zasobów dyskowych.
Wymagania wstępne
Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto.
Ten artykuł wymaga najnowszej wersji interfejsu wiersza polecenia platformy Azure. Zobacz Jak zainstalować interfejs wiersza polecenia platformy Azure. Jeśli używasz środowiska Bash w usłudze Azure Cloud Shell, najnowsza wersja prawdopodobnie jest już zainstalowana. Jeśli planujesz uruchamiać polecenia lokalnie zamiast w usłudze Azure Cloud Shell, pamiętaj, aby uruchamiać je z uprawnieniami administracyjnymi. Aby uzyskać więcej informacji, zobacz Rozpoczynanie pracy z usługą Azure Cloud Shell.
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ącaz aks install-clipolecenie .Sprawdź, czy region docelowy jest obsługiwany w regionach usługi Azure Container Storage.
Wybierz typ maszyny wirtualnej, który obsługuje lokalne urządzenie NVMe
Lokalny dysk NVMe jest dostępny tylko w niektórych typach maszyn wirtualnych, na przykład w SKU maszyn wirtualnych zoptymalizowanych pod kątem magazynowania lub SKU maszyn wirtualnych przyspieszonych z użyciem GPU. Jeśli planujesz używać lokalnego urządzenia NVMe, wybierz jedną z tych jednostek SKU maszyny wirtualnej.
Uruchom następujące polecenie, aby uzyskać typ maszyny wirtualnej używanej w puli węzłów. Zastąp wartości <resource group> i <cluster name> swoimi własnymi. Nie musisz podawać wartości dla PoolName lub VmSize, więc zachowaj zapytanie, jak pokazano tutaj.
az aks nodepool list --resource-group <resource group> --cluster-name <cluster name> --query "[].{PoolName:name, VmSize:vmSize}" -o table
Poniżej przedstawiono przykład danych wyjściowych.
PoolName VmSize
---------- ---------------
nodepool1 standard_l8s_v3
Zalecamy, aby każda maszyna wirtualna miała co najmniej cztery procesory wirtualne (vCPU), a każda pula węzłów ma co najmniej trzy węzły.
Tworzenie i dołączanie ogólnych woluminów efemerycznych
Wykonaj następujące kroki, aby utworzyć i dodać uniwersalny wolumin efemeryczny.
1. Tworzenie puli magazynów z replikacją woluminów
Najpierw utwórz pulę magazynów, która jest logicznym grupowaniem magazynu dla klastra Kubernetes, definiując ją w pliku manifestu YAML.
Jeśli usługa Azure Container Storage została włączona przy użyciu poleceń az aks create lub az aks update, możliwe, że masz już pulę magazynową. Użyj polecenia kubectl get sp -n acstor, aby uzyskać listę pul przechowywania. Jeśli masz już dostępną pulę magazynową, której chcesz użyć, możesz pominąć tę sekcję i przejść do Wyświetlanie dostępnych klas magazynów.
Wykonaj następujące kroki, aby utworzyć pulę magazynów przy użyciu lokalnego urządzenia NVMe z replikacją. Usługa Azure Container Storage obsługuje obecnie konfiguracje z trzema replikami i pięcioma replikami. Jeśli określisz trzy repliki, musisz mieć co najmniej trzy węzły w klastrze AKS. Jeśli określisz pięć replik, musisz mieć co najmniej pięć węzłów.
Uwaga
Ze względu na to, że pule magazynów dysków efemerycznych zużywają wszystkie dostępne dyski NVMe, przed utworzeniem nowej puli magazynów należy usunąć wszystkie istniejące lokalne pule magazynów NVMe.
Użyj ulubionego edytora tekstów, aby utworzyć plik manifestu YAML, taki jak
code acstor-storagepool.yaml.Wklej następujący kod i zapisz plik. Wartość nazwa puli magazynowej może być dowolna.
apiVersion: containerstorage.azure.com/v1 kind: StoragePool metadata: name: ephemeraldisk-nvme namespace: acstor spec: poolType: ephemeralDisk: diskType: nvme replicas: 3Zastosuj plik manifestu YAML, aby utworzyć pulę pamięci masowej.
kubectl apply -f acstor-storagepool.yamlPo zakończeniu tworzenia puli magazynów zostanie wyświetlony komunikat podobny do następującego:
storagepool.containerstorage.azure.com/ephemeraldisk-nvme createdMożesz również uruchomić to polecenie, aby sprawdzić stan puli magazynów. Zastąp
<storage-pool-name>wartością nazwy puli magazynowej. W tym przykładzie wartość będzie efemerycznydysk-nvme.kubectl describe sp <storage-pool-name> -n acstor
Po utworzeniu puli magazynów usługa Azure Container Storage utworzy klasę przechowywania w Twoim imieniu, przy użyciu konwencji nazewnictwa acstor-<storage-pool-name>.
2. Wyświetl dostępne klasy pamięci masowej
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 zostać wyświetlona klasa magazynu o nazwie acstor-<storage-pool-name>.
$ kubectl get sc | grep "^acstor-"
acstor-azuredisk-internal disk.csi.azure.com Retain WaitForFirstConsumer true 65m
acstor-ephemeraldisk-nvme containerstorage.csi.azure.com Delete WaitForFirstConsumer true 2m27s
Ważne
Nie używaj klasy magazynu oznaczonej jako wewnętrznej. Jest to wewnętrzna klasa magazynu, która jest niezbędna do działania usługi Azure Container Storage.
3. Wdrażanie zasobnika z ogólnym woluminem efemerycznym
Utwórz pod przy użyciu narzędzia Fio (elastycznego testera we/wy) do testowania porównawczego i symulacji obciążenia, który korzysta z ogólnego wolumenu tymczasowego.
Użyj ulubionego edytora tekstów, aby utworzyć plik manifestu YAML, taki jak
code acstor-pod.yaml.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: 1GiKiedy zmieniasz rozmiar woluminów, upewnij się, że rozmiar jest mniejszy niż dostępna pojemność efemerycznego dysku pojedynczego węzła. Zobacz Sprawdzanie pojemności dysku efemerycznego węzła.
Zastosuj plik manifestu YAML, aby wdrożyć pod.
kubectl apply -f acstor-pod.yamlPowinny zostać wyświetlone dane wyjściowe podobne do następujących:
pod/fiopod createdSprawdź, 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-ephemeralvolumeSprawdź stan testu fio, aby zobaczyć jego bieżący status:
kubectl exec -it fiopod -- fio --name=benchtest --size=800m --filename=/volume/test --direct=1 --rw=randrw --ioengine=libaio --bs=4k --iodepth=16 --numjobs=8 --time_based --runtime=60
Teraz wdrożono pod, który korzysta z lokalnego urządzenia NVMe z replikacją woluminu i można go używać do obciążeń Kubernetes.
Tworzenie i dołączanie woluminów trwałych
Aby utworzyć wolumin trwały z efemerycznej puli pamięci dyskowej, należy uwzględnić adnotację w żądaniach trwałych woluminów (PVC) jako zabezpieczenie, by upewnić się, że chcesz używać woluminów trwałych, nawet gdy dane są efemeryczne. Ponadto należy włączyć flagę --ephemeral-disk-volume-type z wartością PersistentVolumeWithAnnotation na klastrze przed utworzeniem roszczeń dotyczących trwałych woluminów.
Wykonaj następujące kroki, aby utworzyć i podłączyć wolumin trwały.
1. Aktualizowanie instalacji usługi Azure Container Storage
Uruchom następujące polecenie, aby zaktualizować instalację usługi Azure Container Storage, aby umożliwić tworzenie woluminów trwałych z pul magazynów dysków efemerycznych.
az aks update -n <cluster-name> -g <resource-group> --enable-azure-container-storage ephemeralDisk --storage-pool-option NVMe --ephemeral-disk-volume-type PersistentVolumeWithAnnotation
2. Tworzenie puli magazynów z replikacją woluminów
Wykonaj następujące kroki, aby utworzyć pulę magazynów przy użyciu lokalnego urządzenia NVMe z replikacją. Usługa Azure Container Storage obsługuje obecnie konfiguracje z trzema replikami i pięcioma replikami. Jeśli określisz trzy repliki, musisz mieć co najmniej trzy węzły w klastrze AKS. Jeśli określisz pięć replik, musisz mieć co najmniej pięć węzłów.
Uwaga
Ze względu na to, że pule magazynów dysków efemerycznych zużywają wszystkie dostępne dyski NVMe, przed utworzeniem nowej puli magazynów należy usunąć wszystkie istniejące lokalne pule magazynów NVMe.
Użyj ulubionego edytora tekstów, aby utworzyć plik manifestu YAML, taki jak
code acstor-storagepool.yaml.Wklej następujący kod i zapisz plik. Wartość nazwa puli magazynowej może być dowolna. Ustaw repliki na 3 lub 5.
apiVersion: containerstorage.azure.com/v1 kind: StoragePool metadata: name: ephemeraldisk-nvme namespace: acstor spec: poolType: ephemeralDisk: diskType: nvme replicas: 3Zastosuj plik manifestu YAML, aby utworzyć pulę pamięci masowej.
kubectl apply -f acstor-storagepool.yamlPo zakończeniu tworzenia puli magazynów zostanie wyświetlony komunikat podobny do następującego:
storagepool.containerstorage.azure.com/ephemeraldisk-nvme createdMożesz również uruchomić to polecenie, aby sprawdzić stan puli magazynów. Zastąp
<storage-pool-name>wartością nazwy puli magazynowej. W tym przykładzie wartość będzie efemerycznydysk-nvme.kubectl describe sp <storage-pool-name> -n acstor
Po utworzeniu puli magazynów usługa Azure Container Storage utworzy klasę przechowywania w Twoim imieniu, przy użyciu konwencji nazewnictwa acstor-<storage-pool-name>.
3. Wyświetl dostępne klasy magazynu
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 zostać wyświetlona klasa magazynu o nazwie acstor-<storage-pool-name>.
$ kubectl get sc | grep "^acstor-"
acstor-azuredisk-internal disk.csi.azure.com Retain WaitForFirstConsumer true 65m
acstor-ephemeraldisk-nvme containerstorage.csi.azure.com Delete WaitForFirstConsumer true 2m27s
Ważne
Nie używaj klasy magazynu oznaczonej jako wewnętrznej. Jest to wewnętrzna klasa magazynu, która jest niezbędna do działania usługi Azure Container Storage.
4. Utwórz żądanie trwałego woluminu
Trwałe oświadczenie woluminu (PVC) służy do automatycznego aprowizowania magazynu na podstawie klasy magazynu. Wykonaj następujące kroki, aby utworzyć PVC z użyciem nowej klasy pamięci.
Użyj ulubionego edytora tekstów, aby utworzyć plik manifestu YAML, taki jak
code acstor-pvc.yaml.Wklej następujący kod i zapisz plik. Wartość PVC
namemoże być dowolna.apiVersion: v1 kind: PersistentVolumeClaim metadata: name: ephemeralpvc annotations: acstor.azure.com/accept-ephemeral-storage: "true" spec: accessModes: - ReadWriteOnce storageClassName: acstor-ephemeraldisk-nvme # replace with the name of your storage class if different resources: requests: storage: 100GiKiedy zmieniasz rozmiar woluminów, upewnij się, że rozmiar jest mniejszy niż dostępna pojemność efemerycznego dysku pojedynczego węzła. Zobacz Sprawdzanie pojemności dysku efemerycznego węzła.
Zastosuj plik manifestu YAML, aby utworzyć plik PVC.
kubectl apply -f acstor-pvc.yamlPowinny zostać wyświetlone dane wyjściowe podobne do poniższych:
persistentvolumeclaim/ephemeralpvc createdStan PCV można sprawdzić, uruchamiając następujące polecenie:
kubectl describe pvc ephemeralpvc
Po utworzeniu PVC jest gotowy do użycia przez pod.
5. Wdróż zasobnik i dołącz wolumin trwały
Utwórz pod przy użyciu narzędzia Fio (elastycznego testera we/wy) do testów porównawczych i symulacji obciążenia oraz określ ścieżkę montowania dla woluminu trwałego. W polu claimName użyj wartości nazwy użytej podczas tworzenia trwałego oświadczenia woluminu.
Użyj ulubionego edytora tekstów, aby utworzyć plik manifestu YAML, taki jak
code acstor-pod.yaml.Wklej następujący kod i zapisz plik.
kind: Pod apiVersion: v1 metadata: name: fiopod spec: nodeSelector: acstor.azure.com/io-engine: acstor volumes: - name: ephemeralpv persistentVolumeClaim: claimName: ephemeralpvc containers: - name: fio image: nixery.dev/shell/fio args: - sleep - "1000000" volumeMounts: - mountPath: "/volume" name: ephemeralpvZastosuj plik manifestu YAML, aby wdrożyć pod.
kubectl apply -f acstor-pod.yamlPowinny zostać wyświetlone dane wyjściowe podobne do następujących:
pod/fiopod createdSprawdź, czy pod działa i czy żądanie trwałego woluminu zostało pomyślnie powiązane z podem.
kubectl describe pod fiopod kubectl describe pvc ephemeralpvcSprawdź stan testu fio, aby zobaczyć jego bieżący status:
kubectl exec -it fiopod -- fio --name=benchtest --size=800m --filename=/volume/test --direct=1 --rw=randrw --ioengine=libaio --bs=4k --iodepth=16 --numjobs=8 --time_based --runtime=60
Teraz wdrożono pod, który korzysta z lokalnego urządzenia NVMe z replikacją woluminu i można go używać do obciążeń Kubernetes.
Zarządzanie woluminami i pulami magazynów
W tej sekcji dowiesz się, jak sprawdzić dostępną pojemność dysku efemerycznego, jak odłączyć i ponownie dołączyć wolumin trwały, jak rozwinąć lub usunąć pulę magazynów oraz jak zoptymalizować wydajność.
Sprawdź pojemność dysku efemerycznego węzła
Wolumin efemeryczny jest przydzielany w jednym węźle. Podczas ustawiania rozmiaru woluminów efemerycznych należy upewnić się, że jest on mniejszy niż dostępna pojemność dysku efemerycznego pojedynczego węzła.
Uruchom następujące polecenie, aby sprawdzić dostępną pojemność dysku efemerycznego dla jednego węzła.
$ kubectl get diskpool -n acstor
NAME CAPACITY AVAILABLE USED RESERVED READY AGE
ephemeraldisk-nvme-diskpool-jaxwb 75660001280 75031990272 628011008 560902144 True 21h
ephemeraldisk-nvme-diskpool-wzixx 75660001280 75031990272 628011008 560902144 True 21h
ephemeraldisk-nvme-diskpool-xbtlj 75660001280 75031990272 628011008 560902144 True 21h
W tym przykładzie dostępna pojemność dysku efemerycznego dla pojedynczego węzła to 75031990272 bajty lub 69 GiB.
Odłączanie i ponowne dołączanie woluminu trwałego
Aby odłączyć wolumin trwały, usuń pod, do którego jest dołączony wolumin trwały.
kubectl delete pods <pod-name>
Aby ponownie dołączyć wolumin trwały, po prostu odwołaj się do nazwy roszczenia o wolumin trwały w pliku manifestu YAML, jak opisano w sekcji Wdrażanie zasobnika i dołączanie woluminu trwałego.
Aby sprawdzić, z którym woluminem trwałym jest powiązane zgłoszenie roszczenia do woluminu trwałego, uruchom:
kubectl get pvc <persistent-volume-claim-name>
Włączanie hiperkonwergence (opcjonalnie)
Co to jest hiperkonwergencja?
Funkcja Hyperconvergence w usłudze Azure Container Storage umożliwia uruchamianie zasobników na tym samym hoście co odpowiadające im woluminy, co zmniejsza obciążenie sieci i znacznie poprawia wydajność odczytu.
W przypadku obciążeń z jedną repliką funkcja hyperconvergence jest zawsze włączona domyślnie w celu zmaksymalizowania lokalizacji danych.
W przypadku obciążeń z wieloma replikami funkcja hyperconvergence jest opcjonalna i musi być jawnie włączona.
Gdy funkcja hyperkonwergence jest włączona dla woluminów z wieloma replikami, obciążenie jest zaplanowane na tym samym hoście co jedna z replik woluminów, optymalizując dostęp do danych przy zachowaniu nadmiarowości.
Zachowanie hyperkonwergencji dla woluminów niereplikowanych versus replikowanych
Wolumeny niereplikowane dysków NVMe/TempSSD
Funkcja Hyperconvergence jest domyślnie włączona.
Jeśli nie ma dostępnego odpowiedniego węzła z pulą dysków lokalnych, uruchomienie zasobnika aplikacji nie powiedzie się z powodu niewystarczających zasobów.
Ścisłe egzekwowanie uniemożliwia uruchamianie aplikacji korzystającej z wolumenu niereplikowanego na innym węźle niż ten, na którym jest aprowizowana jego pamięć masowa.
Replikowane woluminy NVMe/TempSSD:
Hiperkonwergencja jest najlepszym rozwiązaniem.
Programator podejmie próbę umieszczenia podu aplikacji na tym samym węźle co jedna z replik woluminu.
Jeśli nie będzie dostępny odpowiedni węzeł, zasobnik zostanie przypisany gdzie indziej, ale szybkość odczytu może być niższa niż oczekiwano.
Jak to działa
Po włączeniu funkcji hiperkonwergencji usługa Azure Container Storage priorytetyzuje planowanie zasobników na węzłach, na których znajdują się repliki ich woluminów.
- Domyślny harmonogram platformy Kubernetes przypisuje wyniki do wszystkich węzłów na podstawie standardowych parametrów, takich jak procesor CPU, pamięć, koligacje i tolerancje.
- Ocenianie powiązań węzłów usługi Azure Container Storage: usługa Azure Container Storage używa preferowanych powiązań węzłów, aby wpłynąć na decyzję harmonogramisty. W związku z tym każdy węzeł otrzymuje:
- 1 punkt, jeśli ma prawidłową pulę dysków.
- 1 punkt, jeśli hostuje już replikę woluminu; te wyniki są addytywne i zapewniają niewielkie preferencje dla węzłów z replikami woluminów lokalnych przy jednoczesnym przestrzeganiu innych kryteriów planowania.
- Ostateczna decyzja dotycząca planowania: harmonogram Kubernetes łączy domyślne wyniki z wynikami opartymi na koligacji usługi Azure Container Storage. Węzeł o najwyższym łącznym wyniku, równoważący zarówno preferencje usługi Azure Container Storage, jak i domyślną logikę platformy Kubernetes, jest wybierany do rozmieszczenia podów.
Kiedy należy używać funkcji Hyperconvergence
Uwaga: Następujące zagadnienia dotyczą tylko woluminów replikowanych, ponieważ woluminy niereplikowane zawsze używają funkcji hyperkonwergence domyślnie i nie można ich skonfigurować w inny sposób.
Rozważ włączenie funkcji hyperkonwergence dla replikowanych woluminów, gdy:
- Wysoka wydajność odczytu ma kluczowe znaczenie — utrzymywanie obciążeń i replik danych w tym samym węźle zmniejsza opóźnienie sieci i poprawia wydajność odczytu.
- Lokalność danych może znacząco wpłynąć na wydajność — aplikacje, które często odczytują z magazynu, korzystają z mniejszego transferu danych między węzłami.
Kiedy nie należy używać funkcji Hyperconvergence
Uwaga: Ta sekcja dotyczy tylko replikowanych woluminów, ponieważ funkcja hyperkonwergence jest zawsze wymuszana dla woluminów niereplikowanych.
Hiperkonwergencja może zwiększyć wydajność poprzez współlokowanie zadań z ich pamięcią, ale są sytuacje, w których nie jest to optymalne.
- Potencjalna nierównowaga zasobów: Chociaż sama hiperkonwergencja nie ogranicza liczby aplikacji na węźle, jeśli wiele obciążeń tworzy repliki na tym samym węźle i ten węzeł wyczerpie zasoby (procesor, pamięć lub przepustowość pamięci masowej), niektóre obciążenia mogą nie być w stanie się tam zaplanować. W rezultacie mogą one działać bez hiperkonwergentności, mimo że jest włączona.
Włączanie hiperkonwergence w usłudze Azure Container Storage
Funkcja hiperłączenia jest domyślnie włączona dla NVMe i tymczasowych pul pamięci dyskowej z tylko jedną repliką. Zapewnia to zoptymalizowaną lokalność danych i lepszą wydajność konfiguracji z jedną repliką. W przypadku konfiguracji z wieloma replikami funkcja hyperconvergence nie jest domyślnie włączona, ale można ją skonfigurować przy użyciu parametru hyperconverged w specyfikacji StoragePool.
Poniżej przedstawiono przykładowy szablon YAML umożliwiający włączenie hiperkonwergencji dla konfiguracji z wieloma replikami:
apiVersion: containerstorage.azure.com/v1
kind: StoragePool
metadata:
name: nvmedisk
namespace: acstor
spec:
poolType:
ephemeralDisk:
diskType: "nvme"
replicas: 3
hyperconverged: true
Rozszerzanie puli magazynów
Zasoby pamięci masowej wspierane przez lokalne NVMe można skalować szybko i bez przestojów. Zmniejszanie pul magazynów nie jest obecnie obsługiwane.
Ponieważ pula magazynowa na dysku efemerycznym używa lokalnych zasobów magazynowych w węzłach klastra AKS (maszyn wirtualnych), aby rozszerzyć pulę magazynową, należy dodać kolejny węzeł do klastra. Postępuj zgodnie z tymi instrukcjami, aby rozszerzyć pulę pamięci.
Wykonaj następujące polecenie, aby dodać węzeł do klastra AKS. Zastąp wartości
<cluster-name>,<nodepool name>i<resource-group-name>własnymi. Aby uzyskać nazwę puli węzłów, uruchom poleceniekubectl get nodes.az aks nodepool add --cluster-name <cluster name> --name <nodepool name> --resource-group <resource group> --node-vm-size Standard_L8s_v3 --node-count 1 --labels acstor.azure.com/io-engine=acstorUruchom polecenie
kubectl get nodesi zobaczysz, że węzeł został dodany do klastra.Uruchom
kubectl get sp -Ai powinieneś zauważyć, że pojemność puli pamięci masowej wzrosła.
Usuń pulę magazynów
Jeśli chcesz usunąć pulę magazynów, uruchom następujące polecenie. Zastąp <storage-pool-name> nazwą puli pamięci.
kubectl delete sp -n acstor <storage-pool-name>
Optymalizowanie wydajności podczas korzystania z lokalnego urządzenia NVMe
W zależności od wymagań dotyczących wydajności obciążenia można wybrać jedną z trzech różnych warstw wydajności: Podstawowa, Standardowa i Premium. Te warstwy oferują inny zakres IOPS, a wybór wpłynie na liczbę vCPU używanych przez składniki usługi Azure Container Storage w węzłach, gdzie jest zainstalowana. Standardowa to domyślna konfiguracja, jeśli nie zaktualizujesz warstwy wydajności.
Replikacja jednostrefowa
| Warstwa | Liczba procesorów wirtualnych | 100% odczytu IOPS | 100% IOPS zapisu |
|---|---|---|---|
Basic |
12,5% całkowitej liczby rdzeni maszyn wirtualnych | Do 120 000 | Do 45 000 |
Standard (domyślne) |
25% całkowitej liczby rdzeni maszyn wirtualnych | Do 220 000 | Do 90 000 |
Premium |
50% całkowitej liczby rdzeni maszyn wirtualnych | Do 550 000 | Do 180 000 |
Replikacja w wielu strefach
| Warstwa | Liczba procesorów wirtualnych | 100% odczytu IOPS | 100% IOPS zapisu |
|---|---|---|---|
Basic |
12,5% całkowitej liczby rdzeni maszyn wirtualnych | Do 120 000 | Do 45 000 |
Standard (domyślne) |
25% całkowitej liczby rdzeni maszyn wirtualnych | Do 220 000 | Do 90 000 |
Premium |
50% całkowitej liczby rdzeni maszyn wirtualnych | Do 550 000 | Do 180 000 |
Uwaga
Zużycie pamięci RAM i stron dużych rozmiarów pozostanie jednolite we wszystkich poziomach: 1 GiB pamięci RAM i 2 GiB stron dużych rozmiarów.
Po zidentyfikowaniu warstwy wydajności, która jest zgodna z twoimi potrzebami, możesz uruchomić następujące polecenie, aby zaktualizować warstwę wydajności instalacji usługi Azure Container Storage. Zastąp element <performance tier> podstawowym, standardowym lub premium.
az aks update -n <cluster-name> -g <resource-group> --enable-azure-container-storage <storage-pool-type> --ephemeral-disk-nvme-perf-tier <performance-tier>