Używanie usługi Azure Container Storage z dyskami zarządzanymi platformy Azure
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 używania dysków zarządzanych platformy Azure jako magazynu zaplecza dla obciążeń kubernetes. Na końcu będziesz mieć zasobnik, który używa dysków zarządzanych platformy Azure jako magazynu.
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.
- Aby korzystać z usługi Azure Container Storage z dyskami zarządzanymi platformy Azure, klaster usługi AKS musi mieć pulę węzłów z co najmniej trzema maszynami wirtualnymi ogólnego przeznaczenia, takimi jak standard_d4s_v5 dla węzłów klastra, z których każdy ma co najmniej cztery procesory wirtualne (procesory wirtualne).
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
Najpierw utwórz pulę magazynów, która jest logicznym grupowaniem magazynu dla klastra Kubernetes, definiując ją w pliku manifestu YAML.
Dostępne są następujące opcje tworzenia puli magazynów:
- Tworzenie dynamicznej puli magazynów
- Tworzenie wstępnie aprowizowanej puli magazynów przy użyciu wstępnie aprowizowania dysków zarządzanych platformy Azure
- Tworzenie dynamicznej puli magazynów przy użyciu własnego klucza szyfrowania (opcjonalnie)
Jeśli usługa Azure Container Storage została włączona przy użyciu poleceń az aks create
lub az aks update
, być może masz już pulę magazynów. Użyj polecenia kubectl get sp -n acstor
, aby uzyskać listę pul magazynów. Jeśli masz już dostępną pulę magazynów, której chcesz użyć, możesz pominąć ten krok i przejść do sekcji Wyświetlanie dostępnych klas magazynu.
Tworzenie dynamicznej puli magazynów
Wykonaj następujące kroki, aby utworzyć dynamiczną pulę magazynów dla usługi Azure Disks.
Użyj ulubionego edytora tekstów, aby utworzyć plik manifestu YAML, taki jak
code acstor-storagepool.yaml
.Wklej następujący kod. Wartość nazwy puli magazynów może być dowolna. W polu skuName określ poziom wydajności i nadmiarowości. Dopuszczalne wartości to Premium_LRS, Standard_LRS, StandardSSD_LRS, UltraSSD_LRS, Premium_ZRS, PremiumV2_LRS i StandardSSD_ZRS. W przypadku magazynu określ ilość miejsca do magazynowania dla puli w gi lub Ti.
apiVersion: containerstorage.azure.com/v1 kind: StoragePool metadata: name: azuredisk namespace: acstor spec: poolType: azureDisk: skuName: Premium_LRS resources: requests: storage: 1Ti
Jeśli używasz dysków UltraSSD_LRS lub PremiumV2_LRS, możesz ustawić operacje we/wy na sekundę i przepływność przy użyciu
IOPSReadWrite
parametrów iMBpsReadWrite
w definicji puli magazynów.IOPSReadWrite
odnosi się do liczby operacji we/wy na sekundę dozwolonych dla dysków SSD w warstwie Ultra i Dysków LRS w warstwie Premium w wersji 2. Aby uzyskać więcej informacji, zobacz Operacje we/wy na sekundę w warstwie Ultra Disk i Dyski SSD w warstwie Premium w wersji 2.MBpsReadWrite
odnosi się do przepustowości dozwolonej dla dysków SSD w warstwie Ultra i Dysków LRS w warstwie Premium w wersji 2. Mb/s odnosi się do milionów bajtów na sekundę (MB/s = 10^6 bajtów na sekundę). Aby uzyskać więcej informacji, zobacz Przepływność dysków Ultra Disk i Przepływność ssd w warstwie Premium w wersji 2.apiVersion: containerstorage.azure.com/v1 kind: StoragePool metadata: name: azuredisk namespace: acstor spec: poolType: azureDisk: skuName: PremiumV2_LRS iopsReadWrite: 5000 mbpsReadWrite: 200 resources: requests: storage: 1Ti
Zapisz plik manifestu YAML, a następnie zastosuj go, 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/azuredisk 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ść to azuredisk.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 . Teraz możesz wyświetlić dostępne klasy magazynu i utworzyć trwałe oświadczenie woluminu.
Tworzenie wstępnie aprowizowanej puli magazynów
Jeśli masz już aprowizowane dyski zarządzane platformy Azure, możesz utworzyć wstępnie aprowizowaną pulę magazynów przy użyciu tych dysków. Ponieważ dyski są już aprowidowane, nie musisz określać jednostki SKUName ani pojemności magazynu podczas tworzenia puli magazynów.
Wykonaj następujące kroki, aby utworzyć wstępnie aprowizowaną pulę magazynów dla usługi Azure Disks.
Zaloguj się w witrynie Azure Portal.
Dla każdego dysku, którego chcesz użyć, przejdź do dysku zarządzanego platformy Azure i wybierz pozycję Właściwości ustawień>. Skopiuj cały ciąg w obszarze Identyfikator zasobu i umieść go w pliku tekstowym.
Użyj ulubionego edytora tekstów, aby utworzyć plik manifestu YAML, taki jak
code acstor-storagepool.yaml
.Wklej następujący kod. Wartość nazwy puli magazynów może być dowolna. Zastąp
<resource-id>
element identyfikatorem zasobu każdego dysku zarządzanego. Zapisz plik.apiVersion: containerstorage.azure.com/v1 kind: StoragePool metadata: name: sp-preprovisioned namespace: acstor spec: poolType: azureDisk: disks: - reference <resource-id1> - reference <resource-id2>
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/sp-preprovisioned 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 wstępnie aprowizowana.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 . Teraz możesz wyświetlić dostępne klasy magazynu i utworzyć trwałe oświadczenie woluminu.
Tworzenie dynamicznej puli magazynów przy użyciu własnego klucza szyfrowania (opcjonalnie)
Wszystkie dane na koncie usługi Azure Storage są szyfrowane w spoczynku. Domyślnie dane są szyfrowane przy użyciu kluczy zarządzanych przez firmę Microsoft. Aby uzyskać większą kontrolę nad kluczami szyfrowania, możesz podać klucze zarządzane przez klienta podczas tworzenia puli magazynów w celu zaszyfrowania woluminów trwałych, które zostaną utworzone.
Aby użyć własnego klucza do szyfrowania po stronie serwera, musisz mieć usługę Azure Key Vault z kluczem. Usługa Key Vault powinna mieć włączoną ochronę przed przeczyszczeniem i musi korzystać z modelu uprawnień RBAC platformy Azure. Dowiedz się więcej o kluczach zarządzanych przez klienta w systemie Linux.
Podczas tworzenia puli magazynów należy zdefiniować parametry klucza zarządzanego przez klienta. Wymagane parametry szyfrowania CMK to:
- keyVersion określa wersję klucza do użycia
- keyName to nazwa klucza
- keyVaultUri to jednolity identyfikator zasobu usługi Azure Key Vault, na przykład
https://user.vault.azure.net
- Tożsamość określa tożsamość zarządzaną z dostępem do magazynu, na przykład
/subscriptions/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/resourcegroups/MC_user-acstor-westus2-rg_user-acstor-westus2_westus2/providers/Microsoft.ManagedIdentity/userAssignedIdentities/user-acstor-westus2-agentpool
Wykonaj następujące kroki, aby utworzyć pulę magazynów przy użyciu własnego klucza szyfrowania. Wszystkie woluminy trwałe utworzone z tej puli magazynów będą szyfrowane przy użyciu tego samego klucza.
Użyj ulubionego edytora tekstów, aby utworzyć plik manifestu YAML, taki jak
code acstor-storagepool-cmk.yaml
.Wklej następujący kod, podaj wymagane parametry i zapisz plik. Wartość nazwy puli magazynów może być dowolna. W polu skuName określ poziom wydajności i nadmiarowości. Dopuszczalne wartości to Premium_LRS, Standard_LRS, StandardSSD_LRS, UltraSSD_LRS, Premium_ZRS, PremiumV2_LRS i StandardSSD_ZRS. W przypadku magazynu określ ilość miejsca do magazynowania dla puli w gi lub Ti. Pamiętaj, aby podać parametry szyfrowania CMK.
apiVersion: containerstorage.azure.com/v1 kind: StoragePool metadata: name: azuredisk namespace: acstor spec: poolType: azureDisk: skuName: Premium_LRS encryption: { keyVersion: "<key-version>", keyName: "<key-name>", keyVaultUri: "<key-vault-uri>", identity: "<identity>" } resources: requests: storage: 1Ti
Zastosuj plik manifestu YAML, aby utworzyć pulę magazynów.
kubectl apply -f acstor-storagepool-cmk.yaml
Po zakończeniu tworzenia puli magazynów zostanie wyświetlony komunikat podobny do następującego:
storagepool.containerstorage.azure.com/azuredisk 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ść to azuredisk.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 magazynu podczas tworzenia trwałych oświadczeń woluminów i wdrażania woluminów trwałych.
Uruchom polecenie , kubectl get sc
aby wyświetlić dostępne klasy magazynu. Powinna zostać wyświetlona klasa magazynu o nazwie acstor-<storage-pool-name>
.
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: azurediskpvc spec: accessModes: - ReadWriteOnce storageClassName: acstor-azuredisk # replace with the name of your storage class if different resources: requests: storage: 100Gi
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/azurediskpvc created
Stan PCV można sprawdzić, uruchamiając następujące polecenie:
kubectl describe pvc azurediskpvc
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: azurediskpv persistentVolumeClaim: claimName: azurediskpvc containers: - name: fio image: nixery.dev/shell/fio args: - sleep - "1000000" volumeMounts: - mountPath: "/volume" name: azurediskpv
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 azurediskpvc
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 używający usługi Azure Disks jako magazynu i można go używać dla obciążeń Kubernetes.
Zarządzanie trwałymi woluminami i pulami magazynów
Teraz, po utworzeniu woluminu trwałego, możesz odłączyć go i ponownie dołączyć w razie potrzeby. Możesz również rozwinąć lub usunąć pulę magazynów.
Odłączanie i ponowne dołączanie woluminu trwałego
Aby odłączyć wolumin trwały, usuń zasobnik dołączony do woluminu trwałego. Zastąp <pod-name>
ciąg nazwą zasobnika, na przykład fiopod.
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 usługę Azure Disks można rozszerzać, aby szybko i bez przestojów skalować w górę. Zmniejszanie pul magazynów nie jest obecnie obsługiwane. Rozszerzanie puli magazynów nie jest obsługiwane w przypadku dysków w warstwie Ultra ani dysków SSD w warstwie Premium w wersji 2.
Uwaga
Rozszerzanie puli magazynów może zwiększyć koszty usług Azure Container Storage i Azure Disks. Zobacz stronę cennika usługi Azure Container Storage i Omówienie rozliczeń usługi Azure Container Storage.
Obecnie rozszerzenie puli magazynów ma następujące ograniczenie w przypadku korzystania z Premium_LRS
jednostek SKU , , Standard_LRS
StandardSSD_LRS
, Premium_ZRS
i StandardSSD_ZRS
:
- Jeśli istniejąca pula magazynów jest mniejsza niż 4 TiB (4096 GiB), można ją rozwinąć tylko do 4095 GiB. Aby uniknąć błędów, nie próbuj rozszerzać bieżącej puli magazynów poza 4095 GiB, jeśli początkowo jest mniejszy niż 4 TiB (4096 GiB). Pule > magazynu 4 TiB można rozszerzyć do maksymalnej dostępnej pojemności magazynu.
Postępuj zgodnie z tymi instrukcjami, aby rozwinąć istniejącą pulę magazynów dla usługi Azure Disks.
Za pomocą edytora tekstów otwórz plik manifestu YAML, który został użyty do utworzenia puli magazynów, na przykład
code acstor-storagepool.yaml
.Zastąp określony wpis magazynu w pliku manifestu YAML żądaną wartością. Ta wartość musi być większa niż bieżąca pojemność puli magazynów. Jeśli na przykład specyfikacja jest ustawiona na
storage: 1Ti
, zmień ją nastorage: 2Ti
. Jeśli utworzono wstępnie aprowizowaną pulę magazynów, nie będzie wpisu magazynu , ponieważ pula magazynów odziedziczyła rozmiar pojemności ze wstępnie aprowizowania dysków platformy Azure. Jeśli nie widzisz wpisu magazynu w yaML, dodaj następujący kod określający żądaną pojemność magazynu, a następnie zapisz plik manifestu:spec: resources: requests: storage: 2Ti
Uwaga
Jeśli masz dwa dyski w puli magazynów z pojemnością 1 TiB i edytujesz plik manifestu YAML, aby odczytać storage: 4Ti
, oba dyski zostaną rozwinięte do 2 TiB po zastosowaniu YAML, dając nową całkowitą pojemność 4 TiB.
Zastosuj plik manifestu YAML, aby rozwinąć pulę magazynów.
kubectl apply -f acstor-storagepool.yaml
Uruchom to polecenie, aby sprawdzić stan puli magazynów. Zastąp
<storage-pool-name>
wartość nazwą puli magazynów.kubectl describe sp <storage-pool-name> -n acstor
Powinien zostać wyświetlony komunikat podobny do "pula magazynów jest rozszerzana". Uruchom polecenie ponownie po kilku minutach, a komunikat powinien zniknąć.
Uruchom polecenie
kubectl get sp -A
, a pula magazynów powinna odzwierciedlać nowy rozmiar.
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>