Używanie usługi Azure Container Storage w wersji zapoznawczej z lokalnymi urządzeniami NVMe i replikacją woluminów
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 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 jako jego magazynu. Replikacja kopiuje dane między woluminami w różnych węzłach i przywraca wolumin po utracie repliki, zapewniając odporność dysku efemerycznego.
Co to jest dysk efemeryczny?
Gdy aplikacja wymaga opóźnienia magazynu w milisekundach, możesz użyć efemerycznego dysku 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: NVMe i dysk SSD tymczasowy. NvMe jest przeznaczony do szybkiego transferu danych między magazynem a procesorem CPU. Wybierz urządzenie NVMe, gdy aplikacja wymaga większej liczby operacji we/wy na sekundę i przepływności niż dysk SSD tymczasowy lub jeśli obciążenie wymaga replikacji. Replikacja nie jest obecnie obsługiwana w przypadku dysków SSD tymczasowych.
Wymagania wstępne
Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto.
Ten artykuł wymaga najnowszej wersji (2.35.0 lub nowszej) interfejsu wiersza polecenia platformy Azure. Zobacz Jak zainstalować interfejs wiersza polecenia platformy Azure. Jeśli używasz środowiska powłoki Bash w usłudze Azure Cloud Shell, najnowsza wersja 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.
Potrzebny będzie klient wiersza polecenia platformy 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-cli
polecenie .Jeśli jeszcze nie zainstalowano usługi Azure Container Storage, postępuj zgodnie z instrukcjami w temacie Używanie usługi Azure Container Storage z usługą Azure Kubernetes Service.
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
Dysk efemeryczny jest dostępny tylko w niektórych typach maszyn wirtualnych. Jeśli planujesz używać lokalnego urządzenia NVMe, wymagana jest maszyna wirtualna zoptymalizowana pod kątem magazynu, taka jak standard_l8s_v3.
Możesz uruchomić następujące polecenie, aby uzyskać typ maszyny wirtualnej, który jest używany z pulą węzłów.
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 woluminów trwałych
Wykonaj następujące kroki, aby utworzyć i dołączyć wolumin trwały.
1. 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 usługi 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ść nazwy puli magazynów 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: 3
Zastosuj plik manifestu YAML, aby utworzyć pulę magazynów.
kubectl apply -f acstor-storagepool.yaml
Po zakończeniu tworzenia puli magazynów zostanie wyświetlony komunikat podobny do następującego:
storagepool.containerstorage.azure.com/ephemeraldisk-nvme created
Możesz również uruchomić to polecenie, aby sprawdzić stan puli magazynów. Zastąp
<storage-pool-name>
wartość nazwą puli magazynów. W tym przykładzie wartość będzie efemerycznadisk-nvme.kubectl describe sp <storage-pool-name> -n acstor
Po utworzeniu puli magazynów usługa Azure Container Storage utworzy klasę magazynu w Twoim imieniu przy użyciu konwencji acstor-<storage-pool-name>
nazewnictwa .
2. Wyświetlanie dostępnych klas 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 polecenie , 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 potrzebna do pracy w usłudze Azure Container Storage.
3. Tworzenie trwałego oświadczenia 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ć pcv przy użyciu nowej klasy magazynu.
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
name
może być dowolna.apiVersion: v1 kind: PersistentVolumeClaim metadata: name: ephemeralpvc spec: accessModes: - ReadWriteOnce storageClassName: acstor-ephemeraldisk-nvme # replace with the name of your storage class if different resources: requests: storage: 100Gi
Po zmianie rozmiaru magazynu woluminów upewnij się, że rozmiar jest mniejszy niż dostępna pojemność dysku efemerycznego 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.yaml
Powinny zostać wyświetlone dane wyjściowe podobne do poniższych:
persistentvolumeclaim/ephemeralpvc created
Stan PCV można sprawdzić, uruchamiając następujące polecenie:
kubectl describe pvc ephemeralpvc
Po utworzeniu pvc jest gotowy do użycia przez zasobnik.
4. Wdrażanie zasobnika i dołączanie woluminu trwałego
Utwórz zasobnik przy użyciu narzędzia Fio (elastycznego testera we/wy) na potrzeby testowania porównawczego i symulacji obciążenia oraz określ ścieżkę instalacji 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: ephemeralpv
Zastosuj plik manifestu YAML, aby wdrożyć zasobnik.
kubectl apply -f acstor-pod.yaml
Powinny zostać wyświetlone dane wyjściowe podobne do następujących:
pod/fiopod created
Sprawdź, czy zasobnik jest uruchomiony i czy oświadczenie trwałego woluminu zostało pomyślnie powiązane z zasobnikem:
kubectl describe pod fiopod kubectl describe pvc ephemeralpvc
Sprawdź testowanie fio, aby zobaczyć jego bieżący stan:
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 zasobnik, który korzysta z lokalnego urządzenia NVMe z replikacją woluminu i można go używać dla obciążeń Kubernetes.
Zarządzanie woluminami i pulami magazynów
W tej sekcji dowiesz się, jak sprawdzić dostępną pojemność dysku efemerycznego dla jednego węzła, jak odłączyć i ponownie dołączyć wolumin trwały oraz jak rozszerzyć lub usunąć pulę magazynów.
Sprawdzanie pojemności dysku efemerycznego węzła
Wolumin efemeryczny jest przydzielany w jednym węźle. Podczas konfigurowania rozmiaru woluminów efemerycznych rozmiar powinien być 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ń zasobnik dołączony do woluminu trwałego.
kubectl delete pods <pod-name>
Aby ponownie dołączyć wolumin trwały, po prostu odwołaj się do trwałej nazwy oświadczenia woluminu w pliku manifestu YAML zgodnie z opisem w temacie Wdrażanie zasobnika i dołączanie woluminu trwałego.
Aby sprawdzić, z którym woluminem trwałym jest powiązane oświadczenie woluminu trwałego, uruchom polecenie:
kubectl get pvc <persistent-volume-claim-name>
Rozszerzanie puli magazynów
Pule magazynów wspierane przez lokalne urządzenie NVMe można szybko i bez przestojów skalować w górę. Zmniejszanie pul magazynów nie jest obecnie obsługiwane.
Ponieważ pula magazynów wspierana przez dysk efemeryczny używa zasobów magazynu lokalnego w węzłach klastra usługi AKS (maszyn wirtualnych), rozszerzenie puli magazynów wymaga dodania innego węzła do klastra. Postępuj zgodnie z tymi instrukcjami, aby rozwinąć pulę magazynów.
Uruchom następujące polecenie, aby dodać węzeł do klastra usługi 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=acstor
Uruchom polecenie
kubectl get nodes
i zobaczysz, że węzeł został dodany do klastra.Uruchom polecenie
kubectl get sp -A
i zobaczysz, że pojemność puli magazynów wzrosła.
Usuwanie puli magazynów
Jeśli chcesz usunąć pulę magazynów, uruchom następujące polecenie. Zastąp <storage-pool-name>
ciąg nazwą puli magazynów.
kubectl delete sp -n acstor <storage-pool-name>
Zobacz też
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla