Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Jeśli wiele podów wymaga współbieżnego dostępu do tego samego woluminu magazynu, możesz użyć Azure Blob Storage do połączenia z systemem plików blobfuse lub sieciowym systemem plików (NFS).
W tym artykule pokazano, jak dynamicznie i statycznie tworzyć kontenery usługi Azure Blob Storage do użycia przez wiele zasobników w klastrze usługi Azure Kubernetes Service (AKS).
Wymagania wstępne
Włączono sterownik CSI Azure Blob Storage w Twoim klastrze AKS.
Konto magazynowe z włączonym systemem plików NFS w wersji 3, co pozwala na zamontowanie woluminu trwałego przy użyciu protokołu NFS. Nie można włączyć NFS v3 dla istniejącego konta magazynu. Aby uzyskać więcej informacji, zobacz Tworzenie konta NFS w wersji 3.
Aby obsługiwać konto Azure Data Lake Storage podczas korzystania z instalacji blobfuse, wykonaj następujące zadania:
- Aby utworzyć konto Data Lake Storage przy użyciu sterownika w dynamicznej aprowizacji, określ
isHnsEnabled: "true"w parametrach klasy magazynu. - Aby włączyć dostęp blobfuse do konta Data Lake Storage w statycznej aprowizacji, określ opcję
--use-adls=trueinstalacji w woluminie trwałym. - Jeśli zamierzasz włączyć konto magazynu z hierarchiczną przestrzenią nazw, istniejące woluminy trwałe powinny zostać ponownie zainstalowane z opcją
--use-adls=trueinstalacji.
- Aby utworzyć konto Data Lake Storage 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,/mntkatalog jest instalowany na dysku tymczasowym. Jeśli jednak jednostka SKU maszyny wirtualnej nie oferuje dysku tymczasowego, katalog/mntjest montowany na dysku systemu operacyjnego, możesz ustawić opcję montowania--tmp-path=, aby określić inny katalog pamięci podręcznej.
Użyj wbudowanych klas magazynowych do tworzenia dynamicznych dysków trwałych w usłudze Azure Blob Storage
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. W przypadku stosowania sterowników CSI magazynu w usłudze AKS istnieją dwie dodatkowe wbudowane funkcjonalności korzystające ze sterownika CSI usługi Azure Blob Storage.
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.
Możesz wybrać jedną z następujących jednostek SKU nadmiarowości magazynu platformy Azure dla parametru skuname w definicji klasy magazynu:
- Standard_LRS: Standardowa lokalna nadmiarowość przechowywania
- Premium_LRS: magazyn lokalnie nadmiarowy w warstwie Premium
- Standard_ZRS: standardowa strefowa pamięć nadmiarowa
- 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
Tworzenie niestandardowych klas pamięci dla dynamicznych dysków wirtualnych za pomocą usługi Azure Blob Storage
Domyślne klasy magazynu są odpowiednie dla większości scenariuszy. W niektórych przypadkach możesz chcieć dostosować własną klasę przechowywania z własnymi parametrami. W tej sekcji przedstawiono dwa przykłady: jeden przy użyciu protokołu NFS i jeden przy użyciu systemu plików blobfuse.
Przykład niestandardowej klasy magazynu przy użyciu protokołu NFS
Manifest w tym przykładzie montuje kontener magazynu danych blob przy użyciu protokołu NFS. Można go użyć do dodania parametru tags .
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: blob-nfs provisioner: blob.csi.azure.com parameters: protocol: nfs tags: environment=Development volumeBindingMode: Immediate allowVolumeExpansion: trueUtwórz klasę magazynu przy użyciu
kubectl applypolecenia :kubectl apply -f blob-nfs-sc.yamlDane wyjściowe powinny przypominać następujące przykładowe dane wyjściowe:
storageclass.storage.k8s.io/blob-nfs created
Przykład niestandardowej klasy przechowywania przy użyciu blobfuse
Manifest w tym przykładzie używa narzędzia blobfuse i instaluje kontener usługi Blob Storage. Można go użyć do zaktualizowania parametru skuName .
Utwórz plik o nazwie
blobfuse-sc.yamli wklej następujący przykładowy manifest:apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: blob-fuse provisioner: blob.csi.azure.com parameters: skuName: Standard_GRS # available values: Standard_LRS, Premium_LRS, Standard_GRS, Standard_RAGRS 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 that.Utwórz klasę magazynu przy użyciu
kubectl applypolecenia :kubectl apply -f blobfuse-sc.yamlDane wyjściowe powinny przypominać następujące przykładowe dane wyjściowe:
storageclass.storage.k8s.io/blob-fuse created
Parametry klasy magazynu dla dynamicznych telewizorów z usługą Azure Blob Storage
Użyj następujących grup parametrów, aby zdefiniować niestandardową klasę magazynu dla oświadczeń trwałych woluminów (PVC) za pomocą usługi Azure Blob Storage:
-
Konto magazynu:
skuName,locationsubscriptionIDnetworkEndpointTypeaccessTierallowBlobPublicAccessstorageAccountresourceGrouprequireInfraEncryptionpublicNetworkAccessallowSharedKeyAccesstagsi .matchTags -
Kontener i punkt końcowy:
protocol, ,serveruseDataPlaneAPIcontainerNamestorageEndpointSuffixsoftDeleteBlobscontainerNamePrefixsoftDeleteContainers, i .enableBlobVersioning -
BlobFuse:
storeAccountKey, ,secretNamegetLatestAccountKey,secretNamespaceiisHnsEnabled. -
NFS:
mountPermissionsifsGroupChangePolicy. -
Sieć wirtualna:
vnetResourceGroup, ,vnetNamesubnetNameivnetLinkName.
Konfigurowanie parametrów konta magazynu dla dynamicznych telewizorów z usługą Azure Blob Storage
Użyj następujących parametrów, aby skonfigurować konto magazynu Azure dla dynamicznie aprowizowania pv:
| Name | Meaning | Dostępne wartości | Wymagane | Wartość domyślna |
|---|---|---|---|---|
skuName |
Określ typ konta usługi Azure Storage (alias: storageAccountType). |
Standard_LRS, , Premium_LRS, Standard_GRS, Standard_RAGRS, , Standard_ZRSPremium_ZRS |
Nie. | Standard_LRS |
location |
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. |
subscriptionID |
Określ identyfikator subskrypcji platformy Azure, w którym jest tworzony katalog usługi Blob Storage. | Identyfikator subskrypcji Azure | Nie. | Jeśli nie jest pusty, resourceGroup należy podać. |
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 |
Określ typ punktu końcowego sieci dla konta magazynu utworzonego przez sterownik. Jeśli określisz privateEndpointwartość , sterownik utworzy prywatny punkt końcowy dla konta magazynu. W innych przypadkach sterownik tworzy punkt końcowy usługi dla protokołu NFS. |
"", privateEndpoint |
Nie. |
"". W przypadku klastra usługi AKS dodaj nazwę klastra usługi AKS do roli Współautora w grupie zasobów hostującej sieć wirtualną. |
accessTier |
Określ warstwę dostępu dla konta magazynu. |
Hot, , CoolPremium |
Nie. | Używa warstwy domyślnej dla wybranego typu konta magazynu. Konta Premium obsługują tylko Premiumusługę . |
allowBlobPublicAccess |
Zezwalaj lub nie zezwalaj na publiczny dostęp do wszystkich obiektów blob lub kontenerów dla konta magazynu utworzonego przez sterownik. |
true, false |
Nie. | false |
allowSharedKeyAccess |
Zezwalaj lub nie zezwalaj na dostęp do klucza współdzielonego dla konta magazynu utworzonego przez sterownik. Ten parametr dotyczy instalacji systemu plików NFS i instalacji blobFuse korzystających z tożsamości zarządzanej. |
true, false |
Nie. | true |
requireInfraEncryption |
Wymagaj dodatkowej warstwy szyfrowania zarządzanego przez platformę dla danych magazynowanych na koncie magazynu utworzonym przez sterownik. |
true, false |
Nie. | false |
publicNetworkAccess |
Ustaw właściwość dostępu do sieci publicznej dla konta magazynu utworzonego przez sterownik. |
Enabled, , DisabledSecuredByPerimeter |
Nie. | Używa wartości domyślnej Azure Storage. |
tags |
Utwórz tagi na nowym koncie magazynu. | Format tagu: foo=aaa,bar=bbb |
Nie. | "" |
matchTags |
Dopasuj tagi, gdy sterownik wyszukuje odpowiednie konto magazynu. |
true, false |
Nie. | false |
Konfigurowanie parametrów kontenera i punktu końcowego dla dynamicznych telewizorów przy użyciu usługi Azure Blob Storage
Użyj następujących parametrów, aby skonfigurować kontener, protokół instalacji, punkt końcowy magazynu i tagi dynamicznie aprowizowania pv:
| Name | Opis | Dostępne wartości | Wymagane | Wartość domyślna |
|---|---|---|---|---|
protocol |
Określ obiekty BlobFuse, BlobFuse2 lub NFS w wersji 3. |
fuse, , fuse2nfs |
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 systemu plików blobfuse lub pvc-nfs NFS w wersji 3. |
containerNamePrefix |
Określ prefiks katalogu usługi Azure Storage utworzony przez sterownik. | Może zawierać tylko małe litery, cyfry i łączniki oraz musi zawierać mniej niż 21 znaków. | Nie. | |
server |
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. |
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. |
useDataPlaneAPI |
Użyj interfejsu API płaszczyzny danych Azure Storage, aby utworzyć i usunąć kontenery. Ta opcja może uniknąć ograniczania dostawcy zasobów magazynu, ale kończy się niepowodzeniem, gdy zapora konta magazynu lub reguły sieci wirtualnej blokują dostęp do płaszczyzny danych. |
true, false |
Nie. | false |
softDeleteBlobs |
Włącz usuwanie nietrwałe dla obiektów blob i określ okres przechowywania w dniach. | Okres przechowywania, na przykład 7 |
Nie. | Wyłączony |
softDeleteContainers |
Włącz usuwanie nietrwałe dla kontenerów i określ okres przechowywania w dniach. | Okres przechowywania, na przykład 7 |
Nie. | Wyłączony |
enableBlobVersioning |
Włącz przechowywanie wersji obiektów blob. Nie można włączyć przechowywania wersji, gdy protocol jest lub nfsisHnsEnabled ma wartość true. |
true, false |
Nie. | false |
Konfigurowanie parametrów blobFuse dla dynamicznych telewizorów przy użyciu usługi Azure Blob Storage
Następujące parametry mają zastosowanie tylko wtedy, gdy używasz obiektu BlobFuse dla dynamicznie aprowizowania pv:
| Name | Opis | Dostępne wartości | Wymagane | Wartość domyślna |
|---|---|---|---|---|
storeAccountKey |
Określ klucz dostępu konta magazynu jako sekret w Kubernetes. Uwaga: false oznacza, że sterownik używa tożsamości kubeleta do uzyskania klucza konta. |
true,false |
Nie. | true |
getLatestAccountKey |
Pobierz najnowszy klucz konta magazynu na podstawie czasu jego utworzenia zamiast używania pierwszego klucza. |
true, false |
Nie. | false |
secretName |
Określ nazwę sekretu do przechowywania klucza konta. | Nie. | ||
secretNamespace |
Określ nazwę przestrzeni sekretnych do przechowywania klucza konta. |
default,kube-system itp. |
Nie. | Przestrzeń nazw PVC |
isHnsEnabled |
Włącz Hierarchical namespace dla konta Azure Data Lake Storage. |
true,false |
Nie. | false |
Konfigurowanie parametrów systemu plików NFS dla dynamicznych telewizorów przy użyciu usługi Azure Blob Storage
Następujący parametr ma zastosowanie tylko w przypadku korzystania z systemu plików NFS dla dynamicznie aprowizowanej sieci PV:
| Name | Opis | Dostępne wartości | Wymagane | Wartość domyślna |
|---|---|---|---|---|
mountPermissions |
Określ uprawnienia do zamontowanego folderu. | Wartość domyślna to 0777. Jeśli ustawiono wartość 0, sterownik nie będzie wykonywać chmod po zamontowaniu. |
Nie. | 0777 |
fsGroupChangePolicy |
Określ sposób zmiany własności woluminu przez sterownik. Sterownik ignoruje securityContext.fsGroupChangePolicy specyfikację zasobnika. |
OnRootMismatch, , AlwaysNone |
Nie. | OnRootMismatch |
Konfigurowanie parametrów sieci wirtualnej dla dynamicznych woluminów wirtualnych przy użyciu usługi Azure Blob Storage
Użyj następujących parametrów, gdy sterownik konfiguruje dostęp do sieci wirtualnej dla dynamicznie aprowizowanej sieci PV:
| Name | Opis | Dostępne wartości | Wymagane | Wartość domyślna |
|---|---|---|---|---|
vnetResourceGroup |
Określ grupę zasobów zawierającą sieć wirtualną. | Nazwa istniejącej grupy zasobów | Nie. |
vnetResourceGroup Używa wartości w konfiguracji chmury Azure. |
vnetName |
Określ nazwę sieci wirtualnej. | Istniejąca nazwa sieci wirtualnej | Nie. |
vnetName Używa wartości w konfiguracji chmury Azure. |
subnetName |
Określ co najmniej jedną istniejącą podsieci węzła usługi AKS. Oddzielaj wiele nazw podsieci przecinkami. | Istniejące nazwy podsieci | Nie. | Aktualizuje wszystkie podsieci w sieci wirtualnej klastra. |
vnetLinkName |
Określ łącze sieci wirtualnej skojarzone z prywatną strefą DNS. | Nazwa łącza istniejącej lub nowej sieci wirtualnej | Nie. | <vnetName>-vnetlink |
Konfigurowanie prywatnych punktów końcowych dla dynamicznych telewizorów z usługą Azure Blob Storage
Uwaga / Notatka
Jeśli konto magazynu jest tworzone przez sterownik, wystarczy określić parametr networkEndpointType: privateEndpoint 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 z parametrem "networkEndpointType: privateEndpoint". Możesz użyć następującego przykładowego manifestu jako odwołania:
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 that.
Tworzenie pcV na potrzeby dynamicznej aprowizacji
Element PVC używa obiektu klasy magazynu do dynamicznego aprowizowania usługi Azure Blob Storage. W tej sekcji możesz użyć przykładowego manifestu YAML, aby utworzyć plik PVC o rozmiarze 5 GB z dostępem ReadWriteMany . Aby uzyskać więcej informacji na temat trybów dostępu, zobacz Tryby dostępu PV w Kubernetes.
Utwórz plik o nazwie
blob-nfs-pvc.yamli wklej następujący manifest YAML:apiVersion: v1 kind: PersistentVolumeClaim metadata: name: azure-blob-storage spec: accessModes: - ReadWriteMany storageClassName: azureblob-nfs-premium resources: requests: storage: 5GiUtwórz PVC przy użyciu polecenia
kubectl create:kubectl create -f blob-nfs-pvc.yamlWyświetl stan PVC poleceniem
kubectl get.kubectl get pvc azure-blob-storageTwoje dane wyjściowe powinny przypominać następujące przykładowe dane wyjściowe, które pokazują, że PVC jest w stanie
Bound:NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE azure-blob-storage Bound pvc-aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb 5Gi RWX azureblob-nfs-premium 92m
Instalowanie dynamicznie aprowizowanego woluminu magazynu obiektów blob w zasobniku
Poniższy kod YAML tworzy zasobnik, który używa żądania trwałego wolumenu azure-blob-storage do zamontowania usługi Azure Blob Storage w ścieżce /mnt/blob.
Utwórz plik o nazwie
blob-nfs-pvi wklej następujący manifest YAML. Upewnij się, że element jest zgodny zclaimNameutworzonym wcześniej elementem PVC (azure-blob-storage).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 zasobnik za pomocą polecenia
kubectl applykubectl apply -f blob-nfs-pv.yamlPo pomyślnym uruchomieniu zasobnika utwórz nowy plik o nazwie
test.txtprzy użyciu następującego polecenia:kubectl exec mypod -- touch /mnt/blob/test.txtSprawdź, czy dysk jest poprawnie zainstalowany przy użyciu następującego polecenia, aby wyświetlić listę plików w zainstalowanym katalogu:
kubectl exec mypod -- ls /mnt/blobTwoje dane wyjściowe powinny przypominać następujący przykład, który pokazuje plik
test.txtutworzony w zamontowanym magazynie obiektów blob Azure.test.txt
Używanie zestawu statefulSet do zarządzania cyklem życia woluminu za pomocą usługi Azure Blob Storage
Aby zapewnić utrzymanie wolumenu danych dla obciążenia, możesz użyć elementu StatefulSet. Ten stan ułatwia dopasowanie istniejących woluminów do nowych zasobników, które zastępują te, które uległy awarii. W poniższych przykładach pokazano, jak skonfigurować element StatefulSet dla usługi Blob Storage przy użyciu protokołu NFS lub systemu Blobfuse.
Uwaga / Notatka
Jeśli używasz protokołu NFS, tożsamość warstwy sterowania klastra AKS (nazwa klastra AKS) musi zostać dodana do roli Udzielający wkładu w wirtualnej sieci oraz w grupie zabezpieczeń sieciowych.
Utwórz plik o nazwie
azure-blob-nfs-ss.yamli wklej następujący manifest 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 przy użyciu
kubectl createpolecenia :kubectl create -f azure-blob-nfs-ss.yaml
Tworzenie statycznego pv za pomocą usługi Azure Blob Storage
W poniższych sekcjach znajdziesz instrukcje dotyczące tworzenia statycznego PV w usłudze magazynowej Azure Blob Storage. Statyczny pv jest woluminem trwałym tworzonym ręcznie przez administratora. Ten serwer PV jest dostępny do użycia przez zasobniki w klastrze. Aby użyć statycznego PV, należy utworzyć PVC, który odwołuje się do PV, a następnie utworzyć pod odwołujący się do PVC.
Parametry woluminu CSI dla statycznych woluminów publicznych z usługą Azure Blob Storage
W poniższej tabeli wymieniono parametry, których można użyć w źródle woluminu CSI dla statycznego pv z usługą Azure Blob Storage:
| Name | Meaning | Dostępne wartości | Wymagane | 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}.Uwaga: znaki #, / są zarezerwowane do użytku wewnętrznego i nie mogą być używane w uchwycie woluminu. |
Tak | |
volumeAttributes.subscriptionID |
Określ identyfikator subskrypcji Azure, w którym znajduje się konto magazynu. | Identyfikator subskrypcji Azure | Nie. | Jeśli nie jest pusty, volumeAttributes.resourceGroup należy podać. |
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 obiekty BlobFuse, BlobFuse2 lub NFS w wersji 3. |
fuse, , fuse2nfs |
Nie. | fuse |
volumeAttributes.server |
Określ adres serwera konta usługi Azure Storage. | Istniejący adres serwera, na przykład <storage-account>.blob.core.windows.net |
Nie. | Używa domyślnego adresu serwera dla bieżącego środowiska chmury. |
volumeAttributes.storageEndpointSuffix |
Określ sufiks punktu końcowego magazynu Azure. |
core.windows.netlub sufiks dla innej chmury Azure |
Nie. | Używa sufiksu domyślnego dla bieżącego środowiska chmury. |
| --- | Następujące parametry dotyczą tylko systemu blobfuse | --- | --- | --- |
volumeAttributes.secretName |
Nazwa sekretu, która przechowuje nazwę i klucz konta magazynu (dotyczy tylko protokołu SMB). | Nie. | ||
volumeAttributes.secretNamespace |
Określ przestrzeń nazw sekretu do przechowywania klucza konta. | default |
Nie. | Przestrzeń nazw PVC |
volumeAttributes.getLatestAccountKey |
Pobierz najnowszy klucz konta magazynu na podstawie czasu jego utworzenia zamiast używania pierwszego klucza. |
true, false |
Nie. | false |
nodeStageSecretRef.name |
Określ nazwę wpisu tajnego kubernetes zawierającego poświadczenia do przemieszczania woluminu. | Istniejąca nazwa wpisu tajnego kubernetes. Wpis tajny musi zawierać jeden z następujących kluczy: azurestorageaccountkey, , msisecretazurestorageaccountsastokenlub azurestoragespnclientsecret. |
Nie. | |
nodeStageSecretRef.namespace |
Określ przestrzeń nazw dla sekretu. | Przestrzeń nazw platformy Kubernetes | Tak | |
| --- | Następujące parametry dotyczą tylko protokołu NFS | --- | --- | --- |
volumeAttributes.mountPermissions |
Określ uprawnienia do zamontowanego folderu. | 0777 |
Nie. | |
volumeAttributes.fsGroupChangePolicy |
Określ sposób zmiany własności woluminu przez sterownik. Sterownik ignoruje securityContext.fsGroupChangePolicy specyfikację zasobnika. |
OnRootMismatch, , AlwaysNone |
Nie. | OnRootMismatch |
| --- |
Następujące parametry są przeznaczone tylko dla funkcji: blobfuse Uwierzytelnianie tożsamości zarządzanej i nazwy głównej usługi |
--- | --- | --- |
volumeAttributes.AzureStorageAuthType |
Określ typ uwierzytelniania. |
Key, , SAS, , MSISPN |
Nie. | Key |
volumeAttributes.AzureStorageIdentityClientID |
Określ identyfikator klienta tożsamości. | Nie. | ||
volumeAttributes.AzureStorageIdentityObjectID |
Określ identyfikator obiektu tożsamości. Ten parametr jest przestarzały. | Nie. | ||
volumeAttributes.AzureStorageIdentityResourceID |
Określ ID zasobu tożsamości. | Nie. | ||
volumeAttributes.MSIEndpoint |
Określ punkt końcowy MSI. | Nie. | ||
volumeAttributes.AzureStorageSPNClientID |
Określ identyfikator klienta usługi Azure Service Principal Name (SPN). | Nie. | ||
volumeAttributes.AzureStorageSPNTenantID |
Określ identyfikator dzierżawy usługi Azure SPN. | Nie. | ||
volumeAttributes.AzureStorageAADEndpoint |
Określ punkt końcowy Microsoft Entra. | Nie. | ||
| --- | Następujące parametry dotyczą tylko uwierzytelniania tożsamości obciążenia blobfuse | --- | --- | --- |
volumeAttributes.ClientID |
Określ identyfikator klienta tożsamości zarządzanej używanej do uwierzytelniania tożsamości obciążenia. | Identyfikator klienta tożsamości zarządzanej | Nie. | |
volumeAttributes.mountWithWorkloadIdentityToken |
Zainstaluj obiekt BlobFuse przy użyciu tokenu tożsamości obciążenia. Ta funkcja jest oferowana w wersji zapoznawczej. Określ wartość jako ciąg. |
"true", "false" |
Nie. | "false" |
| --- | Następujące parametry są przeznaczone tylko dla funkcji: odczyt klucza konta Blobfuse lub tokenu SAS z magazynu kluczy | --- | --- | --- |
volumeAttributes.keyVaultURL |
Określ nazwę DNS usługi Azure Key Vault. | {vault-name}.vault.azure.net | Nie. | |
volumeAttributes.keyVaultSecretName |
Określ nazwę tajemnicy Azure Key Vault. | Istniejąca nazwa tajemnicy w Azure Key Vault. | Nie. | |
volumeAttributes.keyVaultSecretVersion |
Wersja tajemnicy w usłudze Azure Key Vault. | Istniejąca wersja | Nie. | Jeśli jest pusty, sterownik używa bieżącej wersji. |
Utwórz kontener przechowywania Blob
Podczas tworzenia zasobu usługi Azure Blob Storage do użycia z usługą AKS można utworzyć zasób w grupie zasobów węzła. Takie podejście umożliwia klastrowi usługi AKS uzyskiwanie dostępu do zasobu magazynu obiektów Blob i zarządzanie tym zasobem.
Pobierz nazwę grupy zasobów węzła klastra usługi AKS przy użyciu polecenia
az aks showz parametrem--query nodeResourceGroup.az aks show --resource-group myResourceGroup --name myAKSCluster --query nodeResourceGroup -o tsvDane wyjściowe polecenia przypominają następujący przykład:
MC_myResourceGroup_myAKSCluster_eastusJeśli utworzysz konto magazynu w grupie zasobów węzła, użyj nazwy grupy zasobów węzła zwróconej w poprzednim kroku (na przykład
MC_myResourceGroup_myAKSCluster_eastus). Następnie wykonaj kroki opisane w temacie Zarządzanie magazynem obiektów blob , aby autoryzować dostęp i utworzyć kontener na tym koncie magazynu.
Montaż woluminu
W tej sekcji zainstalujesz wolumin trwały przy użyciu protokołu NFS lub Blobfuse.
Konto magazynu musi mieć włączoną przestrzeń nazw NFS w wersji 3 i hierarchiczną. Instalowanie usługi Blob Storage przy użyciu protokołu NFS w wersji 3 nie jest uwierzytelniane przy użyciu klucza konta. Podsieć węzła usługi AKS musi mieć dostęp sieciowy do konta magazynu z obsługą systemu plików NFS za pośrednictwem wybranej sieci wirtualnej lub prywatnego punktu końcowego. Upewnij się, że sieciowe grupy zabezpieczeń zezwalają na ruch NFS na portach 111 i 2048. Aby uzyskać więcej informacji na temat konfigurowania dostępu systemu plików NFS do konta magazynu, zobacz Instalowanie 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 wklej następujący kod YAML. W obszarzespec.csi.volumeAttributes, zaktualizujresourceGroup,storageAccount, icontainerName.Uwaga / Notatka
volumeHandlewartość powinna być unikatowym identyfikatorem woluminu dla każdego kontenera magazynu z identycznymi obiektami blob w klastrze. Znak#i/są zarezerwowane do użytku wewnętrznego i nie można go 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 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, sterownik CSI usługi Blob Storage Azure nie używa tej wartości, ponieważ można elastycznie zapisywać dane do momentu osiągnięcia limitu pojemności konta magazynu. Wartość jest używana tylko do dopasowywania rozmiaru między telewizorami i komputerami PVC. W przykładzie użyto fikcyjnej wartości
1Pi; ta wartość nie ustawia pojemności kontenera usługi Blob Storage.Użyj polecenia
kubectl create, aby utworzyć PVkubectl create -f pv-blob-nfs.yamlUtwórz plik o nazwie
pvc-blob-nfs.yamli wklej następujący kod YAML. W obszarzevolumeNamezaktualizuj wartość, aby była zgodna z nazwą pv utworzonej w poprzednim kroku.kind: PersistentVolumeClaim apiVersion: v1 metadata: name: pvc-blob spec: accessModes: - ReadWriteMany resources: requests: storage: 10Gi volumeName: pv-blob storageClassName: azureblob-nfs-premiumUtwórz PVC przy użyciu polecenia
kubectl create:kubectl create -f pvc-blob-nfs.yaml
Użyj woluminu trwałego
Poniższy kod YAML tworzy zasobnik, który używa obiektu PV lub PVC o nazwie pvc-blob utworzonego wcześniej w celu zainstalowania magazynu obiektów blob platformy Azure w ścieżce /mnt/blob .
Utwórz plik o nazwie
nginx-pod-blob.yamli wklej następujący manifest YAML. Upewnij się, że element jest zgodny zclaimNameutworzonym wcześniej elementem PVC (pvc-blob).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-blobUtwórz zasobnik i zamontuj PVC przy użyciu polecenia
kubectl create:kubectl create -f nginx-pod-blob.yamlUtwórz interaktywną sesję powłoki z zasobnikiem przy użyciu następującego
kubectl execpolecenia, aby sprawdzić, czy Blob Storage jest poprawnie zamontowana.kubectl exec -it nginx-blob -- df -hDane wyjściowe powinny przypominać następujące przykładowe dane wyjściowe, które pokazują, że usługa Blob Storage jest instalowana w ścieżce
/mnt/blob:Filesystem Size Used Avail Use% Mounted on ... blobfuse 14G 41M 13G 1% /mnt/blob ...