Dynamiczne tworzenie i korzystanie z trwałego woluminu za pomocą usługi Azure Files w usłudze Azure Kubernetes Service (AKS)

Trwały wolumin reprezentuje fragment magazynu, który został aprowowany do użytku z zasobnikami kubernetes. Wolumin trwały może być używany przez jeden lub wiele zasobników i może być aprowowany dynamicznie lub statycznie. 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 przedstawiono sposób dynamicznego tworzenia udziału Azure Files do użytku przez wiele zasobników w klastrze usługi Azure Kubernetes Service (AKS).

Aby uzyskać więcej informacji na temat woluminów Kubernetes, zobacz Opcje magazynu dla aplikacji w u usługi AKS.

Zanim rozpoczniesz

W tym artykule przyjęto założenie, że masz istniejący klaster usługi AKS. Jeśli potrzebujesz klastra usługi AKS, zobacz przewodnik Szybki start usługi AKS przy użyciu interfejsu wiersza polecenia platformy Azure lub interfejsu Azure Portal.

Musisz również zainstalować i skonfigurować 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.

Tworzenie klasy magazynu

Klasa magazynu służy do definiowania sposobu tworzenia udziału plików platformy Azure. Konto magazynu jest automatycznie tworzone w grupie zasobów węzła do użycia z klasą magazynu do przechowywania udziałów plików platformy Azure. Wybierz jedną z następujących nadmiarowości usługi Azure Storage dla nazwy skuName:

  • Standard_LRS — standardowy magazyn lokalnie nadmiarowy (LRS)
  • Standard_GRS — standardowy magazyn geograficznie nadmiarowy (GRS)
  • Standard_ZRS — standardowy magazyn strefowo nadmiarowy (ZRS)
  • Standard_RAGRS — standardowy magazyn geograficznie nadmiarowy z dostępem do odczytu (RA-GRS)
  • Premium_LRS — magazyn lokalnie nadmiarowy (LRS) w chmurze Premium
  • Premium_ZRS — magazyn strefowo nadmiarowy w chmurze (ZRS)

Uwaga

Azure Files premium storage w klastrach usługi AKS z usługą Kubernetes w wersji 1.13 lub wyższej, minimalny udział plików w chmurze Premium wynosi 100 GB

Aby uzyskać więcej informacji na temat klas magazynu Kubernetes dla Azure Files, zobacz Klasy magazynu Kubernetes.

Utwórz plik o nazwie azure-file-sc.yaml i skopiuj go w poniższym przykładowym manifeście. Aby uzyskać więcej informacji na temat opcji instalacji, zobacz sekcję Opcje instalacji.

kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: my-azurefile
provisioner: kubernetes.io/azure-file
mountOptions:
  - dir_mode=0777
  - file_mode=0777
  - uid=0
  - gid=0
  - mfsymlinks
  - cache=strict
  - actimeo=30
parameters:
  skuName: Standard_LRS

Utwórz klasę magazynu za pomocą polecenia kubectl apply:

kubectl apply -f azure-file-sc.yaml

Tworzenie trwałego oświadczenia woluminu

Trwałe oświadczenie woluminu używa obiektu klasy magazynu do dynamicznego aprowizowanie udziału plików platformy Azure. Następujący kod YAML może służyć do tworzenia trwałego oświadczenia woluminu o rozmiarze 5 GB przy użyciu dostępu ReadWriteMany. Aby uzyskać więcej informacji na temat trybów dostępu, zobacz dokumentację dotyczącą trwałych woluminów kubernetes.

Teraz utwórz plik o nazwie azure-file-pvc.yaml i skopiuj go w poniższym pliku YAML. Upewnij się, że storageClassName odpowiada klasie magazynu utworzonej w ostatnim kroku:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: my-azurefile
spec:
  accessModes:
    - ReadWriteMany
  storageClassName: my-azurefile
  resources:
    requests:
      storage: 5Gi

Uwaga

Jeśli używasz Premium_LRS sku dla klasy magazynu, minimalna wartość magazynu musi być 100Gi.

Utwórz trwałe oświadczenie woluminu za pomocą polecenia kubectl apply:

kubectl apply -f azure-file-pvc.yaml

Po zakończeniu zostanie utworzony udział plików. Tworzony jest również klucz tajny kubernetes, który zawiera informacje o połączeniu i poświadczenia. Możesz użyć polecenia kubectl get, aby wyświetlić stan wiersza POLECENIA:

$ kubectl get pvc my-azurefile

NAME           STATUS    VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS      AGE
my-azurefile   Bound     pvc-8436e62e-a0d9-11e5-8521-5a8664dc0477   5Gi        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 instalacji udziału plików platformy Azure w ścieżce /mnt/azure. W przypadku kontenerów systemu Windows Server określ ścieżkę mountPath przy użyciu konwencji ścieżki systemu Windows, na przykład "D:".

Utwórz plik o azure-pvc-files.yaml nazwie i skopiuj go w poniższym pliku YAML. Upewnij się, że claimName pasuje do rekordu WSZYSTKIEGO utworzonego w ostatnim 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
  volumes:
    - name: volume
      persistentVolumeClaim:
        claimName: my-azurefile

Utwórz zasobnik za pomocą polecenia kubectl apply.

kubectl apply -f azure-pvc-files.yaml

Masz teraz uruchomiony zasobnik z twoim Azure Files zainstalowanym w katalogu /mnt/azure. Tę konfigurację można zobaczyć podczas inspekcji zasobnika za pośrednictwem programu kubectl describe pod mypod . 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 dla trybów fileMode i dirMode to 0777 dla kubernetes w wersji 1.13.0 lub nowszej. W przypadku dynamicznego tworzenia trwałego woluminu z klasą magazynu można określić opcje instalacji w obiekcie klasy magazynu. Poniższy przykład ustawia 0777:

kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: my-azurefile
provisioner: kubernetes.io/azure-file
mountOptions:
  - dir_mode=0777
  - file_mode=0777
  - uid=0
  - gid=0
  - mfsymlinks
  - cache=strict
  - actimeo=30
parameters:
  skuName: Standard_LRS

Następne kroki

Aby uzyskać skojarzone najlepsze rozwiązania, zobacz Best practices for storage and backups in AKS(Najlepsze rozwiązania dotyczące magazynu i kopii zapasowych w u usługi AKS).

Aby uzyskać parametry klasy magazynu, zobacz Dynamic Provision.

Dowiedz się więcej na temat trwałych woluminów Kubernetes korzystających z Azure Files.