Tworzenie i korzystanie z woluminu za pomocą usługi Azure Disks w usłudze Azure Kubernetes Service (AKS)
Wolumin trwały reprezentuje część magazynu aprowizowaną do użycia z zasobnikami Kubernetes. Można użyć woluminu trwałego z jednym lub wieloma zasobnikami i aprowizować go dynamicznie lub statycznie. W tym artykule pokazano, jak dynamicznie tworzyć woluminy trwałe za pomocą usługi Azure Disks w klastrze usługi Azure Kubernetes Service (AKS).
Uwaga
Dysk platformy Azure można instalować tylko za pomocą typu Tryb dostępu ReadWriteOnce, który udostępnia go jednemu węzłowi w usłudze AKS. Ten tryb dostępu nadal umożliwia wielu zasobnikom dostęp do woluminu, gdy zasobniki działają w tym samym węźle. Aby uzyskać więcej informacji, zobacz Tryby dostępu TrwałeVolume platformy Kubernetes.
W tym artykule pokazano, w jaki sposób wykonać następujące czynności:
- Współpracuj z dynamicznym woluminem trwałym (PV), instalując sterownik interfejsu magazynu kontenerów (CSI) i dynamicznie tworząc jeden lub więcej dysków zarządzanych platformy Azure w celu dołączenia do zasobnika.
- Praca ze statycznym serwerem pv przez utworzenie co najmniej jednego dysku zarządzanego platformy Azure lub użycie istniejącego dysku i dołączenie go do zasobnika.
Aby uzyskać więcej informacji na temat woluminów Kubernetes, zobacz Opcje magazynu dla aplikacji w usłudze AKS.
Zanim rozpoczniesz
Upewnij się, że masz zainstalowany i skonfigurowany interfejs wiersza polecenia platformy Azure w wersji 2.0.59 lub nowszej. Uruchom polecenie
az --version
, aby dowiedzieć się, jaka wersja jest używana. Jeśli konieczna będzie instalacja lub uaktualnienie, zobacz Instalowanie interfejsu wiersza polecenia platformy Azure.Sterownik CSI dysku platformy Azure ma limit woluminu na węzeł. Liczba woluminów zmienia się na podstawie rozmiaru puli węzłów/węzłów. Uruchom polecenie kubectl get, aby określić liczbę woluminów, które można przydzielić na węzeł:
kubectl get CSINode <nodename> -o yaml
Jeśli limit woluminu na węzeł jest problemem dla obciążenia, rozważ użycie usługi Azure Container Storage dla woluminów trwałych zamiast sterowników CSI.
Dynamiczne aprowizowania woluminu
Ta sekcja zawiera wskazówki dla administratorów klastra, którzy chcą aprowizować co najmniej jeden wolumin trwały, który zawiera szczegółowe informacje o usłudze Azure Disk Storage do użycia przez obciążenie. Trwałe oświadczenie woluminu (PVC) używa obiektu klasy magazynu do dynamicznej aprowizacji kontenera usługi Azure Disk Storage.
Parametry klasy magazynu dla dynamicznych woluminów trwałych
Poniższa tabela zawiera parametry, których można użyć do zdefiniowania niestandardowej klasy magazynu dla elementu PersistentVolumeClaim.
Nazwisko | Znaczenie | Dostępna wartość | Obowiązkowy | Domyślna wartość |
---|---|---|---|---|
skuName | Typ konta magazynu usługi Azure Disks (alias: storageAccountType ) |
Standard_LRS , Premium_LRS , , StandardSSD_LRS , PremiumV2_LRS , UltraSSD_LRS , , Premium_ZRS StandardSSD_ZRS |
Nie. | StandardSSD_LRS |
fsType | Typ systemu plików | ext4 , ext3 , , xfs ext2 , btrfs dla systemu Linux, ntfs dla systemu Windows |
Nie. | ext4 dla systemu Linux dla ntfs systemu Windows |
cachingMode | Ustawienie pamięci podręcznej hosta usługi Azure Data Disk (PremiumV2_LRS i UltraSSD_LRS obsługuje None tylko tryb buforowania) |
None , , ReadOnly ReadWrite |
Nie. | ReadOnly |
resourceGroup | Określanie grupy zasobów dla dysków platformy Azure | Nazwa istniejącej grupy zasobów | Nie. | Jeśli jest pusty, sterownik używa tej samej nazwy grupy zasobów co bieżący klaster usługi AKS |
DiskIOPSReadWrite | Dysk UltraSSD lub funkcja we/wy na sekundę SSD w warstwie Premium w wersji 2 (minimalna: 2 operacje we/wy na sekundę/giB) | 100~160000 | Nie. | 500 |
DiskMBpsReadWrite | Funkcja przepływności dysków UltraSSD lub SSD w warstwie Premium w wersji 2 (minimalna: 0,032/GiB) | 1~2000 | Nie. | 100 |
LogicalSectorSize | Rozmiar sektora logicznego w bajtach dla dysku w warstwie Ultra. Obsługiwane wartości to 512 ad 4096. Wartość domyślna to 4096. | 512 , 4096 |
Nie. | 4096 |
tags | Tagi dysków platformy Azure | Format tagu: key1=val1,key2=val2 |
Nie. | "" |
diskEncryptionSetID | ResourceId zestawu szyfrowania dysku, który ma być używany do włączania szyfrowania magazynowanych | format: /subscriptions/{subs-id}/resourceGroups/{rg-name}/providers/Microsoft.Compute/diskEncryptionSets/{diskEncryptionSet-name} |
Nie. | "" |
diskEncryptionType | Typ szyfrowania zestawu szyfrowania dysku. | EncryptionAtRestWithCustomerKey (domyślnie), EncryptionAtRestWithPlatformAndCustomerKeys |
Nie. | "" |
writeAcceleratorEnabled | Akcelerator zapisu na dyskach platformy Azure | true , false |
Nie. | "" |
networkAccessPolicy | Właściwość NetworkAccessPolicy, aby zapobiec generowaniu identyfikatora URI sygnatury dostępu współdzielonego dla dysku lub migawki | AllowAll , , DenyAll AllowPrivate |
Nie. | AllowAll |
diskAccessID | Identyfikator zasobu DiskAccess platformy Azure do korzystania z prywatnych punktów końcowych na dyskach | Nie. | `` | |
enableBursting | Włącz zwiększenie wydajności na żądanie poza aprowizowaną docelową wydajność dysku. Skalowanie na żądanie powinno być stosowane tylko do dysku w warstwie Premium i rozmiaru dysku > 512 GB. Dysk w warstwie Ultra i udostępniony nie jest obsługiwany. Skalowanie jest domyślnie wyłączone. | true , false |
Nie. | false |
useragent | Agent użytkownika używany do przypisywania użycia przez klienta | Nie. | Wygenerowany agent useragent sformatowany driverName/driverVersion compiler/version (OS-ARCH) |
|
identyfikator subskrypcji | Określ identyfikator subskrypcji platformy Azure, w którym są tworzone dyski platformy Azure. | Identyfikator subskrypcji Azure | Nie. | Jeśli nie jest pusty, resourceGroup należy podać. |
--- | Następujące parametry są przeznaczone tylko dla wersji 2 | --- | --- | --- |
maxShares | Całkowita liczba instalacji dysku udostępnionego dozwolona dla dysku. Ustawienie wartości na 2 lub więcej umożliwia repliki załączników. | Obsługiwane wartości zależą od rozmiaru dysku. Zobacz Udostępnianie dysku zarządzanego platformy Azure, aby uzyskać obsługiwane wartości. | Nie. | 1 |
maxMountReplicaCount | Liczba załączników replik do utrzymania. | Ta wartość musi znajdować się w zakresie [0..(maxShares - 1)] |
Nie. | Jeśli accessMode wartość to ReadWriteMany , wartość domyślna to 0 . W przeciwnym razie wartość domyślna to maxShares - 1 |
Wbudowane klasy magazynu
Klasy magazynu definiują sposób dynamicznego tworzenia jednostki magazynu przy użyciu woluminu trwałego. Aby uzyskać więcej informacji na temat klas magazynu Kubernetes, zobacz Klasy magazynu Kubernetes.
Każdy klaster usługi AKS zawiera cztery wstępnie utworzone klasy magazynu, z których dwie są skonfigurowane do pracy z dyskami platformy Azure:
- Domyślna klasa magazynu aprowizuje standardowy dysk SSD platformy Azure.
- Dyski SSD w warstwie Standardowa udostępniają magazyn w warstwie Standardowa i zapewniają ekonomiczny magazyn, jednocześnie zapewniając niezawodną wydajność.
- Klasa magazynu managed-csi-premium aprowizuje dysk platformy Azure w warstwie Premium.
- Dyski ssd o wysokiej wydajności i małych opóźnieniach są z powrotem dyski w warstwie Premium. Są one idealne dla maszyn wirtualnych z obciążeniami produkcyjnymi. Jeśli używasz sterownika CSI dysku platformy Azure w usłudze AKS, możesz również użyć
managed-csi
klasy magazynu, która jest wspierana przez magazyn lokalnie nadmiarowy SSD w warstwie Standardowa (LRS).
- Dyski ssd o wysokiej wydajności i małych opóźnieniach są z powrotem dyski w warstwie Premium. Są one idealne dla maszyn wirtualnych z obciążeniami produkcyjnymi. Jeśli używasz sterownika CSI dysku platformy Azure w usłudze AKS, możesz również użyć
- Począwszy od platformy Kubernetes w wersji 1.29, podczas wdrażania klastrów usługi Azure Kubernetes Service (AKS) w wielu strefach dostępności usługa AKS używa teraz magazynu strefowo nadmiarowego (ZRS) do tworzenia dysków zarządzanych w wbudowanych klasach magazynu.
- Magazyn ZRS zapewnia synchroniczną replikację dysków zarządzanych platformy Azure w wielu strefach dostępności platformy Azure w wybranym regionie. Ta strategia nadmiarowości zwiększa odporność aplikacji i zabezpiecza dane przed awariami centrum danych.
- Należy jednak pamiętać, że magazyn strefowo nadmiarowy (ZRS) jest bardziej kosztowny w porównaniu z magazynem lokalnie nadmiarowym (LRS). Jeśli optymalizacja kosztów jest priorytetem, możesz utworzyć nową klasę magazynu z parametrem nazwy jednostki SKU LRS i użyć jej w trwałym oświadczeniu woluminu.
Zmniejszenie rozmiaru PVC nie jest obsługiwane z powodu ryzyka utraty danych. Istniejącą klasę magazynu można edytować przy użyciu kubectl edit sc
polecenia lub utworzyć własną niestandardową klasę magazynu. Jeśli na przykład chcesz użyć dysku o rozmiarze 4 TiB, musisz utworzyć klasę magazynu, która definiuje cachingmode: None
, ponieważ buforowanie dysku nie jest obsługiwane dla dysków 4 TiB i większych. Aby uzyskać więcej informacji na temat klas magazynu i tworzenia własnej klasy magazynu, zobacz Opcje magazynu dla aplikacji w usłudze AKS.
Za pomocą kubectl get sc
polecenia można wyświetlić wstępnie utworzone klasy magazynu. W poniższym przykładzie przedstawiono wstępnie utworzone klasy magazynu dostępne w klastrze usługi AKS:
kubectl get sc
Dane wyjściowe polecenia przypominają następujący przykład:
NAME PROVISIONER AGE
default (default) disk.csi.azure.com 1h
managed-csi disk.csi.azure.com 1h
Uwaga
Oświadczenia trwałego woluminu są określone w giB, ale dyski zarządzane platformy Azure są rozliczane przez jednostkę SKU dla określonego rozmiaru. Te jednostki SKU wahają się od 32GiB dla dysków S4 lub P4 do 32TiB dla dysków S80 lub P80 (w wersji zapoznawczej). Wydajność przepływności i liczby operacji we/wy na sekundę dysku zarządzanego w warstwie Premium zależy zarówno od jednostki SKU, jak i rozmiaru wystąpienia węzłów w klastrze usługi AKS. Aby uzyskać więcej informacji, zobacz Cennik i wydajność dysków zarządzanych.
Tworzenie trwałego oświadczenia woluminu
Oświadczenie trwałego woluminu automatycznie aprowizuje magazyn na podstawie klasy magazynu. W takim przypadku pcV może użyć jednej ze wstępnie utworzonych klas magazynu do utworzenia dysku zarządzanego platformy Azure w warstwie Standardowa lub Premium.
Utwórz plik o nazwie
azure-pvc.yaml
i skopiuj go w następującym manifeście. Oświadczenie żąda dysku o rozmiarzeazure-managed-disk
5 GB z dostępem ReadWriteOnce . Klasa magazynu managed-csi jest określana jako klasa magazynu.apiVersion: v1 kind: PersistentVolumeClaim metadata: name: azure-managed-disk spec: accessModes: - ReadWriteOnce storageClassName: managed-csi resources: requests: storage: 5Gi
Napiwek
Aby utworzyć dysk korzystający z magazynu w warstwie Premium, użyj storageClassName: managed-csi-premium
zamiast zarządzanego pliku csi.
Utwórz oświadczenie trwałego woluminu
kubectl apply
przy użyciu polecenia i określ plik azure-pvc.yaml .kubectl apply -f azure-pvc.yaml
Dane wyjściowe polecenia przypominają następujący przykład:
persistentvolumeclaim/azure-managed-disk created
Używanie woluminu trwałego
Po utworzeniu trwałego oświadczenia woluminu należy sprawdzić, czy ma on stan Pending
. Stan Pending
wskazuje, że jest gotowy do użycia przez zasobnik.
Sprawdź stan PCV przy użyciu
kubectl describe pvc
polecenia .kubectl describe pvc azure-managed-disk
Dane wyjściowe polecenia przypominają następujący skrócony przykład:
Name: azure-managed-disk Namespace: default StorageClass: managed-csi Status: Pending [...]
Utwórz plik o nazwie
azure-pvc-disk.yaml
i skopiuj go w następującym manifeście. Ten manifest tworzy podstawowy zasobnik NGINX, który używa trwałego oświadczenia woluminu o nazwie azure-managed-disk do zainstalowania dysku platformy Azure w ścieżce/mnt/azure
. W przypadku kontenerów systemu Windows Server określ ścieżkę mountPath przy użyciu konwencji ścieżki systemu Windows, takiej jak "D:".kind: Pod apiVersion: v1 metadata: name: mypod spec: containers: - name: mypod image: mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine resources: requests: cpu: 100m memory: 128Mi limits: cpu: 250m memory: 256Mi volumeMounts: - mountPath: "/mnt/azure" name: volume readOnly: false volumes: - name: volume persistentVolumeClaim: claimName: azure-managed-disk
Utwórz zasobnik przy użyciu
kubectl apply
polecenia .kubectl apply -f azure-pvc-disk.yaml
Dane wyjściowe polecenia przypominają następujący przykład:
pod/mypod created
Masz teraz uruchomiony zasobnik z zainstalowanym dyskiem platformy
/mnt/azure
Azure w katalogu. Sprawdź konfigurację zasobnika przy użyciukubectl describe
polecenia .kubectl describe pod mypod
Dane wyjściowe polecenia przypominają następujący przykład:
[...] Volumes: volume: Type: PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace) ClaimName: azure-managed-disk ReadOnly: false default-token-smm2n: Type: Secret (a volume populated by a Secret) SecretName: default-token-smm2n Optional: false [...] Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal Scheduled 2m default-scheduler Successfully assigned mypod to aks-nodepool1-79590246-0 Normal SuccessfulMountVolume 2m kubelet, aks-nodepool1-79590246-0 MountVolume.SetUp succeeded for volume "default-token-smm2n" Normal SuccessfulMountVolume 1m kubelet, aks-nodepool1-79590246-0 MountVolume.SetUp succeeded for volume "pvc-faf0f176-8b8d-11e8-923b-deb28c58d242" [...]
Korzystanie z dysków w warstwie Ultra platformy Azure
Aby użyć dysku w warstwie Ultra platformy Azure, zobacz Używanie dysków w warstwie Ultra w usłudze Azure Kubernetes Service (AKS).
Korzystanie z tagów platformy Azure
Aby uzyskać więcej informacji na temat używania tagów platformy Azure, zobacz Używanie tagów platformy Azure w usłudze Azure Kubernetes Service (AKS).
Statyczna aprowizacja woluminu
Ta sekcja zawiera wskazówki dla administratorów klastra, którzy chcą utworzyć co najmniej jeden wolumin trwały zawierający szczegółowe informacje o dyskach platformy Azure do użycia przez obciążenie.
Statyczne parametry aprowizacji dla woluminu trwałego
Poniższa tabela zawiera parametry, których można użyć do zdefiniowania woluminu trwałego.
Nazwisko | Znaczenie | Dostępna wartość | Obowiązkowy | Domyślna wartość |
---|---|---|---|---|
volumeHandle | Identyfikator URI dysku platformy Azure | /subscriptions/{sub-id}/resourcegroups/{group-name}/providers/microsoft.compute/disks/{disk-id} |
Tak | Nie dotyczy |
volumeAttributes.fsType | Typ systemu plików | ext4 , ext3 , , xfs ext2 , btrfs dla systemu Linux, ntfs dla systemu Windows |
Nie. | ext4 dla systemu Linux dla ntfs systemu Windows |
volumeAttributes.partition | Numer partycji istniejącego dysku (obsługiwany tylko w systemie Linux) | 1 , , 2 3 |
Nie. | Puste (bez partycji) — upewnij się, że format partycji jest podobny -part1 |
volumeAttributes.cachingMode | Ustawienie pamięci podręcznej hosta dysku | None , , ReadOnly ReadWrite |
Nie. | ReadOnly |
Tworzenie dysku platformy Azure
Podczas tworzenia dysku platformy Azure do użycia z usługą AKS można utworzyć zasób dysku w grupie zasobów węzła. Takie podejście umożliwia klastrowi usługi AKS uzyskiwanie dostępu do zasobu dysku i zarządzanie nim. Jeśli zamiast tego utworzysz dysk w oddzielnej grupie zasobów, musisz przyznać tożsamości zarządzanej usługi Azure Kubernetes Service (AKS) dla klastra Contributor
rolę do grupy zasobów dysku.
Zidentyfikuj nazwę grupy zasobów przy użyciu
az aks show
polecenia i dodaj--query nodeResourceGroup
parametr .az aks show --resource-group myResourceGroup --name myAKSCluster --query nodeResourceGroup -o tsv
Dane wyjściowe polecenia przypominają następujący przykład:
MC_myResourceGroup_myAKSCluster_eastus
Utwórz dysk przy użyciu
az disk create
polecenia . Określ nazwę grupy zasobów węzła i nazwę zasobu dysku, na przykład myAKSDisk. Poniższy przykład tworzy dysk 20GiB i generuje identyfikator dysku po jego utworzeniu. Jeśli musisz utworzyć dysk do użycia z kontenerami systemu Windows Server, dodaj--os-type windows
parametr w celu poprawnego sformatowania dysku.az disk create \ --resource-group MC_myResourceGroup_myAKSCluster_eastus \ --name myAKSDisk \ --size-gb 20 \ --query id --output tsv
Uwaga
Opłaty za dyski platformy Azure są naliczane według jednostki SKU dla określonego rozmiaru. Te jednostki SKU wahają się od 32GiB dla dysków S4 lub P4 do 32TiB dla dysków S80 lub P80 (w wersji zapoznawczej). Wydajność przepływności i liczby operacji we/wy na sekundę dysku zarządzanego w warstwie Premium zależy zarówno od jednostki SKU, jak i rozmiaru wystąpienia węzłów w klastrze usługi AKS. Zobacz Cennik i wydajność Dyski zarządzane.
Identyfikator zasobu dysku jest wyświetlany po pomyślnym zakończeniu polecenia, jak pokazano w poniższych przykładowych danych wyjściowych. Identyfikator dysku służy do instalowania dysku w następnej sekcji.
/subscriptions/<subscriptionID>/resourceGroups/MC_myAKSCluster_myAKSCluster_eastus/providers/Microsoft.Compute/disks/myAKSDisk
Instalowanie dysku jako woluminu
Utwórz plik pv-azuredisk.yaml za pomocą elementu PersistentVolume. Zaktualizuj
volumeHandle
za pomocą identyfikatora zasobu dysku z poprzedniego kroku. W przypadku kontenerów systemu Windows Server określ ntfs parametru fsType.apiVersion: v1 kind: PersistentVolume metadata: annotations: pv.kubernetes.io/provisioned-by: disk.csi.azure.com name: pv-azuredisk spec: capacity: storage: 20Gi accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Retain storageClassName: managed-csi csi: driver: disk.csi.azure.com volumeHandle: /subscriptions/<subscriptionID>/resourceGroups/MC_myAKSCluster_myAKSCluster_eastus/providers/Microsoft.Compute/disks/myAKSDisk volumeAttributes: fsType: ext4
Utwórz plik pvc-azuredisk.yaml za pomocą elementu PersistentVolumeClaim, który używa elementu PersistentVolume.
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: pvc-azuredisk spec: accessModes: - ReadWriteOnce resources: requests: storage: 20Gi volumeName: pv-azuredisk storageClassName: managed-csi
Utwórz element PersistentVolume i PersistentVolumeClaim przy użyciu
kubectl apply
polecenia i odwołaj się do dwóch utworzonych plików YAML.kubectl apply -f pv-azuredisk.yaml kubectl apply -f pvc-azuredisk.yaml
Sprawdź, czy element PersistentVolumeClaim został utworzony i powiązany z elementem
kubectl get pvc
PersistentVolume przy użyciu polecenia .kubectl get pvc pvc-azuredisk
Dane wyjściowe polecenia przypominają następujący przykład:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE pvc-azuredisk Bound pv-azuredisk 20Gi RWO 5s
Utwórz plik azure-disk-pod.yaml, aby odwołać się do pliku PersistentVolumeClaim. W przypadku kontenerów systemu Windows Server określ ścieżkę mountPath przy użyciu konwencji ścieżki systemu Windows, takiej jak "D:".
apiVersion: v1 kind: Pod metadata: name: mypod spec: nodeSelector: kubernetes.io/os: linux containers: - image: mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine name: mypod resources: requests: cpu: 100m memory: 128Mi limits: cpu: 250m memory: 256Mi volumeMounts: - name: azure mountPath: /mnt/azure volumes: - name: azure persistentVolumeClaim: claimName: pvc-azuredisk
Zastosuj konfigurację i zainstaluj wolumin przy
kubectl apply
użyciu polecenia .kubectl apply -f azure-disk-pod.yaml
Czyszczenie zasobów
Gdy skończysz z zasobami utworzonymi w tym artykule, możesz je usunąć przy użyciu kubectl delete
polecenia .
# Remove the pod
kubectl delete -f azure-pvc-disk.yaml
# Remove the persistent volume claim
kubectl delete -f azure-pvc.yaml
Następne kroki
- Aby dowiedzieć się, jak używać sterownika CSI dla usługi Azure Disks Storage, zobacz Use Azure Disks Storage with CSI driver (Używanie magazynu dysków platformy Azure za pomocą sterownika CSI).
- Aby uzyskać informacje o skojarzonych najlepszych rozwiązaniach, zobacz Najlepsze rozwiązania dotyczące magazynu i tworzenia kopii zapasowych w usłudze AKS.
Azure Kubernetes Service