Tworzenie i używanie woluminu z usługą Azure Files w usłudze Azure Kubernetes Service (AKS)
Wolumin trwały reprezentuje element magazynu, który został aprowizowany do użycia z zasobnikami Kubernetes. Można użyć woluminu trwałego z jednym lub wieloma zasobnikami i może być dynamicznie lub statycznie aprowizowany. Jeśli wiele zasobników wymaga współbieżnego dostępu do tego samego woluminu magazynu, możesz użyć usługi Azure Files do nawiązania połączenia przy użyciu protokołu bloku komunikatów serwera (SMB). W tym artykule pokazano, jak dynamicznie utworzyć udział plików platformy Azure do użycia przez wiele zasobników w klastrze usługi Azure Kubernetes Service (AKS).
W tym artykule pokazano, w jaki sposób wykonać następujące czynności:
- Współpracuj z dynamicznym woluminem trwałym (PV), instalując sterownik interfejsu magazynu kontenerów (CSI) i dynamicznie tworząc co najmniej jeden udział plików platformy Azure w celu dołączenia do zasobnika.
- Pracuj ze statycznym serwerem pv, tworząc co najmniej jeden udział plików platformy Azure lub używając istniejącego i dołączając go do zasobnika.
Aby uzyskać więcej informacji na temat woluminów Kubernetes, zobacz Opcje magazynu dla aplikacji w usłudze AKS.
Zanim rozpoczniesz
- Potrzebujesz konta usługi Azure Storage.
- Upewnij się, że masz zainstalowany i skonfigurowany interfejs wiersza polecenia platformy Azure w wersji 2.0.59 lub nowszej. Uruchom polecenie
az --version
, aby dowiedzieć się, jaka wersja jest używana. Jeśli konieczna będzie instalacja lub uaktualnienie, zobacz Instalowanie interfejsu wiersza polecenia platformy Azure. - Podczas wybierania między udziałami plików w warstwie Standardowa i Premium ważne jest, aby zrozumieć model aprowizacji i wymagania oczekiwanego wzorca użycia, który ma być uruchamiany 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.
Dynamiczne aprowizowania woluminu
Ta sekcja zawiera wskazówki dla administratorów klastra, którzy chcą aprowizować co najmniej jeden wolumin trwały zawierający szczegóły co najmniej jednego udziału w usłudze Azure Files. Trwałe oświadczenie woluminu (PVC) używa obiektu klasy magazynu do dynamicznego aprowizowania udziału plików usługi Azure Files.
Parametry klasy magazynu dla dynamicznych trwałychvolumes
Poniższa tabela zawiera parametry, których można użyć do zdefiniowania niestandardowej klasy magazynu dla elementu PersistentVolumeClaim.
Nazwisko | Znaczenie | Dostępna wartość | Obowiązkowy | Domyślna wartość |
---|---|---|---|---|
accountAccessTier | Warstwa dostępu dla konta magazynu | Konto standardowe może wybrać Hot lub Cool , a konto Premium może wybrać tylko pozycję Premium . |
Nie. | Pusty. Użyj ustawienia domyślnego dla różnych typów kont magazynu. |
accountQuota | Ogranicza limit przydziału dla konta. Możesz określić maksymalny limit przydziału w GB (domyślnie 102400 GB). Jeśli konto przekroczy określony limit przydziału, sterownik pomija wybranie konta. | Nie. | 102400 |
|
allowBlobPublicAccess | Zezwalaj lub nie zezwalaj na publiczny dostęp do wszystkich obiektów blob lub kontenerów dla konta magazynu utworzonego przez sterownik. | true lub false |
Nie. | false |
disableDeleteRetentionPolicy | Określ, czy wyłączyć funkcję DeleteRetentionPolicy dla konta magazynu utworzonego przez sterownik. | true lub false |
Nie. | false |
enableLargeFileShares | Określ, czy używać konta magazynu z włączonymi dużymi udziałami plików, czy nie. Jeśli ta flaga jest ustawiona na true i konto magazynu z włączonymi dużymi udziałami plików nie istnieje, zostanie utworzone nowe konto magazynu z włączonymi dużymi udziałami plików. Ta flaga powinna być używana z jednostki SKU w warstwie Standardowa, ponieważ konta magazynu utworzone przy użyciu jednostki SKU Premium mają largeFileShares domyślnie włączoną opcję. |
true lub false |
Nie. | fałsz |
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 pobrać 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 | Określ typ punktu końcowego sieci dla konta magazynu utworzonego przez sterownik. Jeśli privateEndpoint zostanie określony, dla konta magazynu zostanie utworzony prywatny punkt końcowy. W innych przypadkach punkt końcowy usługi jest tworzony domyślnie. |
"",privateEndpoint |
Nie. | "" |
protokół | Określ protokół udziału 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 dla konta magazynu utworzonego 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 udziału plików | Konto ogólnego przeznaczenia w wersji 2 może wybierać między TransactionOptimized (ustawieniem domyślnym), Hot i Cool . Typ konta usługi Premium Storage tylko dla udziałów plików. |
Nie. | Pusty. Użyj ustawienia domyślnego dla różnych typów kont magazynu. |
shareName | Określ nazwę udziału plików platformy Azure. | Istniejąca lub nowa nazwa udziału plików platformy Azure. | Nie. | Jeśli jest pusty, sterownik generuje nazwę udziału plików platformy Azure. |
shareNamePrefix | Określ prefiks nazwy udziału plików platformy Azure 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 |
Nie. | StandardSSD_LRS Minimalny rozmiar udziału plików dla typu konta Premium wynosi 100 GB. Typ konta magazynu ZRS jest obsługiwany w ograniczonych regionach. Udział plików NFS obsługuje tylko typ konta Premium. |
storageAccount | Określ nazwę konta usługi Azure Storage. | storageAccountName | -Nie | Jeśli określona nazwa konta magazynu nie zostanie podana, sterownik wyszuka odpowiednie konto magazynu zgodne z ustawieniami konta w tej samej grupie zasobów. Jeśli nie uda się znaleźć pasującego konta magazynu, 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 magazynu 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. | "" |
--- | Następujące parametry dotyczą tylko protokołu SMB | --- | --- | |
identyfikator subskrypcji | Określ identyfikator subskrypcji platformy Azure, w którym jest tworzony udział plików platformy Azure. | Identyfikator subskrypcji Azure | Nie. | Jeśli nie jest pusty, resourceGroup należy podać. |
storeAccountKey | Określ, czy klucz konta ma być przechowywany w kluczu tajnym platformy Kubernetes. | true lub false false oznacza, że sterownik używa tożsamości kubelet do pobrania klucza konta. |
Nie. | true |
secretName | Określ nazwę wpisu tajnego do przechowywania klucza konta. | Nie. | ||
secretNamespace | Określ przestrzeń nazw wpisu tajnego do przechowywania klucza konta. Uwaga: Jeśli secretNamespace nie zostanie określony, wpis tajny zostanie utworzony w tej samej przestrzeni nazw co zasobnik. |
default ,kube-system itp. |
Nie. | Przestrzeń nazw PVC, na przykład csi.storage.k8s.io/pvc/namespace |
useDataPlaneAPI | Określ, czy używać interfejsu API płaszczyzny danych do tworzenia/usuwania/zmiany rozmiaru udziału plików, co może rozwiązać problem z ograniczaniem przepływności interfejsu API protokołu SRP, ponieważ interfejs API płaszczyzny danych nie ma prawie żadnego limitu, podczas gdy w przypadku ustawienia zapory lub sieci wirtualnej na koncie magazynu zakończy się niepowodzeniem. | true lub false |
Nie. | false |
--- | Następujące parametry dotyczą tylko protokołu NFS | --- | --- | |
mountPermissions | Zainstalowane uprawnienia folderu. Wartość domyślna to 0777 . Jeśli ustawiono 0 wartość , sterownik nie wykonuje operacji chmod po zainstalowaniu |
0777 |
Nie. | |
rootSquashType | Określ zachowanie ściągania katalogu głównego w udziale. Wartość domyślna to NoRootSquash . |
AllSquash , , NoRootSquash RootSquash |
Nie. | |
--- | Następujące parametry dotyczą tylko ustawień sieci wirtualnej. Na przykład NFS, prywatny punkt końcowy | --- | --- | |
fsGroupChangePolicy | Wskazuje, jak sterownik zmienia własność woluminu. Zasobnik securityContext.fsGroupChangePolicy jest ignorowany. |
OnRootMismatch (ustawienie domyślne), Always , None |
Nie. | OnRootMismatch |
subnetName | Nazwa podsieci | Istniejąca nazwa podsieci węzła agenta. | Nie. | Jeśli jest pusty, sterownik używa subnetName wartości w pliku konfiguracji chmury platformy Azure. |
vnetName | Nazwa sieci wirtualnej | Istniejąca nazwa sieci wirtualnej. | Nie. | Jeśli jest pusty, sterownik używa vnetName wartości w pliku konfiguracji chmury platformy Azure. |
vnetResourceGroup | Określ grupę zasobów sieci wirtualnej, w której zdefiniowano sieć wirtualną. | Istniejąca nazwa grupy zasobów. | Nie. | Jeśli jest pusty, sterownik używa vnetResourceGroup wartości w pliku konfiguracji chmury platformy Azure. |
Tworzenie klasy magazynu
Klasy magazynu definiują sposób tworzenia udziału plików platformy Azure. Konto magazynu jest tworzone automatycznie w grupie zasobów węzła do użycia z klasą magazynu do przechowywania udziału plików usługi Azure Files. Wybierz następujące jednostki SKU nadmiarowości magazynu platformy Azure dla programu skuName
:
Standard_LRS
: Magazyn lokalnie nadmiarowy (LRS) w warstwie StandardowaStandard_GRS
: Magazyn geograficznie nadmiarowy w warstwie Standardowa (GRS)Standard_ZRS
: Magazyn strefowo nadmiarowy w warstwie Standardowa (ZRS)Standard_RAGRS
: magazyn geograficznie nadmiarowy z dostępem do odczytu (RA-GRS)Premium_LRS
: Magazyn lokalnie nadmiarowy w warstwie Premium (LRS)Premium_ZRS
: Magazyn strefowo nadmiarowy w warstwie Premium (ZRS)
Uwaga
Minimalny udział plików w warstwie Premium wynosi 100 GB.
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.yaml
i skopiuj w poniższym przykładowym manifeście. Aby uzyskać więcej informacji na tematmountOptions
programu , 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_LRS
Utwórz klasę magazynu przy użyciu
kubectl apply
polecenia .kubectl apply -f azure-file-sc.yaml
Tworzenie trwałego oświadczenia woluminu
Trwałe oświadczenie woluminu (PVC) używa obiektu klasy magazynu do dynamicznego aprowizowania udziału plików platformy Azure. Poniższy kod YAML umożliwia utworzenie trwałego oświadczenia woluminu 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.yaml
i skopiuj go w następującym języku YAML. Upewnij się, że klasastorageClassName
magazynu utworzona w poprzednim kroku jest zgodna z klasą magazynu.apiVersion: v1 kind: PersistentVolumeClaim metadata: name: my-azurefile spec: accessModes: - ReadWriteMany storageClassName: my-azurefile resources: requests: storage: 100Gi
Uwaga
Jeśli używasz
Premium_LRS
jednostki SKU dla klasy magazynu, minimalną wartościąstorage
musi być100Gi
.Utwórz oświadczenie trwałego woluminu
kubectl apply
przy użyciu polecenia .kubectl apply -f azure-file-pvc.yaml
Po zakończeniu udział plików zostanie utworzony. Zostanie również utworzony wpis tajny kubernetes zawierający informacje o połączeniu i poświadczenia. Możesz użyć
kubectl get
polecenia , aby wyświetlić stan PCV:kubectl get pvc my-azurefile
Dane 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
Używanie woluminu trwałego
Poniższy kod YAML tworzy zasobnik, który używa trwałego oświadczenia woluminu my-azurefile do zainstalowania udziału plików usługi Azure Files w ścieżce /mnt/azure . W przypadku kontenerów systemu Windows Server określ konwencję mountPath
ścieżki systemu Windows, taką jak "D:".
Utwórz plik o nazwie
azure-pvc-files.yaml
i skopiuj go w następującym pliku YAML. Upewnij się, że elementclaimName
jest zgodny z elementem PVC utworzonym 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-azurefile
Utwórz zasobnik przy użyciu
kubectl apply
polecenia .kubectl apply -f azure-pvc-files.yaml
Masz 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
kubectl describe
polecenia . 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 [...]
Mount options (Opcje instalacji)
Wartość domyślna elementu fileMode
i dirMode
to 0777 dla platformy Kubernetes w wersji 1.13.0 lub nowszej. Jeśli dynamicznie tworzysz wolumin trwały za pomocą klasy magazynu, możesz określić opcje instalacji w obiekcie klasy magazynu. Aby uzyskać więcej informacji, zobacz Opcje instalacji. W poniższym przykładzie ustawiono wartość 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
Korzystanie z tagów platformy Azure
Aby uzyskać więcej informacji na temat używania tagów platformy Azure, zobacz Używanie tagów platformy Azure w usłudze Azure Kubernetes Service (AKS).
Statyczna aprowizacja woluminu
Ta sekcja zawiera wskazówki dla administratorów klastra, którzy chcą utworzyć co najmniej jeden wolumin trwały zawierający szczegóły istniejącego udziału usługi Azure Files do użycia z obciążeniem.
Statyczne parametry aprowizacji dla elementu PersistentVolume
Poniższa tabela zawiera parametry, których można użyć do zdefiniowania elementu PersistentVolume.
Nazwisko | Znaczenie | Dostępna wartość | Obowiązkowy | Domyślna wartość |
---|---|---|---|---|
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. | storageAccountName | Tak | |
volumeAttributes.shareName | Określ nazwę udziału plików platformy 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ół udziału 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. |
--- | Następujące parametry dotyczą tylko protokołu SMB | --- | --- | --- |
volumeAttributes.secretName | Określ nazwę wpisu tajnego, która przechowuje nazwę i klucz konta magazynu. | Nie. | ||
volumeAttributes.secretNamespace | Określ przestrzeń nazw wpisu tajnego. | default ,kube-system itp. |
Nie. | Przestrzeń nazw PVC (csi.storage.k8s.io/pvc/namespace ) |
nodeStageSecretRef.name | Określ nazwę wpisu tajnego, która przechowuje nazwę i klucz konta magazynu. | Istniejąca nazwa wpisu tajnego. | Nie. | Jeśli jest pusty, sterownik używa tożsamości kubelet do pobrania klucza konta. |
nodeStageSecretRef.namespace | Określ przestrzeń nazw wpisu tajnego. | Przestrzeń nazw platformy Kubernetes | Nie. | |
--- | Następujące parametry dotyczą tylko protokołu NFS | --- | --- | --- |
volumeAttributes.fsGroupChangePolicy | Wskazuje, jak sterownik zmienia własność woluminu. Zasobnik securityContext.fsGroupChangePolicy jest ignorowany. |
OnRootMismatch (ustawienie domyślne), Always , None |
Nie. | OnRootMismatch |
volumeAttributes.mountPermissions | Określ zainstalowane uprawnienia folderu. Wartość domyślna to 0777 . |
Nie. |
Tworzenie udziału plików platformy Azure
Aby można było użyć udziału plików usługi Azure Files jako woluminu Kubernetes, musisz utworzyć konto usługi Azure Storage i udział plików.
Pobierz nazwę grupy zasobów przy użyciu
az aks show
polecenia z parametrem--query nodeResourceGroup
.az aks show --resource-group myResourceGroup --name myAKSCluster --query nodeResourceGroup -o tsv
Dane wyjściowe polecenia przypominają następujący przykład:
MC_myResourceGroup_myAKSCluster_eastus
Utwórz konto magazynu przy użyciu
az storage account create
polecenia z parametrem--sku
. Następujące polecenie tworzy konto magazynu przy użyciuStandard_LRS
jednostki SKU. Pamiętaj, aby zastąpić następujące symbole zastępcze:myAKSStorageAccount
z nazwą konta magazynunodeResourceGroupName
z nazwą grupy zasobów, w której znajdują się węzły klastra usługi AKSlocation
z nazwą regionu, w którym ma zostać utworzony zasób. Powinien on być tym samym regionem co węzły klastra usługi AKS.
az storage account create -n myAKSStorageAccount -g nodeResourceGroupName -l location --sku Standard_LRS
Wyeksportuj parametry połączenia jako zmienną środowiskową przy użyciu następującego polecenia, które służy do tworzenia udziału plików.
export AZURE_STORAGE_CONNECTION_STRING=$(az storage account show-connection-string -n storageAccountName -g resourceGroupName -o tsv)
Utwórz udział plików przy użyciu
az storage share create
polecenia . Pamiętaj, aby zastąpićshareName
ciąg nazwą udziału.az storage share create -n shareName --connection-string $AZURE_STORAGE_CONNECTION_STRING
Wyeksportuj klucz konta magazynu jako zmienną środowiskową przy użyciu następującego polecenia.
STORAGE_KEY=$(az storage account keys list --resource-group nodeResourceGroupName --account-name myAKSStorageAccount --query "[0].value" -o tsv)
Echo nazwy i klucza konta magazynu przy użyciu następującego polecenia. Skopiuj te informacje, ponieważ te wartości są potrzebne podczas tworzenia woluminu Kubernetes.
echo Storage account key: $STORAGE_KEY
Tworzenie wpisu tajnego platformy Kubernetes
Platforma Kubernetes potrzebuje poświadczeń, aby uzyskać dostęp do udziału plików utworzonego w poprzednim kroku. Te poświadczenia są przechowywane w wpisie tajnym kubernetes, do którego odwołuje się podczas tworzenia zasobnika Kubernetes.
Utwórz wpis tajny przy użyciu
kubectl create secret
polecenia . Poniższy przykład tworzy wpis tajny o nazwie azure-secret i wypełnia nazwę azurestorageaccountname i azurestorageaccountkey z poprzedniego kroku. Aby użyć istniejącego konta usługi Azure Storage, podaj nazwę konta i klucz.kubectl create secret generic azure-secret --from-literal=azurestorageaccountname=myAKSStorageAccount --from-literal=azurestorageaccountkey=$STORAGE_KEY
Instalowanie udziału plików jako woluminu trwałego
Utwórz nowy plik o nazwie
azurefiles-pv.yaml
i skopiuj w poniższej zawartości. W obszarzecsi
, zaktualizujvolumeHandle
resourceGroup
, ishareName
. W przypadku opcji instalacji wartość domyślna ifileMode
dirMode
to 0777.apiVersion: v1 kind: PersistentVolume metadata: annotations: pv.kubernetes.io/provisioned-by: file.csi.azure.com name: azurefile spec: capacity: storage: 5Gi accessModes: - ReadWriteMany persistentVolumeReclaimPolicy: Retain storageClassName: azurefile-csi csi: driver: file.csi.azure.com volumeHandle: "{resource-group-name}#{account-name}#{file-share-name}" # make sure this volumeid is unique for every identical share in the cluster volumeAttributes: resourceGroup: resourceGroupName # optional, only set this when storage account is not in the same resource group as node shareName: aksshare nodeStageSecretRef: name: azure-secret namespace: default mountOptions: - dir_mode=0777 - file_mode=0777 - uid=0 - gid=0 - mfsymlinks - cache=strict - nosharesock - nobrl # disable sending byte range lock requests to the server and for applications which have challenges with posix locks
Utwórz wolumin trwały przy użyciu
kubectl create
polecenia .kubectl create -f azurefiles-pv.yaml
Utwórz nowy plik o nazwie azurefiles-mount-options-pvc.yaml i skopiuj następującą zawartość.
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: azurefile spec: accessModes: - ReadWriteMany storageClassName: azurefile-csi volumeName: azurefile resources: requests: storage: 5Gi
Utwórz element PersistentVolumeClaim przy użyciu
kubectl apply
polecenia .kubectl apply -f azurefiles-mount-options-pvc.yaml
Sprawdź, czy element PersistentVolumeClaim został utworzony i powiązany z elementem
kubectl get
PersistentVolume przy użyciu polecenia .kubectl get pvc azurefile
Dane wyjściowe polecenia przypominają następujący przykład:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE azurefile Bound azurefile 5Gi RWX azurefile 5s
Zaktualizuj specyfikację kontenera, aby odwołać się do elementu PersistentVolumeClaim i zasobnika w pliku YAML. Na przykład:
... volumes: - name: azure persistentVolumeClaim: claimName: azurefile
Nie można zaktualizować specyfikacji zasobnika, dlatego usuń zasobnik przy użyciu
kubectl delete
polecenia i utwórz go ponownie za pomocąkubectl apply
polecenia .kubectl delete pod mypod kubectl apply -f azure-files-pod.yaml
Instalowanie udziału plików jako woluminu wbudowanego
Uwaga
Aby uniknąć problemu z wydajnością, zalecamy użycie woluminu trwałego zamiast woluminu wbudowanego, gdy wiele zasobników uzyskuje dostęp do tego samego udziału plików. Wolumin wbudowany może uzyskiwać dostęp tylko do wpisów tajnych w tej samej przestrzeni nazw co zasobnik. Aby określić inną przestrzeń nazw wpisów tajnych, użyj woluminu trwałego.
Aby zainstalować udział plików usługi Azure Files w zasobniku, należy skonfigurować wolumin w specyfikacji kontenera.
- Utwórz nowy plik o nazwie
azure-files-pod.yaml
i skopiuj w poniższej zawartości. Jeśli zmieniono nazwę udziału plików lub nazwę wpisu tajnego, zaktualizuj elementyshareName
isecretName
. Można również zaktualizować elementmountPath
, czyli ścieżkę, w której znajduje się udział Pliki zainstalowany w zasobniku. W przypadku kontenerów systemu Windows Server określ konwencjęmountPath
ścieżki systemu Windows, taką jak "D:".
apiVersion: v1
kind: Pod
metadata:
name: mypod
spec:
nodeSelector:
kubernetes.io/os: linux
containers:
- image: 'mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine'
name: mypod
resources:
requests:
cpu: 100m
memory: 128Mi
limits:
cpu: 250m
memory: 256Mi
volumeMounts:
- name: azure
mountPath: /mnt/azure
readOnly: false
volumes:
- name: azure
csi:
driver: file.csi.azure.com
volumeAttributes:
secretName: azure-secret # required
shareName: aksshare # required
mountOptions: 'dir_mode=0777,file_mode=0777,cache=strict,actimeo=30,nosharesock,nobrl' # optional
Utwórz zasobnik przy użyciu
kubectl apply
polecenia .kubectl apply -f azure-files-pod.yaml
Masz teraz uruchomiony zasobnik z udziałem plików usługi Azure Files zainstalowanym w folderze /mnt/azure. Możesz sprawdzić, czy udział został pomyślnie zainstalowany przy użyciu
kubectl describe
polecenia .kubectl describe pod mypod
Następne kroki
Aby uzyskać informacje o parametrach sterownika CSI usługi Azure Files, zobacz parametry sterownika CSI.
Aby uzyskać informacje o skojarzonych najlepszych rozwiązaniach, zobacz Najlepsze rozwiązania dotyczące magazynu i tworzenia kopii zapasowych w usłudze AKS.
Azure Kubernetes Service