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.
Sterownik interfejsu CSI (Container Storage Interface) usługi Azure Blob Storage to sterownik zgodny ze specyfikacją CSI używany przez usługę Azure Kubernetes Service (AKS) do zarządzania cyklem życia usługi Azure Blob Storage. CSI jest standardem dotyczącym udostępniania dowolnych systemów przechowywania bloków i plików dla konteneryzowanych obciążeń w Kubernetes.
Dzięki wdrożeniu i użyciu interfejsu CSI usługa AKS może teraz zapisywać, wdrażać i iterować wtyczki, aby uwidocznić nowe lub ulepszać istniejące systemy magazynowania na platformie Kubernetes. Korzystanie ze sterowników CSI w usłudze AKS pozwala uniknąć konieczności modyfikowania podstawowego kodu Kubernetes i oczekiwania na jego cykle wydania.
Podczas montowania usługi Azure Blob Storage jako systemu plików w kontenerze lub podzie, umożliwia to korzystanie z magazynu obiektów blob z wieloma aplikacjami, które przetwarzają ogromne ilości niestrukturalnych danych. Przykład:
- Dane pliku dziennika
- Obrazy, dokumenty oraz wideo lub audio w transmisji strumieniowej
- Dane odzyskiwania po awarii
Aplikacje uzyskują dostęp do danych przechowywanych w usłudze Azure Blob Storage przy użyciu programu BlobFuse lub protokołu sieciowego systemu plików (NFS) 3.0. Przed wprowadzeniem sterownika CSI dla Azure Blob storage jedyną opcją było ręczne zainstalowanie nieobsługiwanego sterownika, aby uzyskać dostęp do Blob storage z aplikacji działającej na AKS. Gdy sterownik CSI usługi Azure Blob Storage jest włączony w usłudze AKS, istnieją dwie wbudowane klasy magazynu:
- azureblob-fuse-premium
- Azure Blob NFS Premium
Aby utworzyć klaster usługi AKS z obsługą sterowników CSI, zobacz Sterowniki CSI w usłudze AKS. Aby dowiedzieć się więcej o różnicach w dostępie między poszczególnymi typami magazynu platformy Azure przy użyciu protokołu NFS, zobacz Porównanie dostępu do usług Azure Files, Blob Storage i Azure NetApp Files z systemem plików NFS.
Sterownik interfejsu CSI (Container Storage Interface) usługi Azure Disks to sterownik zgodny ze specyfikacją CSI używany przez usługę Azure Kubernetes Service (AKS) do zarządzania cyklem życia usługi Azure Disk.
CSI jest standardem dotyczącym udostępniania dowolnych systemów przechowywania bloków i plików dla konteneryzowanych obciążeń w Kubernetes. Dzięki wdrożeniu i użyciu interfejsu CSI usługa AKS może teraz zapisywać, wdrażać i iterować wtyczki, aby uwidocznić nowe lub ulepszać istniejące systemy magazynowania na platformie Kubernetes. Korzystanie ze sterowników CSI w usłudze AKS pozwala uniknąć konieczności modyfikowania podstawowego kodu Kubernetes i oczekiwania na jego cykle wydania. Aby utworzyć klaster AKS z obsługą sterowników CSI, zobacz Włączanie sterownika CSI w usłudze AKS.
Aby uzyskać więcej informacji na temat woluminów Kubernetes, zapoznaj się z Opcjami magazynowania dla aplikacji w usłudze AKS.
Uwaga / Notatka
Sterowniki wewnątrzdrzewne odnoszą się do bieżących sterowników magazynu, które należą do podstawowego kodu Kubernetes, w odróżnieniu od nowych sterowników CSI, które pełnią rolę rozszerzeń.
Sterownik interfejsu CSI (Container Storage Interface) usługi Azure Files to sterownik zgodny ze specyfikacją CSI używany przez usługę Azure Kubernetes Service (AKS) do zarządzania cyklem życia udziałów plików platformy Azure. CSI jest standardem dotyczącym udostępniania dowolnych systemów przechowywania bloków i plików dla konteneryzowanych obciążeń w Kubernetes.
Dzięki wdrożeniu i użyciu interfejsu CSI usługa AKS może teraz zapisywać, wdrażać i iterować wtyczki, aby uwidocznić nowe lub ulepszać istniejące systemy magazynowania na platformie Kubernetes. Korzystanie ze sterowników CSI w usłudze AKS pozwala uniknąć konieczności modyfikowania podstawowego kodu Kubernetes i oczekiwania na jego cykle wydania.
Aby utworzyć klaster usługi AKS z obsługą sterowników CSI, zobacz Włączanie sterowników CSI w usłudze AKS.
Uwaga / Notatka
Sterowniki wbudowane odnoszą się do bieżących sterowników magazynu, które są częścią podstawowego kodu Kubernetes, w porównaniu z nowymi sterownikami CSI, które są pluginami.
Funkcje sterownika Azure CSI
Sterownik CSI usługi Azure Blob Storage obsługuje następujące funkcje:
- BlobFuse
- Protokół NFS 3.0
Oprócz funkcji wbudowanych sterowników, sterownik Azure Disk CSI obsługuje następujące funkcje:
Ulepszenia wydajności podczas dołączania i odłączania dysków współbieżnych
- Wbudowane sterowniki dołączają lub odłączają dyski sekwencyjnie, podczas gdy sterowniki CSI dołączają lub odłączają dyski partiami. W przypadku dołączania wielu dysków do jednego węzła występuje znaczna poprawa.
Obsługiwane są dyski SSD w warstwie Premium w wersji 1 i 2.
-
PremiumV2_LRSobsługuje tylko tryb buforowaniaNone
-
Obsługa dysków przechowywania strefowo nadmiarowego (ZRS)
-
Premium_ZRSobsługiwane sąStandardSSD_ZRStypy dysków. Dysk ZRS można zaplanować w strefie lub w węźle bez strefy, bez ograniczenia, że wolumin dysku powinien być kolokowany w tej samej strefie co dany węzeł. Aby uzyskać więcej informacji, w tym obsługiwane regiony, zobacz artykuł Magazyn strefowo nadmiarowy dla dysków zarządzanych.
-
Uwaga / Notatka
W zależności od używanej jednostki SKU maszyny wirtualnej sterownik CSI dysku platformy Azure może mieć limit woluminu na węzeł. W przypadku niektórych zaawansowanych maszyn wirtualnych (na przykład 16 rdzeni) limit wynosi 64 woluminy na węzeł. Aby zidentyfikować limit dla jednostki SKU maszyny wirtualnej, zapoznaj się z kolumną Maksymalna liczba dysków danych dla każdej oferowanej jednostki SKU maszyny wirtualnej. Aby uzyskać listę oferowanych jednostek SKU maszyn wirtualnych i ich odpowiednie szczegółowe limity pojemności, zobacz Rozmiary maszyn wirtualnych ogólnego przeznaczenia.
Wymagania wstępne
Musisz mieć zainstalowany i skonfigurowany interfejs wiersza polecenia platformy Azure w wersji 2.42 lub nowszej. Aby dowiedzieć się, jaka wersja jest używana, uruchom polecenie
az --version. Jeśli konieczna będzie instalacja lub uaktualnienie, zobacz Instalowanie interfejsu wiersza polecenia platformy Azure. Jeśli zainstalowano rozszerzenie interfejsu wiersza poleceniaaks-previewplatformy Azure, pamiętaj, aby zaktualizować rozszerzenie do najnowszej wersji, wywołując polecenieaz extension update --name aks-preview.Wykonaj następujące kroki, aby wyczyścić sterownik typu open source , jeśli wcześniej zainstalowano sterownik open source CSI Blob Storage w celu uzyskania dostępu do usługi Azure Blob Storage z klastra.
Tożsamość płaszczyzny sterowania klastrem usługi AKS (nazwa klastra usługi AKS) jest dodawana do roli Kontrybutor w sieci wirtualnej i grupie zabezpieczeń sieciowych.
Aby obsługiwać konto usługi [Azure Data Lake Storage Gen2][azure-datalake-storage-account] (ADLS) podczas korzystania z instalacji blobFuse, wykonaj następujące czynności:
- Aby utworzyć konto usługi ADLS przy użyciu sterownika w dynamicznej aprowizacji, określ
isHnsEnabled: "true"w parametrach klasy magazynu. - Aby umożliwić dostęp do konta usługi ADLS za pomocą programu BlobFuse w statycznej aprowizacji, należy określić opcję montowania
--use-adls=truew trwałym woluminie. - Jeśli zamierzasz włączyć konto magazynu z hierarchiczną przestrzenią nazw, istniejące woluminy trwałe (PV) powinny zostać ponownie zainstalowane z opcją
--use-adls=trueinstalacji.
- Aby utworzyć konto usługi ADLS przy użyciu sterownika w dynamicznej aprowizacji, określ
Domyślnie pamięć podręczna BlobFuse znajduje się w
/mntkatalogu . Jeśli jednostka SKU maszyny wirtualnej udostępnia dysk tymczasowy, katalog/mntjest montowany na dysku tymczasowym. Jeśli jednak jednostka SKU maszyny wirtualnej nie udostępnia dysku tymczasowego, katalog/mntjest zamontowany na dysku systemu operacyjnego, możesz ustawić opcję montowania--tmp-path=, aby określić inny katalog pamięci podręcznej.
Uwaga / Notatka
Jeśli serwer blobfuse-proxy nie jest włączony podczas instalacji sterownika open source, odinstalowanie sterownika typu open source zakłóca istniejące instalacje blobfuse. Jednak instalacja systemu plików NFS pozostaje nienaruszona.
Musisz mieć klaster AKS z włączonym sterownikiem dysku Azure CSI. Sterownik CSI jest domyślnie włączony w klastrach usługi AKS z uruchomioną platformą Kubernetes w wersji 1.21 lub nowszej.
Interfejs wiersza polecenia platformy Azure w wersji 2.37.0 lub nowszej jest zainstalowany i skonfigurowany. Uruchom
az --version, aby znaleźć wersję. Jeśli konieczna będzie instalacja lub uaktualnienie, zobacz Instalowanie interfejsu wiersza polecenia platformy Azure.kubectlNarzędzie wiersza polecenia jest zainstalowane i skonfigurowane do łączenia się z klastrem AKS.Klasa magazynu skonfigurowana do używania sterownika CSI dysku platformy Azure (
disk.csi.azure.com).Sterownik CSI dysku platformy Azure ma limit woluminu na węzeł. Liczba woluminów zmienia się w zależności od rozmiaru węzła lub puli 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 yamlJeśli limit woluminów na węzeł stanowi problem dla twojego obciążenia roboczego, rozważ użycie usługi Azure Container Storage do trwałego przechowywania danych zamiast sterowników CSI.
Wymagania ogólne:
Musisz mieć klaster AKS (Azure Kubernetes Service) z włączonym sterownikiem CSI Azure Files. Sterownik CSI usługi Azure Files jest domyślnie włączony w klastrach usługi AKS z uruchomioną platformą Kubernetes w wersji 1.21 lub nowszej.
Interfejs wiersza polecenia platformy Azure w wersji 2.37.0 lub nowszej jest zainstalowany i skonfigurowany. Aby sprawdzić wersję, uruchom polecenie
az --version. Jeśli konieczna będzie instalacja lub uaktualnienie, zobacz Instalowanie interfejsu wiersza polecenia platformy Azure.kubectlNarzędzie linii poleceń jest zainstalowane i skonfigurowane do łączenia się z klastrem AKS.Klasa magazynu skonfigurowana do używania sterownika CSI usługi Azure Files (
file.csi.azure.com).Podczas wybierania między udziałami plików w warstwie Standardowa i Premium, ważne jest, aby zrozumieć model udostępniania i wymagania oczekiwanego wzorca użycia, jaki planujesz zastosować w usłudze Azure Files. Aby uzyskać więcej informacji, zobacz Wybieranie warstwy wydajności usługi Azure Files na podstawie wzorców użycia.
Wymagania dotyczące udziału plików sieciowych (NFS):
Tożsamość płaszczyzny kontrolnej klastru AKS (nazwa klastru AKS) jest przypisywana do roli Kontrybutor w sieci wirtualnej i GrupieZabezpieczeńSieci.
Jednostka usługi lub tożsamość usługi zarządzanej (MSI) klastra usługi AKS musi zostać dodana do roli Współautor na koncie magazynu.
Wymagania dotyczące tożsamości zarządzanej:
Upewnij się, że tożsamość kubelet przypisana przez użytkownika ma przypisaną
Storage File Data SMB MI Adminrolę na koncie magazynu. Jeśli używasz własnego konta przechowywania, musisz przypisaćStorage File Data SMB MI Adminrolę do tożsamości Kubelet przypisanej użytkownikowi na tym koncie przechowywania.Jeśli sterownik CSI utworzy konto przechowywania, przyznaj rolę
Storage File Data SMB MI Admingrupie zasobów, w której znajduje się konto przechowywania.Jeśli używasz domyślnej, predefiniowanej tożsamości Kubelet przypisanej przez użytkownika, to już posiada wymaganą
Storage File Data SMB MI Adminrolę w grupie zasobów zarządzanego węzła.
Uwaga / Notatka
Sterownik CSI usługi Azure File zezwala tylko na instalowanie udziałów plików SMB przy użyciu uwierzytelniania opartego na kluczach (NTLM v2), dlatego nie obsługuje maksymalnego profilu zabezpieczeń ustawień udziału plików platformy Azure. Z drugiej strony instalowanie udziałów plików NFS nie wymaga uwierzytelniania opartego na kluczach.
Włączanie sterownika CSI w nowym lub istniejącym klastrze AKS
Za pomocą Azure CLI można włączyć sterownik CSI Blob Storage w nowym lub istniejącym klastrze AKS, zanim skonfigurujesz wolumen trwały do użycia przez zasobniki w klastrze.
Aby włączyć sterownik w nowym klastrze, dołącz parametr
--enable-blob-driverza pomocą poleceniaaz aks create, jak pokazano w poniższym przykładzie:az aks create \ --enable-blob-driver \ --name myAKSCluster \ --resource-group myResourceGroup \ --generate-ssh-keysAby włączyć sterownik w istniejącym klastrze, dołącz
--enable-blob-driverparametr za pomocą poleceniaaz aks updatejak pokazano w poniższym przykładzie:az aks update --enable-blob-driver --name myAKSCluster --resource-group myResourceGroup
Zostanie wyświetlony monit o potwierdzenie, że nie zainstalowano sterownika Blob CSI typu open source. Po potwierdzeniu wykonanie tej akcji może potrwać kilka minut. Po zakończeniu powinien być widoczny w danych wyjściowych stan włączenia sterownika w klastrze. Poniższy przykład przypomina sekcję wskazującą wyniki poprzedniego polecenia:
"storageProfile": {
"blobCsiDriver": {
"enabled": true
},
...
}
Wyłączanie sterownika CSI w istniejącym klastrze AKS
Za pomocą interfejsu wiersza polecenia platformy Azure można wyłączyć sterownik CSI usługi Blob Storage w istniejącym klastrze usługi AKS po usunięciu woluminu trwałego z klastra.
Aby wyłączyć sterownik w istniejącym klastrze, dołącz
--disable-blob-driverparametr za pomocą poleceniaaz aks update, jak pokazano w poniższym przykładzie:az aks update --disable-blob-driver --name myAKSCluster --resource-group myResourceGroup
Używanie woluminu trwałego na potrzeby magazynu
Kubernetes przypisuje wolumin trwały (PV) jako zasób magazynowy jednemu lub większej liczbie zasobników. Pamięci trwałe można aprowizować dynamicznie za pośrednictwem platformy Kubernetes lub statycznie jako administrator.
Jeśli wiele zasobników wymaga współbieżnego dostępu do tego samego woluminu magazynu, możesz użyć usługi Azure Blob Storage do nawiązania połączenia przy użyciu NFS lub BlobFuse. W tym artykule pokazujemy, jak dynamicznie utworzyć kontener Azure Blob Storage do wykorzystania przez wiele zasobników w klastrze AKS.
Aby uzyskać więcej informacji na temat woluminów Kubernetes, zapoznaj się z Opcjami magazynowania dla aplikacji w usłudze AKS.
W tym artykule pokazano, jak dynamicznie utworzyć sieć PV z dyskiem platformy Azure do użycia przez pojedynczy zasobnik w klastrze usługi AKS.
Jeśli wiele zasobników wymaga współbieżnego dostępu do tego samego wolumenu pamięci masowej, możesz użyć usługi Azure Files do nawiązania połączenia przy użyciu bloku komunikatów serwera (SMB) lub systemu plików sieciowych (NFS). W tym artykule pokazano, jak dynamicznie utworzyć udział Azure Files do wykorzystania przez wiele zasobników w klastrze AKS.
Dynamicznie aprowizowany wolumin: Użyj tego podejścia, jeśli chcesz, aby platforma Kubernetes automatycznie tworzyć zasoby magazynu i zarządzać nimi. Jest to idealne rozwiązanie w scenariuszach, w których potrzebujesz skalowania na żądanie, preferuj infrastrukturę jako kod i chcesz zminimalizować ręczne kroki konfiguracji.
Wolumin aprowizowany statycznie: Wybierz tę metodę, jeśli masz już konto usługi Azure Blob Storage lub kontener, którego chcesz użyć. Zapewnia większą kontrolę nad konfiguracją magazynu, dostępem i cyklem życia oraz jest odpowiedni, gdy konieczne jest nawiązanie połączenia z istniejącymi zasobami lub ponowne użycie magazynu w wielu klastrach lub obciążeniach.
Ta sekcja zawiera wskazówki dla administratorów klastra, którzy chcą aprowizować co najmniej jeden wolumin trwały, który zawiera szczegóły magazynu obiektów blob do użycia przez obciążenie. Żądanie utworzenia trwałego wolumenu (PVC) używa obiektu klasy pamięci do dynamicznego przydzielania kontenera usługi Azure Blob Storage.
Aby aprowizować wolumin trwały przy użyciu usługi Azure Blob Storage z podaną klasą magazynu, wykonaj następujące kroki:
StorageClassUtwórz manifest, zapisując następujący kod YAML w pliku o nazwieblob-fuse-sc.yaml:apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: blob-fuse provisioner: blob.csi.azure.com parameters: skuName: Premium_LRS # available values: Standard_LRS, Premium_LRS, Standard_GRS, Standard_RAGRS, Standard_ZRS, Premium_ZRS protocol: fuse2 networkEndpointType: privateEndpoint reclaimPolicy: Delete volumeBindingMode: Immediate allowVolumeExpansion: true mountOptions: - -o allow_other - --file-cache-timeout-in-seconds=120 - --use-attr-cache=true - --cancel-list-on-mount-seconds=10 # prevent billing charges on mounting - -o attr_timeout=120 - -o entry_timeout=120 - -o negative_timeout=120 - --log-level=LOG_WARNING # LOG_WARNING, LOG_INFO, LOG_DEBUG - --cache-size-mb=1000 # Default will be 80% of available memory, eviction will happen beyond specified value.Aby utworzyć klasę pamięci masowej w klastrze, zastosuj
StorageClass, uruchamiając następujące polecenie:kubectl apply -f blob-fuse-sc.yaml
Utwórz PVC przy użyciu wbudowanej klasy przechowywania
Klasa magazynu służy do definiowania sposobu tworzenia kontenera usługi Azure Blob Storage. Konto magazynu jest tworzone automatycznie w grupie zasobów węzła do użycia z klasą magazynu do przechowywania kontenera usługi Azure Blob Storage. Wybierz jedną z następujących jednostek SKU nadmiarowości pamięci masowej Azure dla skuName:
- Standard_LRS: Standardowa lokalna nadmiarowość przechowywania
- Premium_LRS: magazyn lokalnie nadmiarowy w warstwie Premium
- Standard_ZRS: magazyn strefowo nadmiarowy w warstwie Standardowa
- Premium_ZRS: magazyn strefowo nadmiarowy w warstwie Premium
- Standard_GRS: Standardowa pamięć geograficznie z nadmiarową dostępnością
- Standard_RAGRS: magazyn geograficznie nadmiarowy z dostępem do odczytu w warstwie Standardowa
Kiedy używasz sterowników CSI magazynu w usłudze AKS, dostępne są dwa inne wbudowane sterowniki StorageClasses, które korzystają z magazynu Azure Blob CSI.
Zasady odzyskiwania w obu klasach pamięci masowej zapewniają, że podstawowy magazyn obiektów Blob w Azure zostanie usunięty, gdy odpowiedni PV zostanie usunięty. Klasy pamięci masowej konfigurują również kontener, aby można go było rozszerzać domyślnie, ponieważ set allowVolumeExpansion parametr ma wartość true.
Uwaga / Notatka
Zmniejszanie woluminów trwałych nie jest obsługiwane.
Użyj polecenia kubectl get sc , aby wyświetlić klasy magazynu. W przedstawionym przykładzie pokazano dostępne klasy pamięci azureblob-fuse-premium i azureblob-nfs-premium w klastrze AKS.
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
azureblob-fuse-premium blob.csi.azure.com Delete Immediate true 23h
azureblob-nfs-premium blob.csi.azure.com Delete Immediate true 23h
Aby użyć tych klas magazynowania, utwórz PVC i odpowiedni pod, który do nich odwołuje i je wykorzystuje. PVC służy do automatycznego przydzielania zasobów dyskowych na podstawie klasy pamięci masowej. PVC można utworzyć przy użyciu jednej z wbudowanych klas pamięci masowej lub niestandardowej klasy pamięci masowej. Ten PVC tworzy kontener w usłudze Azure Blob Storage z określoną jednostką SKU, rozmiarem oraz protokołem. Podczas tworzenia definicji zasobnika określa się PVC w celu zażądania żądanej przestrzeni dyskowej.
Element PVC używa obiektu klasy magazynu do dynamicznego aprowizowania kontenera usługi Azure Blob Storage. Poniższy kod YAML może służyć do utworzenia 5 GB PVC z dostępem ReadWriteMany przy użyciu wbudowanej klasy przechowywania. Aby uzyskać więcej informacji na temat trybów dostępu, zobacz dokumentację dotyczącą trwałego woluminu Kubernetes .
Utwórz plik o nazwie
blob-nfs-pvc.yamli skopiuj następujący kod YAML:apiVersion: v1 kind: PersistentVolumeClaim metadata: name: azure-blob-storage spec: accessModes: - ReadWriteMany storageClassName: azureblob-nfs-premium resources: requests: storage: 5GiUtwórz element PVC za pomocą polecenia kubectl create :
kubectl create -f blob-nfs-pvc.yaml
Po zakończeniu zostanie utworzony kontener usługi Blob Storage. Możesz użyć polecenia kubectl get , aby wyświetlić stan PVC:
kubectl get pvc azure-blob-storage
Dane wyjściowe polecenia przypominają następujący przykład:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
azure-blob-storage Bound pvc-b88e36c5-c518-4d38-a5ee-337a7dda0a68 5Gi RWX azureblob-nfs-premium 92m
Zamontuj PCV
Poniższy kod YAML tworzy zasobnik, który używa magazynu azure-blob-storage PVC do zainstalowania usługi Azure Blob Storage w ścieżce /mnt/blob .
Utwórz plik o nazwie
blob-nfs-pvi skopiuj następujący kod YAML. Upewnij się, że claimName jest zgodny z PVC utworzonym w poprzednim kroku.kind: Pod apiVersion: v1 metadata: name: mypod spec: containers: - name: mypod image: mcr.microsoft.com/oss/nginx/nginx:1.17.3-alpine resources: requests: cpu: 100m memory: 128Mi limits: cpu: 250m memory: 256Mi volumeMounts: - mountPath: "/mnt/blob" name: volume readOnly: false volumes: - name: volume persistentVolumeClaim: claimName: azure-blob-storageUtwórz pod za pomocą polecenia kubectl apply
kubectl apply -f blob-nfs-pv.yamlPo uruchomieniu zasobnika uruchom następujące polecenie, aby utworzyć nowy plik o nazwie
test.txt.kubectl exec mypod -- touch /mnt/blob/test.txtAby sprawdzić, czy dysk jest poprawnie zainstalowany, uruchom następujące polecenie i sprawdź, czy plik jest widoczny
test.txtw danych wyjściowych:kubectl exec mypod -- ls /mnt/blobDane wyjściowe polecenia przypominają następujący przykład:
test.txt
Tworzenie niestandardowej klasy magazynu obiektów blob platformy Azure
Domyślne klasy magazynu odpowiadają najbardziej typowym scenariuszom, ale nie wszystkim. W niektórych przypadkach możesz chcieć dostosować własną klasę przechowywania z własnymi parametrami. W tej sekcji przedstawiono dwa przykłady z pierwszym przy użyciu protokołu NFS, a drugi przy użyciu narzędzia BlobFuse.
W tym przykładzie poniższy manifest konfiguruje instalowanie kontenera usługi Blob Storage przy użyciu protokołu NFS. Użyj go, aby dodać tags parametr .
Utwórz plik o nazwie
blob-nfs-sc.yamli wklej następujący przykładowy manifest:apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: azureblob-nfs-premium provisioner: blob.csi.azure.com parameters: protocol: nfs tags: environment=Development volumeBindingMode: Immediate allowVolumeExpansion: true mountOptions: - nconnect=4Utwórz klasę pamięci za pomocą polecenia kubectl apply
kubectl apply -f blob-nfs-sc.yamlDane wyjściowe polecenia przypominają następujący przykład:
storageclass.storage.k8s.io/blob-nfs-premium created
Instalowanie systemu plików NFS lub blobFuse PV
W tej sekcji zainstalujesz sieć PV przy użyciu protokołu NFS lub programu BlobFuse.
Instalowanie magazynu obiektów blob przy użyciu protokołu NFS w wersji 3 nie jest uwierzytelniane przy użyciu klucza konta. Klaster AKS musi znajdować się w tej samej lub równorzędnej sieci wirtualnej co węzeł agenta. Jedynym sposobem zabezpieczenia danych na koncie przechowywania jest użycie sieci wirtualnej i innych ustawień zabezpieczeń sieci. Aby uzyskać więcej informacji na temat konfigurowania dostępu systemu plików NFS do konta magazynu, zobacz Instalowanie usługi Blob Storage przy użyciu protokołu sieciowego systemu plików (NFS) 3.0.
W poniższym przykładzie pokazano, jak zainstalować kontener usługi Blob Storage jako wolumin trwały przy użyciu protokołu NFS.
Utwórz plik o nazwie
pv-blob-nfs.yamli skopiuj go w następującym języku YAML. W obszarzestorageClass, zaktualizujresourceGroup,storageAccount, icontainerName.Uwaga / Notatka
Wartość
volumeHandlew pliku YAML powinna być unikatowym identyfikatorem woluminu dla każdego kontenera obiektów blob, który jest identyczny w klastrze.Znaki
#i/są zastrzeżone do użytku wewnętrznego i nie można ich używać.apiVersion: v1 kind: PersistentVolume metadata: annotations: pv.kubernetes.io/provisioned-by: blob.csi.azure.com name: pv-blob spec: capacity: storage: 1Pi accessModes: - ReadWriteMany persistentVolumeReclaimPolicy: Retain # If set as "Delete" container would be removed after pvc deletion storageClassName: azureblob-nfs-premium mountOptions: - nconnect=4 csi: driver: blob.csi.azure.com # make sure volumeid is unique for every identical storage blob container in the cluster # character `#` and `/` are reserved for internal use and cannot be used in volumehandle volumeHandle: account-name_container-name volumeAttributes: resourceGroup: resourceGroupName storageAccount: storageAccountName containerName: containerName protocol: nfsUwaga / Notatka
Chociaż atrybut pojemnościinterfejsu API platformy Kubernetes jest obowiązkowy, ta wartość nie jest używana przez sterownik CSI usługi Azure Blob Storage, ponieważ można elastycznie zapisywać dane do momentu osiągnięcia limitu pojemności konta magazynu. Wartość atrybutu
capacityjest używana tylko do dopasowywania rozmiaru między PVs i PVCs. Zalecamy użycie fikcyjnej wysokiej wartości. Pod widzi zamontowany wolumin o fikcyjnym rozmiarze 5 Petabajtów.Uruchom następujące polecenie, aby utworzyć wolumin trwały przy użyciu polecenia kubectl create odwołującego się do utworzonego wcześniej pliku YAML:
kubectl create -f pv-blob-nfs.yamlpvc-blob-nfs.yamlUtwórz plik za pomocą elementu PersistentVolumeClaim. Przykład:kind: PersistentVolumeClaim apiVersion: v1 metadata: name: pvc-blob spec: accessModes: - ReadWriteMany resources: requests: storage: 10Gi volumeName: pv-blob storageClassName: azureblob-nfs-premiumUruchom następujące polecenie, aby utworzyć żądanie trwałego woluminu używając polecenia kubectl create, odwołując się do wcześniej utworzonego pliku YAML.
kubectl create -f pvc-blob-nfs.yaml
Utwórz zasobnik
Poniższy kod YAML tworzy zbiornik, który używa wcześniej utworzonego PV lub PVC o nazwie pvc-blob, aby zamontować magazyn Azure Blob w ścieżce /mnt/blob.
Utwórz plik o nazwie
nginx-pod-blob.yamli skopiuj go w następującym pliku YAML. Upewnij się, że claimName jest zgodny z elementem PVC utworzonym w poprzednim kroku podczas tworzenia PV dla NFS lub BlobFuse.kind: Pod apiVersion: v1 metadata: name: nginx-blob spec: nodeSelector: "kubernetes.io/os": linux containers: - image: mcr.microsoft.com/oss/nginx/nginx:1.17.3-alpine name: nginx-blob volumeMounts: - name: blob01 mountPath: "/mnt/blob" readOnly: false volumes: - name: blob01 persistentVolumeClaim: claimName: pvc-blobUruchom następujące polecenie, aby utworzyć poda i zamontować PVC przy użyciu polecenia kubectl create:
kubectl create -f nginx-pod-blob.yamlUruchom następujące polecenie, aby utworzyć interaktywną sesję powłoki z pod, aby sprawdzić, czy magazyn blob jest zamontowany.
kubectl exec -it nginx-blob -- df -hDane wyjściowe polecenia przypominają następujący przykład:
Filesystem Size Used Avail Use% Mounted on ... blobfuse 14G 41M 13G 1% /mnt/blob ...
Utwórz zestaw stanowy
Aby upewnić się, że obciążenie robocze zachowuje swoją objętość pamięci pomimo ponownego uruchamiania lub wymiany zasobników, użyj StatefulSet. StatefulSets upraszczają proces kojarzenia trwałej pamięci z zasobnikami, dzięki czemu nowe zasobniki utworzone w celu zastąpienia tych, które zakończyły się niepowodzeniem, mogą automatycznie uzyskiwać dostęp do tych samych woluminów. W poniższych przykładach pokazano, jak skonfigurować zestaw stanowy dla usługi Blob Storage przy użyciu narzędzia BlobFuse lub protokołu NFS.
Utwórz plik o nazwie
azure-blob-nfs-ss.yamli skopiuj go w następującym języku YAML.apiVersion: apps/v1 kind: StatefulSet metadata: name: statefulset-blob-nfs labels: app: nginx spec: serviceName: statefulset-blob-nfs replicas: 1 template: metadata: labels: app: nginx spec: nodeSelector: "kubernetes.io/os": linux containers: - name: statefulset-blob-nfs image: mcr.microsoft.com/azurelinux/base/nginx:1.25 volumeMounts: - name: persistent-storage mountPath: /mnt/blob updateStrategy: type: RollingUpdate selector: matchLabels: app: nginx volumeClaimTemplates: - metadata: name: persistent-storage spec: storageClassName: azureblob-nfs-premium accessModes: ["ReadWriteMany"] resources: requests: storage: 100GiUtwórz element StatefulSet za pomocą polecenia
kubectl create.kubectl create -f azure-blob-nfs-ss.yaml
Dynamiczne parametry klasy przechowywania PVC
Poniższa tabela zawiera parametry, których można użyć do zdefiniowania niestandardowej klasy magazynu dynamicznego PVC.
| Name | Description | Example | Mandatory | Wartość domyślna |
|---|---|---|---|---|
| skuName | Określ typ konta usługi Azure Storage (alias: storageAccountType). |
Standard_LRS, , Premium_LRS, , Standard_GRSStandard_RAGRS |
Nie. | Standard_LRS |
| lokalizacja | Określ lokalizację platformy Azure. | eastus |
Nie. | Jeśli jest pusty, sterownik używa tej samej nazwy lokalizacji co bieżący klaster. |
| resourceGroup | Określ nazwę grupy zasobów platformy Azure. | myResourceGroup | Nie. | Jeśli jest pusty, sterownik używa tej samej nazwy grupy zasobów co bieżący klaster. |
| storageAccount | Określ nazwę konta usługi Azure Storage. | nazwaKontaPrzechowywania | Nie. | Jeśli określona nazwa konta magazynu nie zostanie podana, sterownik szuka odpowiedniego konta magazynu zgodnego z ustawieniami konta w tej samej grupie zasobów. Jeśli nie można odnaleźć pasującego konta przechowywania, zostanie utworzone nowe. Jeśli jednak zostanie określona nazwa konta magazynu, konto magazynu musi już istnieć. |
| networkEndpointType 1 | Określ typ punktu końcowego sieci dla konta magazynu utworzonego przez sterownik. Jeśli określono prywatny punkt końcowy, dla konta magazynowego zostanie utworzony prywatny punkt końcowy. W innych przypadkach punkt końcowy usługi jest tworzony dla protokołu NFS. | privateEndpoint |
Nie. | W przypadku klastra AKS dodaj nazwę klastra AKS do roli Współtwórca w grupie zasobów hostującej sieć wirtualną. |
| protokół | Określ metodę montowania BlobFuse lub NFSv3. |
fuse, nfs |
Nie. | fuse |
| containerName | Określ istniejącą nazwę kontenera (katalogu). | kontener | Nie. | Jeśli jest pusty, sterownik tworzy nową nazwę kontenera, zaczynając od pvc-fuse dla programu BlobFuse lub pvc-nfs NFS w wersji 3. |
| containerNamePrefix | Określ prefiks katalogu usługi Azure Storage utworzony przez sterownik. | mój | Nie. | Może zawierać tylko małe litery, cyfry, łączniki i długość powinny być mniejsze niż 21 znaków. |
| serwer | Określ nazwę domeny konta usługi Azure Storage. | Istniejąca nazwa domeny DNS konta magazynu, na przykład <storage-account>.blob.core.windows.net. |
Nie. | Jeśli jest pusty, sterownik używa domyślnej <storage-account>.blob.core.windows.net lub innej suwerennej nazwy domeny DNS konta magazynu w chmurze. |
| allowBlobPublicAccess | Zezwól lub odmów publicznego dostępu do wszystkich obiektów blob lub kontenerów dla konta magazynowego utworzonego przez sterownik. |
true,false |
Nie. | false |
| storageEndpointSuffix | Określ sufiks punktu końcowego usługi Azure Storage. | core.windows.net |
Nie. | Jeśli jest pusty, sterownik używa domyślnego sufiksu punktu końcowego przechowywania zgodnie ze środowiskiem chmury. |
| tags | [Tagi][az-tags] zostaną utworzone na nowym koncie magazynowym. | Format tagu: "foo=aaa,bar=bbb" | Nie. | "" |
| matchTags | Dopasuj tagi, gdy sterownik próbuje znaleźć odpowiednie konto magazynu. |
true,false |
Nie. | false |
1 Jeśli konto magazynu jest tworzone przez sterownik, wystarczy określić networkEndpointType: privateEndpoint parametr w klasie magazynu. Sterownik CSI tworzy prywatny punkt końcowy i prywatną strefę DNS (o nazwie privatelink.blob.core.windows.net) wraz z kontem. Jeśli używasz własnego konta magazynu, musisz utworzyć prywatny punkt końcowy dla konta magazynu. Jeśli używasz usługi Azure Blob Storage w izolowanym klastrze sieciowym, musisz utworzyć niestandardową klasę magazynu za pomocą polecenia networkEndpointType: privateEndpoint.
Statyczne parametry przydziału PV
Poniższa tabela zawiera parametry, których można użyć do zdefiniowania statycznego PV.
| Name | Description | Example | Mandatory | Wartość domyślna |
|---|---|---|---|---|
| volumeHandle | Określ wartość, która może być używana przez sterownik do unikatowego identyfikowania kontenera obiektów blob magazynu w klastrze. | Zalecanym sposobem utworzenia unikatowej wartości jest połączenie globalnie unikatowej nazwy konta magazynu i nazwy kontenera: {account-name}_{container-name}. Znaki # i / są zarezerwowane do użytku wewnętrznego i nie mogą być używane w uchwycie woluminu. |
Tak | |
| volumeAttributes.resourceGroup | Określ nazwę grupy zasobów platformy Azure. | myResourceGroup | Nie. | Jeśli jest pusty, sterownik używa tej samej nazwy grupy zasobów co bieżący klaster. |
| volumeAttributes.storageAccount | Określ istniejącą nazwę konta usługi Azure Storage. | nazwaKontaPrzechowywania | Tak | |
| volumeAttributes.containerName | Określ istniejącą nazwę kontenera. | kontener | Tak | |
| volumeAttributes.protocol | Określ montowanie BlobFuse lub montowanie NFS v3. |
fuse, nfs |
Nie. | fuse |
Tworzenie dysków trwałych Azure przy użyciu wbudowanych klas magazynowania
Klasa magazynu służy do definiowania sposobu dynamicznego tworzenia jednostki magazynu za pomocą pv. Aby uzyskać więcej informacji na temat klas magazynu Kubernetes, zobacz Klasy magazynu Kubernetes.
Jeśli używasz sterownika Azure Disk CSI w usłudze AKS, są jeszcze dwa wbudowane moduły, które korzystają ze sterownika magazynu Azure Disk CSI. Inne klasy magazynu CSI są tworzone obok klas magazynu domyślnie wbudowanych w klaster.
managed-csi: tworzy dyski zarządzane przy użyciu dysków SSD w warstwie Standardowa platformy Azure z magazynem lokalnie nadmiarowym (LRS). W przypadku wersji 1.29 Kubernetes dla klastrów AKS wdrożonych w wielu strefach dostępności, ta klasa magazynu używa Azure Standard SSD z magazynem strefowo nadmiarowym (ZRS) do tworzenia zarządzanych dysków.managed-csi-premium: Tworzy dyski zarządzane przy użyciu Azure Premium LRS. Począwszy od platformy Kubernetes w wersji 1.29, w przypadku klastrów usługi AKS obejmujących wiele stref dostępności ta klasa magazynu automatycznie używa usługi Azure Premium ZRS do tworzenia dysków zarządzanych.
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.
ZRS zapewnia synchroniczną replikację zarządzanych dysków Azure w wielu strefach dostępności 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][disk-host-cache-setting]. Aby uzyskać więcej informacji na temat klas magazynu i tworzenia własnej klasy magazynu, zobacz Opcje magazynu dla aplikacji w usłudze AKS.
Zasady odzyskiwania w obu klasach magazynowych zapewniają, że bazowe dyski Azure zostaną usunięte po usunięciu odpowiedniego PV. Klasy przechowywania konfigurują również woluminy PV, aby można je było rozszerzać. Wystarczy edytować PVC do nowego rozmiaru.
Aby użyć tych klas magazynowania, utwórz PVC oraz odpowiedni pod, który je wykorzystuje. PVC służy do automatycznego przydzielania pamięci na podstawie klasy pamięci. Dla utworzenia dysku zarządzanego platformy Azure dla żądanej jednostki SKU i rozmiaru, PVC może użyć jednej z predefiniowanych klas magazynu lub klasy magazynu zdefiniowanej przez użytkownika. Podczas tworzenia definicji zasobnika określa się PVC w celu zażądania żądanej przestrzeni dyskowej.
Uwaga / Notatka
Żądania wolumenów trwałych są określone w GiB, ale dyski zarządzane platformy Azure są rozliczane na podstawie SKU dla konkretnego 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.
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
PVC automatycznie przydziela pamięć masową na podstawie klasy pamięci masowej. W takim przypadku PVC 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.yamli skopiuj go w następującym manifeście. Oświadczenie żąda dysku o nazwieazure-managed-disko rozmiarze5 GBz dostępemReadWriteOnce. Klasa przechowywania managed-csi jest określona jako klasa przechowywania.apiVersion: v1 kind: PersistentVolumeClaim metadata: name: azure-managed-disk spec: accessModes: - ReadWriteOnce storageClassName: managed-csi resources: requests: storage: 5GiWskazówka
Aby utworzyć dysk korzystający z magazynu w warstwie Premium, użyj
storageClassName: managed-csi-premiumzamiast managed-csi.Utwórz żądanie trwałego woluminu za pomocą polecenia
kubectl applyi określ plik azure-pvc.yaml.kubectl apply -f azure-pvc.yamlDane wyjściowe polecenia przypominają następujący przykład:
persistentvolumeclaim/azure-managed-disk created
Zastosowanie PVC do poda
Po utworzeniu żądania trwałego woluminu należy upewnić się, że ma on stan Pending. Stan Pending wskazuje, że jest gotowy do użycia przez zasobnik.
Zweryfikuj status PVC za pomocą polecenia
kubectl describe pvc.kubectl describe pvc azure-managed-diskDane 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.yamli skopiuj go w następującym manifeście. Ten manifest tworzy podstawowy pod NGINX, który używa żądania trwałego woluminu o nazwieazure-managed-diskdo zamontowania dysku Azure na ścieżce/mnt/azure. W przypadku kontenerów systemu Windows Server określ konwencjęmountPathścieżki systemu Windows, taką 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-diskUtwórz pod przy użyciu polecenia
kubectl apply.kubectl apply -f azure-pvc-disk.yamlDane wyjściowe polecenia przypominają następujący przykład:
pod/mypod createdMasz teraz uruchomiony zasobnik z zamontowanym dyskiem
/mnt/azureAzure w katalogu. Sprawdź konfigurację zasobnika za pomocą poleceniakubectl describe.kubectl describe pod mypodDane 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" [...]
Dynamiczne parametry klasy magazynu dla kontrolerów PVC
Poniższa tabela zawiera parametry, których możesz użyć do zdefiniowania niestandardowej klasy pamięci masowej dla Twoich PVC.
| Name | Meaning | Dostępna wartość | Mandatory | Wartość domyślna |
|---|---|---|---|---|
| skuName | Typ konta magazynowania usługi Azure Disks (alias: storageAccountType) |
Standard_LRS, Premium_LRS, , StandardSSD_LRS, PremiumV2_LRS, UltraSSD_LRS, , Premium_ZRSStandardSSD_ZRS |
Nie. | StandardSSD_LRS |
| fsType | Typ systemu plików |
ext4, ext3, , ext2xfs, btrfs dla systemu Linux, ntfs dla systemu Windows |
Nie. |
ext4 dla systemu Linux, ntfs dla systemu Windows |
| cachingMode | [Ustawienie pamięci podręcznej hosta dysku danych platformy Azure][disk-host-cache-setting](PremiumV2_LRS i UltraSSD_LRS obsługują None tylko tryb buforowania) |
None, ReadOnlyReadWrite |
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][ultra-ssd-disks] lub [Dysk SSD w warstwie Premium v2][premiumv2_lrs_disks] możliwości IOPS (minimum: 2 IOPS/GiB) | 100~160000 | Nie. | 500 |
| DiskMBpsReadWrite | [UltraSSD][ultra-ssd-disks] lub [Premium SSD v2][premiumv2_lrs_disks] Przepustowość (minimum: 0,032/GiB) | 1~2000 | Nie. | 100 |
| Rozmiar logicznego sektora | Rozmiar sektora logicznego w bajtach dla dysku ultra. Obsługiwane wartości to 512 ad 4096. Wartość domyślna to 4096. |
512, 4096 |
Nie. | 4096 |
| tags | Dysk Azure [tagi][azure-tags] | Format tagu: key1=val1,key2=val2 |
Nie. | "" |
| diskEncryptionSetID | ResourceId zestawu szyfrowania dysku do użycia w celu [włączenia szyfrowania danych w spoczynku][szyfrowanie dysków] | Formacie: /subscriptions/{subs-id}/resourceGroups/{rg-name}/providers/Microsoft.Compute/diskEncryptionSets/{diskEncryptionSet-name} |
Nie. | "" |
| typ szyfrowania dysku | Typ szyfrowania zestawu szyfrowania dysku. |
EncryptionAtRestWithCustomerKey (domyślnie), EncryptionAtRestWithPlatformAndCustomerKeys |
Nie. | "" |
| przyspieszaczZapisuWłączony | [Akcelerator zapisu na dyskach platformy Azure][azure-disk-write-accelerator] |
true, false |
Nie. | "" |
| polityka dostępu do sieci | Właściwość NetworkAccessPolicy, której celem jest zapobieganie utworzeniu sygnatury dostępu współdzielonego (SAS) identyfikatora URI dla dysku lub migawki. |
AllowAll, DenyAllAllowPrivate |
Nie. | AllowAll |
| ID dostępu do dysku | Identyfikator zasobu DiskAccess platformy Azure do korzystania z prywatnych punktów końcowych na dyskach | Nie. | `` | |
| Włączanie Bursting | [Włącz skalowanie na żądanie][on-demand-bursting] poza aprowizowany cel wydajności dysku. Skalowanie na żądanie powinno być stosowane tylko do dysku w warstwie Premium i rozmiaru dysku > 512 GB. Dyski Ultra i udostępniane nie są obsługiwane. "Wyburzanie jest domyślnie wyłączone." |
true, false |
Nie. | false |
| userAgent | User agent służy do [przypisania użycia klienta][customer-usage-attribution] | Nie. | Wygenerowany agent użytkownika jest sformatowany jako driverName/driverVersion compiler/version (OS-ARCH) |
|
| subscriptionID | 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ć. |
Statyczne parametry provisioningu dla PV
Poniższa tabela zawiera parametry, których można użyć do zdefiniowania pv.
| Name | Meaning | Dostępna wartość | Mandatory | Wartość domyślna |
|---|---|---|---|---|
| volumeHandle | URI dysku Azure | /subscriptions/{sub-id}/resourcegroups/{group-name}/providers/microsoft.compute/disks/{disk-id} |
Tak | N/A |
| volumeAttributes.fsType | Typ systemu plików |
ext4, ext3, , ext2xfs, btrfs dla systemu Linux, ntfs dla systemu Windows |
Nie. |
ext4 dla systemu Linux, ntfs dla systemu Windows |
| volumeAttributes.partition | Numer partycji istniejącego dysku (obsługiwany tylko w systemie Linux) |
1, 23 |
Nie. | Puste (bez partycji) — upewnij się, że format partycji jest podobny -part1 |
| volumeAttributes.cachingMode (atrybuty wolumenu: tryb buforowania) | [Ustawienie pamięci podręcznej hosta dysku][disk-host-cache-setting] |
None, ReadOnlyReadWrite |
Nie. | ReadOnly |
Tworzenie niestandardowej klasy magazynowania dysku platformy Azure
Domyślne klasy magazynu są odpowiednie dla najbardziej typowych scenariuszy. W niektórych przypadkach możesz chcieć dostosować klasę przechowywania do swoich preferencji, używając własnych parametrów. Na przykład możesz zmienić klasę volumeBindingMode .
Można użyć volumeBindingMode: Immediate klasy, która gwarantuje, że jej działanie zachodzi natychmiast po utworzeniu żądania trwałego wolumenu (PVC). Jeśli pule węzłów są ograniczone topologią, na przykład w przypadku korzystania ze stref dostępności, woluminy PV będą powiązane lub aprowidowane bez znajomości wymagań dotyczących planowania zasobnika.
Aby rozwiązać ten scenariusz, można użyć volumeBindingMode: WaitForFirstConsumer, które opóźnia powiązanie i aprowizację PV do momentu utworzenia zasobnika korzystającego z PVC. Takie podejście gwarantuje, że wolumin trwały (PV) jest przydzielany w tej samej strefie dostępności lub topologii zgodnie z ograniczeniami harmonogramu poda. Domyślne klasy przechowywania używają klasy volumeBindingMode: WaitForFirstConsumer.
Utwórz plik o nazwie
sc-azuredisk-csi-waitforfirstconsumer.yaml, a następnie wklej następujący manifest. Klasa przechowywania jest taka sama jak nasza klasamanaged-csi, ale z innym typemvolumeBindingMode. Przykład:kind: StorageClass apiVersion: storage.k8s.io/v1 metadata: name: azuredisk-csi-waitforfirstconsumer provisioner: disk.csi.azure.com parameters: skuname: StandardSSD_LRS allowVolumeExpansion: true reclaimPolicy: Delete volumeBindingMode: WaitForFirstConsumerUtwórz klasę pamięci, uruchamiając polecenie kubectl apply i określ
sc-azuredisk-csi-waitforfirstconsumer.yamlplik konfiguracyjny:kubectl apply -f sc-azuredisk-csi-waitforfirstconsumer.yamlDane wyjściowe polecenia przypominają następujący przykład:
storageclass.storage.k8s.io/azuredisk-csi-waitforfirstconsumer created
Dowiedz się więcej o migawkach woluminów
Sterownik CSI dysku platformy Azure obsługuje migawki woluminów, umożliwiając przechwytywanie stanu woluminów trwałych w określonych punktach w czasie na potrzeby operacji tworzenia kopii zapasowych i przywracania. Migawki woluminów umożliwiają tworzenie kopii migawkowej danych trwałych w konkretnym momencie bez przerywania działania aplikacji. Tych migawek można użyć do utworzenia nowych woluminów lub przywrócenia istniejących do poprzedniego stanu.
Można utworzyć dwa typy migawek:
Pełne migawki: przechwyć pełny stan dysku.
Migawki przyrostowe: Przechwytywanie tylko zmian od ostatniej migawki, oferujące lepszą efektywność przechowywania i oszczędności kosztów. Migawki przyrostowe są domyślnym zachowaniem, gdy parametr
incrementaljest ustawiony natruew Twojej VolumeSnapshotClass.
Poniższa tabela zawiera szczegółowe informacje dotyczące tych parametrów.
| Name | Meaning | Dostępna wartość | Mandatory | Wartość domyślna |
|---|---|---|---|---|
| resourceGroup | Grupa zasobów do przechowywania zdjęć migawek | ISTNIEJĄCA GRUPA ZASOBÓW | Nie. | Jeśli nie zostaną określone, migawki są przechowywane w tej samej grupie zasobów co źródłowe dyski Azure |
| przyrostowa | Tworzenie pełnej lub przyrostowej migawki |
true, false |
Nie. | true |
| tags | Tagi usługi Azure Disks | Format tagu: "key1=val1,key2=val2" | Nie. | "" |
| userAgent | Agent użytkownika używany do przypisywania użycia przez klienta | Nie. | Sformatowany user-agent wygenerowany driverName/driverVersion compiler/version (OS-ARCH) |
|
| subscriptionID | Określanie identyfikatora subskrypcji platformy Azure, w którym są tworzone dyski platformy Azure | Identyfikator subskrypcji Azure | Nie. | Jeśli nie jest puste, resourceGroup należy podać wartość , incremental należy ustawić jako false |
Migawki woluminów obsługują następujące scenariusze:
- Tworzenie kopii zapasowych i przywracanie: Utwórz kopie zapasowe danych aplikacji stanowych w konkretnym momencie i przywracaj je w razie potrzeby.
- Klonowanie danych: Klonuj istniejące woluminy, aby utworzyć nowe woluminy trwałe z tymi samymi danymi.
- Odzyskiwanie po awarii: szybkie odzyskiwanie po utracie lub uszkodzeniu danych.
Utwórz migawkę woluminu
Uwaga / Notatka
Przed kontynuowaniem upewnij się, że aplikacja nie zapisuje danych na dysku źródłowym.
Aby uzyskać przykład tej możliwości, utwórz klasę migawki woluminu za pomocą polecenia kubectl apply :
kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/azuredisk-csi-driver/master/deploy/example/snapshot/storageclass-azuredisk-snapshot.yamlDane wyjściowe polecenia przypominają następujący przykład:
volumesnapshotclass.snapshot.storage.k8s.io/csi-azuredisk-vsc createdUtwórz migawkę woluminu z PVC utworzonego wcześniej w artykule.
kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/azuredisk-csi-driver/master/deploy/example/snapshot/azuredisk-volume-snapshot.yamlDane wyjściowe polecenia przypominają następujący przykład:
volumesnapshot.snapshot.storage.k8s.io/azuredisk-volume-snapshot createdAby sprawdzić, czy migawka została utworzona poprawnie, uruchom następujące polecenie:
kubectl describe volumesnapshot azuredisk-volume-snapshotDane wyjściowe polecenia przypominają następujący przykład:
Name: azuredisk-volume-snapshot Namespace: default Labels: <none> Annotations: API Version: snapshot.storage.k8s.io/v1 Kind: VolumeSnapshot Metadata: Creation Timestamp: 2020-08-27T05:27:58Z Finalizers: snapshot.storage.kubernetes.io/volumesnapshot-as-source-protection snapshot.storage.kubernetes.io/volumesnapshot-bound-protection Generation: 1 Resource Version: 714582 Self Link: /apis/snapshot.storage.k8s.io/v1/namespaces/default/volumesnapshots/azuredisk-volume-snapshot UID: dd953ab5-6c24-42d4-ad4a-f33180e0ef87 Spec: Source: Persistent Volume Claim Name: pvc-azuredisk Volume Snapshot Class Name: csi-azuredisk-vsc Status: Bound Volume Snapshot Content Name: snapcontent-dd953ab5-6c24-42d4-ad4a-f33180e0ef87 Creation Time: 2020-08-31T05:27:59Z Ready To Use: true Restore Size: 10Gi Events: <none>
Tworzenie nowego PVC na podstawie migawki woluminu
Możesz utworzyć nowy element PVC na podstawie migawki woluminu.
Użyj migawki utworzonej w poprzednim kroku, a następnie utwórz nowy element PVC i nowy zasobnik , aby go wykorzystać:
kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/azuredisk-csi-driver/master/deploy/example/snapshot/pvc-azuredisk-snapshot-restored.yaml kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/azuredisk-csi-driver/master/deploy/example/snapshot/nginx-pod-restored-snapshot.yamlDane wyjściowe polecenia przypominają następujący przykład:
persistentvolumeclaim/pvc-azuredisk-snapshot-restored created pod/nginx-restored createdAby upewnić się, że jest to ten sam element PVC utworzony wcześniej, sprawdź zawartość, uruchamiając następujące polecenie:
kubectl exec nginx-restored -- ls /mnt/azurediskDane wyjściowe polecenia przypominają następujący przykład:
lost+found outfile test.txt
Nadal możemy zobaczyć nasz wcześniej utworzony plik test.txt zgodnie z oczekiwaniami.
Klonowanie woluminów
Sklonowany wolumin jest definiowany jako duplikat istniejącego woluminu Kubernetes. Aby uzyskać więcej informacji na temat klonowania woluminów na platformie Kubernetes, zobacz klonowanie woluminów.
Utwórz sklonowany wolumin z utworzonego wcześniej
azuredisk-pvcoraz nowy zasobnik do jego wykorzystania.kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/azuredisk-csi-driver/master/deploy/example/cloning/pvc-azuredisk-cloning.yaml kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/azuredisk-csi-driver/master/deploy/example/cloning/nginx-pod-restored-cloning.yamlDane wyjściowe polecenia przypominają następujący przykład:
persistentvolumeclaim/pvc-azuredisk-cloning created pod/nginx-restored-cloning createdZawartość sklonowanego woluminu można sprawdzić, uruchamiając następujące polecenie i potwierdzając utworzenie pliku
test.txt:kubectl exec nginx-restored-cloning -- ls /mnt/azurediskDane wyjściowe polecenia przypominają następujący przykład:
lost+found outfile test.txt
Zmienianie rozmiaru trwałego dysku w Azure bez przestoju
Możesz zażądać większego woluminu dla obiektu PVC. Edytuj obiekt PVC i określ większy rozmiar. Ta zmiana wyzwala rozszerzenie woluminu bazowego, który wspiera PV.
Uwaga / Notatka
Nowy PV nigdy nie jest tworzony w celu spełnienia roszczenia. Zamiast tego zmieniany jest rozmiar istniejącego woluminu.
W usłudze AKS wbudowana managed-csi klasa magazynu już umożliwia rozszerzanie, więc użyj wcześniej utworzonego. PVC zażądał 10-GiB trwałego wolumenu. Możesz to potwierdzić, uruchamiając następujące polecenie:
kubectl exec -it nginx-azuredisk -- df -h /mnt/azuredisk
Dane wyjściowe polecenia przypominają następujący przykład:
Filesystem Size Used Avail Use% Mounted on
/dev/sdc 9.8G 42M 9.8G 1% /mnt/azuredisk
Rozwiń PVC, zwiększając
spec.resources.requests.storagepole, uruchamiając następujące polecenie:kubectl patch pvc pvc-azuredisk --type merge --patch '{"spec": {"resources": {"requests": {"storage": "15Gi"}}}}'Uwaga / Notatka
Zmniejszanie woluminów fizycznych nie jest obecnie obsługiwane. Próba zastosowania istniejącego pvc o mniejszym rozmiarze niż bieżący prowadzi do następującego komunikatu o błędzie:
The persistentVolumeClaim "pvc-azuredisk" is invalid: spec.resources.requests.storage: Forbidden: field can not be less than previous value.Dane wyjściowe polecenia przypominają następujący przykład:
persistentvolumeclaim/pvc-azuredisk patchedUruchom następujące polecenie, aby potwierdzić zwiększenie rozmiaru woluminu:
kubectl get pvDane wyjściowe polecenia przypominają następujący przykład:
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE pvc-391ea1a6-0191-4022-b915-c8dc4216174a 15Gi RWO Delete Bound default/pvc-azuredisk managed-csi 2d2h (...)A po kilku minutach uruchom następujące polecenia, aby potwierdzić rozmiar PVC:
kubectl get pvc pvc-azurediskDane wyjściowe polecenia przypominają następujący przykład:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE pvc-azuredisk Bound pvc-391ea1a6-0191-4022-b915-c8dc4216174a 15Gi RWO managed-csi 2d2hUruchom następujące polecenie, aby potwierdzić rozmiar dysku wewnątrz zasobnika:
kubectl exec -it nginx-azuredisk -- df -h /mnt/azurediskDane wyjściowe polecenia przypominają następujący przykład:
Filesystem Size Used Avail Use% Mounted on /dev/sdc 15G 46M 15G 1% /mnt/azuredisk
Jeśli zasobnik ma wiele kontenerów, możesz określić kontener, uruchamiając następujące polecenie:
kubectl exec -it nginx-azuredisk -c <ContainerName> -- df -h /mnt/azuredisk
Kontenery systemu Windows
Sterownik CSI dysku platformy Azure obsługuje węzły i kontenery systemu Windows. Jeśli chcesz używać kontenerów systemu Windows, postępuj zgodnie z Szybkim przewodnikiem kontenerów Windows, aby dodać pulę węzłów systemu Windows.
Po utworzeniu puli węzłów systemu Windows można teraz używać wbudowanych klas magazynu, takich jak
managed-csi. Możesz wdrożyć przykładowy zestaw stanowy oparty na systemie Windows , który zapisuje znaczniki czasu w plikudata.txt, uruchamiając następujące polecenie kubectl apply :kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/azuredisk-csi-driver/master/deploy/example/windows/statefulset.yamlDane wyjściowe polecenia przypominają następujący przykład:
statefulset.apps/busybox-azuredisk createdAby zweryfikować zawartość woluminu, uruchom następujące polecenie:
kubectl exec -it statefulset-azuredisk-win-0 -- powershell -c "type c:/mnt/azuredisk/data.txt"Dane wyjściowe polecenia przypominają następujący przykład:
2020-08-27 08:13:41Z 2020-08-27 08:13:42Z 2020-08-27 08:13:44Z (...)
Elastyczne przydzielanie zasobów na żądanie
Model rozszerzania dysków na żądanie umożliwia dyski działające w trybie przyspieszonym, gdy zapotrzebowanie na nie przekracza ich obecną pojemność. Model ten generuje dodatkowe opłaty za każdym razem, gdy dysk przekroczy swoje limity. Elastyczne zwiększanie wydajności na żądanie jest dostępne tylko dla dysków SSD wielkości Premium większej niż 512 GiB. Aby uzyskać więcej informacji na temat aprowizowanych IOPS i przepustowości na dysk w dyskach SSD warstwy Premium, zobacz Rozmiar SSD w warstwie Premium. Alternatywnie, wybuch oparty na kredytach jest możliwy tylko wtedy, gdy dysk zgromadził kredyty w swoim pojemniku kredytowym. Skalowanie oparte na kredytach nie generuje dodatkowych opłat, gdy dysk pęka. Skalowanie oparte na kredytach jest dostępne tylko dla dysków SSD w warstwie Premium 512 GiB i mniejszych oraz dysków SSD w warstwie 1024 GiB i mniejszych. Aby uzyskać więcej informacji na temat przerywania na żądanie, zobacz sekcję Przerywanie na żądanie.
Ważne
Domyślna managed-csi-premium klasa magazynu ma wyłączone dynamiczne przydzielanie zasobów i używa działania opartego na kredytach. Każdy dysk SSD w warstwie Premium dynamicznie tworzony na żądanie przez roszczenie trwałego woluminu na podstawie domyślnej managed-csi-premium klasy magazynu ma również wyłączone funkcje burstingu na żądanie.
Aby utworzyć trwały wolumin SSD w warstwie Premium z włączoną funkcją burstingu na żądanie, możesz utworzyć nową klasę magazynu z parametrem enableBursting ustawionym na true zgodnie z poniższym szablonem YAML. Aby uzyskać więcej informacji na temat włączania skalowania na żądanie, zobacz On-demand bursting. Aby uzyskać więcej informacji na temat tworzenia własnej klasy magazynu z włączoną obsługą nagłego zwiększania mocy na żądanie, zobacz Tworzenie zarządzanej klasy magazynu Premium CSI z możliwością burstu.
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: burstable-managed-csi-premium
provisioner: disk.csi.azure.com
parameters:
skuname: Premium_LRS
enableBursting: "true"
reclaimPolicy: Delete
volumeBindingMode: WaitForFirstConsumer
allowVolumeExpansion: true
Uprzątnij zasoby
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
Udostępnij zasoby trwałe Azure Files
Usługa Azure Files obsługuje udziały plików usługi Azure Premium. Minimalna pojemność współdzielonego zasobu plików to 100 GiB. Zalecamy używanie udziałów plików Azure Premium zamiast udziałów plików Standard, ponieważ udziały Premium oferują większą wydajność i dyski z niskimi opóźnieniami dla obciążeń intensywnych pod względem operacji we/wy. W przypadku udziałów Azure Files nie ma limitu liczby udziałów, które można zamontować w węźle. Aby uzyskać więcej informacji na temat woluminów Kubernetes, zapoznaj się z Opcjami magazynowania dla aplikacji w usłudze AKS.
W przypadku używania sterowników CSI magazynu w usłudze AKS istnieją jeszcze dwa wbudowane StorageClasses sterowniki magazynu usługi Azure Files CSI. Inne klasy magazynu CSI są tworzone obok klas magazynu domyślnie wbudowanych w klaster.
azurefile-csi: Używa usługi Azure Standard Storage do utworzenia udziału plików platformy Azure.azurefile-csi-premium: używa usługi Azure Premium Storage do utworzenia udziału plików platformy Azure.
Zasady odzyskiwania w obu klasach magazynowania zapewniają, że udział plików Azure zostanie usunięty, gdy odpowiedni PV zostanie usunięty. Ponieważ klasy pamięci konfigurują również udziały plików, aby można je było rozszerzać, wystarczy edytować PVC przy użyciu nowego rozmiaru.
Uwaga / Notatka
Aby uzyskać najlepsze środowisko pracy z usługą Azure Files, postępuj zgodnie z tymi najlepszymi rozwiązaniami. Lokalizacja konfigurowania opcji instalacji (mountOptions) zależy od tego, czy aprowizujesz dynamiczne lub statyczne woluminy trwałe.
- Jeśli dynamicznie tworzysz wolumin za pomocą klasy pamięci, określ opcje montowania w obiekcie klasy pamięci (rodzaj:
StorageClass). - Jeśli statycznie przydzielasz wolumin, określ opcje montażu w obiekcie PersistentVolume (rodzaj:
PersistentVolume). - Jeśli instalujesz udział plików jako wolumin wbudowany, określ opcje montowania w obiekcie Pod (rodzaj:
Pod).
Zalecamy FIO podczas uruchamiania testów porównawczych. Aby uzyskać więcej informacji, zobacz Narzędzia i testy porównawcze.
Klasa przechowywania służy do definiowania sposobu tworzenia udziału plików w usłudze Azure. Konto magazynowe jest tworzone automatycznie w grupie zasobów węzła do wykorzystania z klasą magazynową do przechowywania zasobu plików Azure. Wybierz jedną z następujących opcji SKU dla redundancji Azure Storage dla skuName:
- Standard_LRS: Standardowa lokalna nadmiarowość przechowywania
- Standard_GRS: Standardowa pamięć geograficznie z nadmiarową dostępnością
- Standard_ZRS: magazyn strefowy redundantny Standard
- Standard_RAGRS: magazyn geograficznie nadmiarowy z dostępem do odczytu w warstwie Standardowa
- Standard_RAGZRS: standardowy geograficznie nadmiarowy magazyn z dostępem tylko do odczytu
- Premium_LRS: magazyn lokalnie nadmiarowy w warstwie Premium
- Premium_ZRS: strefowo nadmiarowa pamięć Premium
Aby uzyskać więcej informacji na temat klas magazynu kubernetes dla usługi Azure Files, zobacz Klasy magazynu Kubernetes.
Utwórz plik o nazwie
azure-file-sc.yamli skopiuj w poniższym przykładowym manifeście. Aby uzyskać więcej informacji na tematmountOptionsprogramu , zobacz sekcję Opcje instalacji .kind: StorageClass apiVersion: storage.k8s.io/v1 metadata: name: my-azurefile provisioner: file.csi.azure.com # replace with "kubernetes.io/azure-file" if aks version is less than 1.21 allowVolumeExpansion: true mountOptions: - dir_mode=0777 - file_mode=0777 - uid=0 - gid=0 - mfsymlinks - cache=strict - actimeo=30 - nobrl # disable sending byte range lock requests to the server and for applications which have challenges with posix locks parameters: skuName: Premium_LRSUtwórz klasę magazynu przy użyciu polecenia
kubectl apply.kubectl apply -f azure-file-sc.yaml
Utwórz PVC
PVC używa obiektu klasy magazynu do dynamicznego aprowizowania udziału plików w usłudze Azure. Możesz użyć następującego kodu YAML, aby utworzyć PVC o rozmiarze 100 GB z dostępem ReadWriteMany. Aby uzyskać więcej informacji na temat trybów dostępu, zobacz Kubernetes trwały wolumin.
Utwórz plik o nazwie
azure-file-pvc.yamli skopiuj go w następującym języku YAML. Upewnij się, żestorageClassNameodpowiada klasie magazynu utworzonej w poprzednim kroku.apiVersion: v1 kind: PersistentVolumeClaim metadata: name: my-azurefile spec: accessModes: - ReadWriteMany storageClassName: my-azurefile resources: requests: storage: 100GiUwaga / Notatka
Jeśli używasz
Premium_LRSSKU dla klasy przechowywania, minimalną wartościąstoragepowinna być100Gi.Utwórz PVC przy użyciu
kubectl applypolecenia.kubectl apply -f azure-file-pvc.yamlPo zakończeniu zostanie utworzone udostępnianie plików. Zostanie również utworzony sekret Kubernetes, który zawiera informacje o połączeniu i poświadczenia. Możesz użyć
kubectl getpolecenia , aby wyświetlić stan PCV:kubectl get pvc my-azurefileDane wyjściowe polecenia przypominają następujący przykład:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE my-azurefile Bound pvc-8436e62e-a0d9-11e5-8521-5a8664dc0477 100Gi RWX my-azurefile 5m
Zamontuj PCV
Poniższy kod YAML tworzy zasobnik, który używa pliku my-azurefile PVC do zainstalowania udziału plików usługi Azure Files w ścieżce /mnt/azure . W przypadku kontenerów systemu Windows Server podaj ścieżkę używając konwencji ścieżki systemu Windows, na przykład "D:".
Utwórz plik o nazwie
azure-pvc-files.yamli skopiuj go w następującym pliku YAML. Upewnij się, że elementclaimNameodpowiada elementowi PVC utworzonemu w poprzednim kroku.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: my-azurefileUtwórz pod przy użyciu polecenia
kubectl apply.kubectl apply -f azure-pvc-files.yamlMasz teraz uruchomiony zasobnik z udziałem plików usługi Azure Files zainstalowanym w katalogu /mnt/azure . Tę konfigurację można zobaczyć podczas inspekcji zasobnika przy użyciu polecenia
kubectl describe. Następujące skrócone przykładowe dane wyjściowe pokazują wolumin zainstalowany w kontenerze.Containers: mypod: Container ID: docker://053bc9c0df72232d755aa040bfba8b533fa696b123876108dec400e364d2523e Image: mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine Image ID: docker-pullable://nginx@sha256:d85914d547a6c92faa39ce7058bd7529baacab7e0cd4255442b04577c4d1f424 State: Running Started: Fri, 01 Mar 2019 23:56:16 +0000 Ready: True Mounts: /mnt/azure from volume (rw) /var/run/secrets/kubernetes.io/serviceaccount from default-token-8rv4z (ro) [...] Volumes: volume: Type: PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace) ClaimName: my-azurefile ReadOnly: false [...]
Opcje montowania
W przypadku platformy Kubernetes w wersji 1.13.0 lub nowszej wartości domyślne dla fileMode i dirMode to 0777. Podczas dynamicznego przydzielania trwałych woluminów przy użyciu klasy magazynu można zdefiniować opcje montowania bezpośrednio w manifeście klasy magazynu. Aby uzyskać szczegółowe informacje, zobacz Opcje instalacji. W poniższym przykładzie pokazano ustawienie tych uprawnień na :0777
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
name: my-azurefile
provisioner: file.csi.azure.com # replace with "kubernetes.io/azure-file" if aks version is less than 1.21
allowVolumeExpansion: true
mountOptions:
- dir_mode=0777
- file_mode=0777
- uid=0
- gid=0
- mfsymlinks
- cache=strict
- actimeo=30
- nobrl # disable sending byte range lock requests to the server and for applications which have challenges with posix locks
parameters:
skuName: Premium_LRS
Parametry klasy magazynu dla woluminów dynamicznych
Poniższa tabela zawiera parametry, których można użyć do zdefiniowania niestandardowej klasy przechowywania dla twojego PVC.
| Name | Meaning | Dostępna wartość | Mandatory | Wartość domyślna |
|---|---|---|---|---|
| accountAccessTier | Warstwa dostępu dla konta magazynowego | Konto standardowe może wybrać Hot lub Cool, a konto Premium może wybrać tylko pozycję Premium. |
Nie. | Empty. Użyj ustawienia domyślnego dla różnych typów kont przechowywania. |
| accountQuota | Ogranicza limit przydziału dla konta. Możesz określić maksymalny limit przydziału w GB (domyślnie 102 400 GB). Jeśli konto przekroczy określony limit przydziału, sterownik pomija wybranie konta. | Nie. | 102400 |
|
| allowBlobPublicAccess | Zezwól lub odmów publicznego dostępu do wszystkich obiektów blob lub kontenerów dla konta magazynowego utworzonego przez sterownik. |
true lub false |
Nie. | false |
| disableDeleteRetentionPolicy | Określ, czy należy wyłączyć zasadę DeleteRetentionPolicy dla konta pamięci masowej utworzonego przez sterownik. |
true lub false |
Nie. | false |
| folderName | Określ nazwę folderu w udziale plików platformy Azure. | Istniejąca nazwa folderu w udziale plików platformy Azure. | Nie. | Jeśli nazwa folderu nie istnieje w udziale plików, instalacja zakończy się niepowodzeniem. |
| getLatestAccount | Określa, czy uzyskać najnowszy klucz konta na podstawie czasu utworzenia. Ten sterownik domyślnie pobiera pierwszy klucz. |
true lub false |
Nie. | false |
| lokalizacja | Określ region świadczenia usługi Azure Storage. | Na przykład eastus. |
Nie. | Jeśli jest pusty, sterownik używa tej samej nazwy lokalizacji co bieżący klaster usługi AKS. |
| matchTags | Dopasuj tagi, gdy sterownik próbuje znaleźć odpowiednie konto magazynu. |
true lub false |
Nie. | false |
| networkEndpointType 1 | Określ typ punktu końcowego sieci dla konta magazynu utworzonego przez sterownik. Jeśli privateEndpoint zostanie określony, dla konta przechowywania utworzony zostanie prywatny punkt końcowy. W innych przypadkach punkt końcowy usługi jest tworzony domyślnie. |
"",privateEndpoint |
Nie. | "" |
| protokół | Określ protokół udostępniania plików. |
smb, nfs |
Nie. | smb |
| requireInfraEncryption | Określ, czy usługa stosuje dodatkową warstwę szyfrowania z kluczami zarządzanymi przez platformę dla danych magazynowanych na koncie magazynu, które zostało utworzone przez sterownik. |
true lub false |
Nie. | false |
| resourceGroup | Określ grupę 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. |
| selectRandomMatchingAccount | Określa, czy losowo wybrać zgodne konto. Domyślnie sterownik zawsze wybiera pierwsze zgodne konto w kolejności alfabetycznej (Uwaga: ten sterownik używa pamięci podręcznej wyszukiwania kont, co powoduje nierównomierną dystrybucję tworzenia plików na wielu kontach). |
true lub false |
Nie. | false |
| serwer | Określ adres serwera konta usługi Azure Storage. | Istniejący adres serwera, na przykład accountname.privatelink.file.core.windows.net. |
Nie. | Jeśli jest pusty, sterownik używa domyślnego accountname.file.core.windows.net lub innego adresu konta suwerennej chmury. |
| shareAccessTier | Warstwa dostępu dla udostępniania plików | Konto ogólnego przeznaczenia w wersji 2 może wybierać między TransactionOptimized (ustawieniem domyślnym), Hoti Cool. Typ konta przechowywania premium tylko dla udziałów plikowych. |
Nie. | Empty. Użyj ustawienia domyślnego dla różnych typów kont przechowywania. |
| shareName | Określ nazwę udziału plików w usłudze Azure. | Istniejąca lub nowa nazwa udziału plików Azure. | Nie. | Jeśli jest pusty, sterownik generuje nazwę udziału plików platformy Azure. |
| shareNamePrefix | Określ prefiks nazwy udziału plików w Azure, który został utworzony przez sterownik. | Nazwa udziału może zawierać tylko małe litery, cyfry, łączniki i długość powinna być mniejsza niż 21 znaków. | Nie. | |
| skuName | Typ konta magazynu usługi Azure Files (alias: storageAccountType) |
Standard_LRS, Standard_ZRS, Standard_GRS, Standard_RAGRS, Standard_RAGZRS, Premium_LRS, Premium_ZRS, StandardV2_LRS, StandardV2_ZRS, StandardV2_GRS, StandardV2_GZRS, PremiumV2_LRS, PremiumV2_ZRS |
Nie. | Standard_LRSMinimalny rozmiar udziału plików dla typu konta Premium wynosi 100 GB. Typ konta ZRS jest obsługiwany tylko w niektórych regionach. Udział plików NFS obsługuje tylko typ konta Premium. Standardowe nazwy jednostek SKU w wersji 2 są przeznaczone dla modelu aprowizowania usługi Azure Files w wersji 2. |
| storageAccount | Określ nazwę konta usługi Azure Storage. | nazwaKontaPrzechowywania | -Nie | Jeśli określona nazwa konta magazynu nie zostanie podana, sterownik szuka odpowiedniego konta magazynu zgodnego z ustawieniami konta w tej samej grupie zasobów. Jeśli nie można odnaleźć pasującego konta przechowywania, zostanie utworzone nowe. Jeśli jednak zostanie określona nazwa konta magazynu, konto magazynu musi już istnieć. |
| storageEndpointSuffix | Określ sufiks punktu końcowego usługi Azure Storage. |
core.windows.net, core.chinacloudapi.cn, itp. |
Nie. | Jeśli jest pusty, sterownik używa domyślnego sufiksu punktu końcowego przechowywania zgodnie ze środowiskiem chmury. Na przykład core.windows.net. |
| tags | Tagi są tworzone na nowym koncie magazynu. | Format tagu: "foo=aaa,bar=bbb" | Nie. | "" |
1 Jeśli konto magazynu jest tworzone przez sterownik, wystarczy określić networkEndpointType: privateEndpoint parametr w klasie magazynu. Sterownik CSI tworzy prywatny punkt końcowy i prywatną strefę DNS (o nazwie privatelink.file.core.windows.net) wraz z kontem. Jeśli używasz własnego konta magazynu, musisz utworzyć prywatny punkt końcowy dla konta magazynu. Jeśli używasz usługi Azure Files w izolowanym klastrze sieciowym, musisz utworzyć niestandardową klasę magazynu z parametrem "networkEndpointType: privateEndpoint". Możesz skorzystać z tego przykładu w celu uzyskania informacji referencyjnych:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: azurefile-csi
provisioner: file.csi.azure.com
allowVolumeExpansion: true
parameters:
skuName: Premium_LRS # available values: Premium_LRS, Premium_ZRS, Standard_LRS, Standard_GRS, Standard_ZRS, Standard_RAGRS, Standard_RAGZRS
networkEndpointType: privateEndpoint
reclaimPolicy: Delete
volumeBindingMode: Immediate
mountOptions:
- dir_mode=0777 # modify this permission if you want to enhance the security
- file_mode=0777
- mfsymlinks
- cache=strict # https://linux.die.net/man/8/mount.cifs
- nosharesock # reduce probability of reconnect race
- actimeo=30 # reduce latency for metadata-heavy workload
- nobrl # disable sending byte range lock requests to the server and for applications which have challenges with posix locks
Statyczne parametry przydziału dla trwałych woluminów
Poniższa tabela zawiera parametry, których można użyć do zdefiniowania pv.
| Name | Meaning | Dostępna wartość | Mandatory | Wartość domyślna |
|---|---|---|---|---|
| volumeAttributes.resourceGroup | Określ nazwę grupy zasobów platformy Azure. | myResourceGroup | Nie. | Jeśli jest pusty, sterownik używa tej samej nazwy grupy zasobów co bieżący klaster. |
| volumeAttributes.storageAccount | Określ istniejącą nazwę konta usługi Azure Storage. | nazwaKontaPrzechowywania | Tak | |
| volumeAttributes.shareName | Określ nazwę udostępniania plików Azure. | fileShareName | Tak | |
| volumeAttributes.folderName | Określ nazwę folderu w udziale plików platformy Azure. | folderName | Nie. | Jeśli nazwa folderu nie istnieje w udziale plików, instalacja zakończy się niepowodzeniem. |
| volumeAttributes.protocol | Określ protokół udostępniania plików. |
smb, nfs |
Nie. | smb |
| volumeAttributes.server | Określanie adresu serwera konta usługi Azure Storage | Istniejący adres serwera, na przykład accountname.privatelink.file.core.windows.net. |
Nie. | Jeśli jest pusty, sterownik używa domyślnego accountname.file.core.windows.net lub innego adresu konta suwerennej chmury. |
Utwórz klasę migawek PV
Sterownik CSI usługi Azure Files obsługuje tworzenie migawek trwałych woluminów oraz związanych z nimi udziałów plikowych.
Utwórz klasę migawki woluminu za pomocą polecenia kubectl apply :
kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/azurefile-csi-driver/master/deploy/example/snapshot/volumesnapshotclass-azurefile.yamlDane wyjściowe polecenia przypominają następujący przykład:
volumesnapshotclass.snapshot.storage.k8s.io/csi-azurefile-vsc createdUtwórz migawkę woluminu na podstawie utworzonego wcześniej pliku PVC (
pvc-azurefile).kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/azurefile-csi-driver/master/deploy/example/snapshot/volumesnapshot-azurefile.yamlDane wyjściowe polecenia przypominają następujący przykład:
volumesnapshot.snapshot.storage.k8s.io/azurefile-volume-snapshot createdSprawdź, czy migawka została utworzona poprawnie, uruchamiając następujące polecenie:
kubectl describe volumesnapshot azurefile-volume-snapshotDane wyjściowe polecenia przypominają następujący przykład:
Name: azurefile-volume-snapshot Namespace: default Labels: <none> Annotations: API Version: snapshot.storage.k8s.io/v1beta1 Kind: VolumeSnapshot Metadata: Creation Timestamp: 2020-08-27T22:37:41Z Finalizers: snapshot.storage.kubernetes.io/volumesnapshot-as-source-protection snapshot.storage.kubernetes.io/volumesnapshot-bound-protection Generation: 1 Resource Version: 955091 Self Link: /apis/snapshot.storage.k8s.io/v1beta1/namespaces/default/volumesnapshots/azurefile-volume-snapshot UID: c359a38f-35c1-4fb1-9da9-2c06d35ca0f4 Spec: Source: Persistent Volume Claim Name: pvc-azurefile Volume Snapshot Class Name: csi-azurefile-vsc Status: Bound Volume Snapshot Content Name: snapcontent-c359a38f-35c1-4fb1-9da9-2c06d35ca0f4 Ready To Use: false Events: <none>
Zmiana rozmiaru Azure Files PV
Możesz zażądać większego woluminu dla obiektu PVC. Edytuj obiekt PVC i określ większy rozmiar. Ta zmiana wyzwala rozszerzenie woluminu bazowego, który wspiera PV.
Uwaga / Notatka
Nowy PV nigdy nie jest tworzony w celu spełnienia roszczenia. Zamiast tego zmieniany jest rozmiar istniejącego woluminu. Zmniejszanie woluminów trwałych nie jest obecnie obsługiwane.
W usłudze AKS wbudowana azurefile-csi klasa pamięci obsługuje już rozszerzenie, więc użyj wstępnie utworzonego woluminu PVC z tą klasą pamięci. PVC zażądało zasobu plików o pojemności 100 GiB. Możemy to potwierdzić, uruchamiając polecenie:
kubectl exec -it nginx-azurefile -- df -h /mnt/azurefile
Dane wyjściowe polecenia przypominają następujący przykład:
Filesystem Size Used Avail Use% Mounted on
//f149b5a219bd34caeb07de9.file.core.windows.net/pvc-5e5d9980-da38-492b-8581-17e3cad01770 100G 128K 100G 1% /mnt/azurefile
Rozwiń PVC, zwiększając pole
spec.resources.requests.storage.kubectl patch pvc pvc-azurefile --type merge --patch '{"spec": {"resources": {"requests": {"storage": "200Gi"}}}}'Dane wyjściowe polecenia przypominają następujący przykład:
persistentvolumeclaim/pvc-azurefile patchedSprawdź, czy zarówno PCW, jak i system plików w zasobniku mają nowy rozmiar:
kubectl get pvc pvc-azurefile NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE pvc-azurefile Bound pvc-5e5d9980-da38-492b-8581-17e3cad01770 200Gi RWX azurefile-csi 64m kubectl exec -it nginx-azurefile -- df -h /mnt/azurefile Filesystem Size Used Avail Use% Mounted on //f149b5a219bd34caeb07de9.file.core.windows.net/pvc-5e5d9980-da38-492b-8581-17e3cad01770 200G 128K 200G 1% /mnt/azurefile
Użyj PV z prywatnym magazynem Azure Files (prywatnym punktem końcowym)
Jeśli zasoby usługi Azure Files są chronione za pomocą prywatnego punktu końcowego, musisz utworzyć własną klasę magazynu. Pamiętaj, aby skonfigurować ustawienia DNS, aby rozwiązać prywatny adres IP punktu końcowego zgodnie z FQDN w ciągu połączenia.
Dostosuj następujące parametry:
resourceGroup: grupa zasobów, w której wdrażane jest konto magazynu.storageAccount: nazwa konta magazynowego.server: FQDN prywatnego punktu końcowego konta magazynu.
Utwórz plik o nazwie
private-azure-file-sc.yaml, a następnie wklej następujący przykładowy manifest w pliku. Zastąp wartości dla<resourceGroup>i<storageAccountName>. Przykład:apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: private-azurefile-csi provisioner: file.csi.azure.com allowVolumeExpansion: true parameters: resourceGroup: <resourceGroup> storageAccount: <storageAccountName> server: <storageAccountName>.file.core.windows.net reclaimPolicy: Delete volumeBindingMode: Immediate mountOptions: - dir_mode=0777 - file_mode=0777 - uid=0 - gid=0 - mfsymlinks - cache=strict # https://linux.die.net/man/8/mount.cifs - nosharesock # reduce probability of reconnect race - actimeo=30 # reduce latency for metadata-heavy workloadUżyj polecenia
kubectl apply, aby utworzyć klasę magazynu.kubectl apply -f private-azure-file-sc.yamlDane wyjściowe polecenia przypominają następujący przykład:
storageclass.storage.k8s.io/private-azurefile-csi createdUtwórz plik o nazwie
private-pvc.yaml, a następnie wklej następujący przykładowy manifest w pliku:apiVersion: v1 kind: PersistentVolumeClaim metadata: name: private-azurefile-pvc spec: accessModes: - ReadWriteMany storageClassName: private-azurefile-csi resources: requests: storage: 100GiUtwórz element PVC przy użyciu polecenia kubectl apply :
kubectl apply -f private-pvc.yaml
Uzyskiwanie dostępu do usługi Azure Files Storage (wersja zapoznawcza) przy użyciu tożsamości zarządzanej
Usługa Azure Files obsługuje teraz uwierzytelnianie oparte na tożsamości zarządzanej na potrzeby dostępu za pomocą protokołu SMB. Dzięki tej funkcji aplikacje działające w usłudze AKS mogą bezpiecznie uzyskiwać dostęp do udziałów usługi Azure Files bez konieczności przechowywania kluczy lub poświadczeń konta magazynu ani zarządzania nimi. Tożsamości zarządzane zapewniają usprawniony i bezpieczny mechanizm uwierzytelniania, upraszczając zarządzanie dostępem i zmniejszając ryzyko związane z ujawnieniem poświadczeń. Możesz utworzyć wolumin dynamiczny lub wolumin statyczny.
Uwaga / Notatka
Obsługa tożsamości zarządzanej dla Azure Files w AKS jest dostępna w wersji zapoznawczej, począwszy od wersji AKS 1.34 na węzłach Linux.
Aby włączyć tożsamość zarządzaną dla dynamicznie aprowizowanych woluminów, wykonaj następujące kroki:
Utwórz klasę magazynu z włączoną tożsamością zarządzaną przy użyciu pliku YAML,
azurefile-csi-managed-identity.yamlz następującą zawartością przykładową. UstawmountWithManagedIdentity: "true"w obszarzeparameters:apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: azurefile-csi provisioner: file.csi.azure.com parameters: resourceGroup: EXISTING_RESOURCE_GROUP_NAME # optional, node resource group by default if it's not provided storageAccount: EXISTING_STORAGE_ACCOUNT_NAME # optional, a new account will be created if it's not provided mountWithManagedIdentity: "true" # optional, clientID of the managed identity, kubelet identity would be used by default if it's not provided clientID: "xxxxx-xxxx-xxx-xxx-xxxxxxx" reclaimPolicy: Delete volumeBindingMode: Immediate allowVolumeExpansion: true mountOptions: - dir_mode=0777 # modify this permission if you want to enhance the security - file_mode=0777 - uid=0 - gid=0 - mfsymlinks - cache=strict # https://linux.die.net/man/8/mount.cifs - nosharesock # reduce probability of reconnect race - actimeo=30 # reduce latency for metadata-heavy workload - nobrl # disable sending byte range lock requests to the serverZastosuj tę klasę magazynu, uruchamiając następujące polecenie:
kubectl apply -f azurefile-csi-managed-identity.yamlWdróż StatefulSet lub obciążenie przy użyciu nowej klasy pamięci, która odwołuje się do tego PVC, aby upewnić się, że wolumin jest aprowizowany przy użyciu uwierzytelniania tożsamości zarządzanej. W manifeście PVC ustaw wartość
storageClassName: azurefile-csi-managed-identity. Przykład:apiVersion: v1 kind: PersistentVolumeClaim metadata: name: azurefile-managed-identity-pvc spec: accessModes: - ReadWriteMany storageClassName: azurefile-csi-managed-identity resources: requests: storage: 100Gi
Dowiedz się więcej o systemie plików NFS usługi Azure Files
Usługa Azure Files obsługuje protokół NFS w wersji 4.1. Obsługa NFS w wersji 4.1 dla Azure Files zapewnia w pełni zarządzany system NFS jako usługę, zbudowany na wysoce dostępnej, wysoce trwałej i rozproszonej platformie magazynowej odpornej na awarie.
Ta opcja jest zoptymalizowana pod kątem obciążeń dostępu losowego z aktualizacjami danych w miejscu i zapewnia pełną obsługę systemu plików POSIX. W tej sekcji pokazano, jak używać udziałów NFS z dostawcą Azure File CSI w klastrze AKS.
Uwaga / Notatka
Możesz użyć prywatnego punktu końcowego zamiast zezwalać na dostęp do wybranej sieci wirtualnej.
W tej sekcji wyjaśniono, jak zmaksymalizować wydajność i bezpieczeństwo podczas korzystania z usługi Azure Files NFS 4.1 z usługą AKS. Dowiedz się, jak:
Optymalizowanie ustawień rozmiaru odczytu i zapisu systemu plików NFS
Tworzenie i konfigurowanie klasy magazynu NFS
Wdrażanie obciążeń korzystających z woluminów opartych na systemie plików NFS
Włącz szyfrowanie podczas przesyłania (EiT), aby chronić dane podczas przechodzenia między klastrem AKS a usługą Azure Files.
- Optymalizacja systemu plików NFS
- Klasa magazynu NFS
- Wdrażanie systemu plików NFS
- NFS EiT (wersja zapoznawcza)
Ta sekcja zawiera informacje na temat podejścia do dostrajania wydajności NFS za pomocą sterownika CSI usługi Azure Files z opcjami rsize (rozmiar odczytu) i wsize (rozmiar zapisu). Opcje rsize i wsize ustawiają maksymalny rozmiar transferu operacji NFS. Jeśli rsize ani wsize nie są określone podczas montowania, klient i serwer negocjują największy rozmiar obsługiwany przez oba. Obecnie zarówno usługa Azure Files, jak i nowoczesne dystrybucje systemu Linux obsługują rozmiary odczytu i zapisu tak duże, jak 1 048 576 bajtów (1 MiB).
Optymalna wydajność jest oparta na wydajnej komunikacji między klientem a serwerem. Zwiększenie lub zmniejszenie wartości rozmiaru opcji odczytu i zapisu instalacji może poprawić wydajność systemu plików NFS. Domyślny rozmiar pakietów odczytu/zapisu przesyłanych między klientem a serwerem to 8 KB dla systemu plików NFS w wersji 2 i 32 KB dla systemu plików NFS w wersji 3 i 4. Te wartości domyślne mogą być zbyt duże lub za małe. Zmniejszenie rsize i wsize może poprawić wydajność NFS w zatłoczonej sieci poprzez wysyłanie mniejszych pakietów dla każdej odpowiedzi na odczyt i żądania zapisu w systemie NFS. Jednak zmniejszenie to może zwiększyć liczbę pakietów potrzebnych do wysyłania danych w sieci, zwiększając całkowity ruch sieciowy i wykorzystanie procesora CPU na kliencie i serwerze.
Ważne jest, aby przeprowadzić testy, aby znaleźć element rsize i wsize który utrzymuje wydajny transfer pakietów, gdzie nie zmniejsza przepływności i zwiększa opóźnienie.
Na przykład, aby skonfigurować maksymalną rsize i wsize 256-KiB, skonfiguruj klasę pamięci masowej mountOptions w następujący sposób:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: azurefile-csi-nfs
provisioner: file.csi.azure.com
allowVolumeExpansion: true
parameters:
protocol: nfs
mountOptions:
- nconnect=4
- noresvport
- actimeo=30
- rsize=262144
- wsize=262144
Inne przykłady klas magazynu
Kontenery systemu Windows
Sterownik CSI usługi Azure Files obsługuje również węzły i kontenery systemu Windows. Aby użyć kontenerów systemu Windows, postępuj zgodnie z przewodnikiem szybkiego startu kontenerów systemu Windows, aby dodać pulę węzłów systemu Windows.
Po utworzeniu puli węzłów Windows użyj wbudowanych klas pamięci masowej, takich jak
azurefile-csi, lub utwórz niestandardowe. Możesz wdrożyć przykładowy zestaw stanowy oparty na systemie Windows , który zapisuje znaczniki czasu w plikudata.txt, uruchamiając polecenie kubectl apply :kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/azurefile-csi-driver/master/deploy/example/windows/statefulset.yamlDane wyjściowe polecenia przypominają następujący przykład:
statefulset.apps/busybox-azurefile createdZweryfikuj zawartość woluminu, uruchamiając następujące polecenie kubectl exec:
kubectl exec -it busybox-azurefile-0 -- cat c:\\mnt\\azurefile\\data.txt # on Linux or MacOS Bash kubectl exec -it busybox-azurefile-0 -- cat c:\mnt\azurefile\data.txt # on Windows Powershell or CMDDane wyjściowe poleceń przypominają następujący przykład:
2020-08-27 22:11:01Z 2020-08-27 22:11:02Z 2020-08-27 22:11:04Z (...)
Dalsze kroki
- Aby uzyskać informacje o parametrach sterownika CSI usługi Azure Files, zobacz parametry sterownika CSI.
- Aby uzyskać więcej informacji na temat rozwiązań pamięci masowej opartych na dyskach, zobacz Rozwiązania oparte na dyskach w usłudze AKS.
- Aby uzyskać więcej informacji na temat najlepszych rozwiązań dotyczących magazynu, zobacz Best practices for storage and backups in Azure Kubernetes Service (Najlepsze rozwiązania dotyczące magazynu i tworzenia kopii zapasowych w usłudze Azure Kubernetes Service).
- Aby uzyskać więcej informacji na temat dysków ultra platformy Azure, zobacz [Use ultra disks on Azure Kubernetes Service (AKS)][use-ultra-disks].
- Aby uzyskać więcej informacji na temat tagów platformy Azure, zobacz Używanie tagów platformy Azure w usłudze Azure Kubernetes Service (AKS).