Azure Kubernetes Service (AKS) で Azure Files を含む永続ボリュームを動的に作成して使用するDynamically create and use a persistent volume with Azure Files in Azure Kubernetes Service (AKS)

永続ボリュームとは、Kubernetes ポッドで使用するためにプロビジョニングされているストレージの一部です。A persistent volume represents a piece of storage that has been provisioned for use with Kubernetes pods. 永続ボリュームは 1 つまたは複数のポッドで使用でき、動的または静的にプロビジョニングできます。A persistent volume can be used by one or many pods, and can be dynamically or statically provisioned. 複数のポッドが同じストレージ ボリュームに同時アクセスする必要がある場合は、Azure Files を使用し、サーバー メッセージ ブロック (SMB) プロトコルを使用して接続します。If multiple pods need concurrent access to the same storage volume, you can use Azure Files to connect using the Server Message Block (SMB) protocol. この記事では、Azure Kubernetes Service (AKS) クラスターの複数のポッドで使用するために、Azure Files 共有を動的に作成する方法を示します。This article shows you how to dynamically create an Azure Files share for use by multiple pods in an Azure Kubernetes Service (AKS) cluster.

Kubernetes ボリュームの詳細については、AKS でのアプリケーションのストレージ オプションに関するページを参照してください。For more information on Kubernetes volumes, see Storage options for applications in AKS.

開始する前にBefore you begin

この記事は、AKS クラスターがすでに存在していることを前提としています。This article assumes that you have an existing AKS cluster. AKS クラスターが必要な場合は、Azure CLI を使用した場合または Azure portal を使用した場合の AKS のクイックスタートを参照してください。If you need an AKS cluster, see the AKS quickstart using the Azure CLI or using the Azure portal.

また、Azure CLI バージョン 2.0.59 以降がインストールされ、構成されている必要もあります。You also need the Azure CLI version 2.0.59 or later installed and configured. バージョンを確認するには、az --version を実行します。Run az --version to find the version. インストールまたはアップグレードする必要がある場合は、Azure CLI のインストールに関するページを参照してください。If you need to install or upgrade, see Install Azure CLI.

ストレージ クラスの作成Create a storage class

ストレージ クラスを使用して、Azure ファイル共有を作成する方法を定義します。A storage class is used to define how an Azure file share is created. ストレージ アカウントは、ストレージ クラスと共に使用して Azure ファイル共有を保持するために、ノード リソース グループ内に自動的に作成されます。A storage account is automatically created in the node resource group for use with the storage class to hold the Azure file shares. skuName には、次の Azure Storage の冗長性から選択します。Choose of the following Azure storage redundancy for skuName :

  • Standard_LRS - 標準のローカル冗長ストレージ (LRS)Standard_LRS - standard locally redundant storage (LRS)
  • Standard_GRS - 標準の geo 冗長ストレージ (GRS)Standard_GRS - standard geo-redundant storage (GRS)
  • Standard_ZRS - 標準のゾーン冗長ストレージ (ZRS)Standard_ZRS - standard zone redundant storage (ZRS)
  • Standard_RAGRS - 標準の読み取りアクセス geo 冗長ストレージ (RA-GRS)Standard_RAGRS - standard read-access geo-redundant storage (RA-GRS)
  • Premium_LRS - Premium ローカル冗長ストレージ (LRS)Premium_LRS - premium locally redundant storage (LRS)
  • Premium_ZRS - プレミアム ゾーン冗長ストレージ (ZRS)Premium_ZRS - premium zone redundant storage (ZRS)

注意

Azure Files では、Kubernetes 1.13 以降が実行される AKS クラスターでの Premium Storage がサポートされています。Premium ファイル共有の下限は 100GB ですAzure Files support premium storage in AKS clusters that run Kubernetes 1.13 or higher, minimum premium file share is 100GB

Azure Files 用の Kubernetes ストレージ クラスの詳細については、Kubernetes ストレージ クラスに関するページを参照してください。For more information on Kubernetes storage classes for Azure Files, see Kubernetes Storage Classes.

azure-file-sc.yaml という名前のファイルを作成し、次の例のマニフェストにコピーします。Create a file named azure-file-sc.yaml and copy in the following example manifest. mountOptions の詳細については、「 マウント オプション」セクションを参照してください。For more information on mountOptions , see the Mount options section.

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
parameters:
  skuName: Standard_LRS

kubectl apply コマンドを使用してストレージ クラスを作成します。Create the storage class with the kubectl apply command:

kubectl apply -f azure-file-sc.yaml

永続ボリューム要求の作成Create a persistent volume claim

永続ボリューム要求 (PVC) は、ストレージ クラス オブジェクトを使用して、Azure ファイル共有を動的にプロビジョニングします。A persistent volume claim (PVC) uses the storage class object to dynamically provision an Azure file share. 次の YAML を使うと、サイズが 5 GB で、 ReadWriteMany アクセス権の永続ボリューム要求を作成できます。The following YAML can be used to create a persistent volume claim 5 GB in size with ReadWriteMany access. アクセス モードの詳細については、Kubernetes 永続ボリュームに関するドキュメントを参照してください。For more information on access modes, see the Kubernetes persistent volume documentation.

azure-file-pvc.yaml という名前のファイルを作成し、そこに以下の YAML をコピーします。Now create a file named azure-file-pvc.yaml and copy in the following YAML. storageClassName が最後の手順で作成したストレージ クラスと一致していることを確認します。Make sure that the storageClassName matches the storage class created in the last step:

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

注意

ストレージ クラスに Premium_LRS SKU を使用する場合、 storage の最小値は 100Gi である必要があります。If using the Premium_LRS sku for your storage class, the minimum value for storage must be 100Gi.

kubectl apply コマンドを使用して永続ボリューム要求を作成します。Create the persistent volume claim with the kubectl apply command:

kubectl apply -f azure-file-pvc.yaml

完了すると、ファイル共有が作成されます。Once completed, the file share will be created. 接続情報と資格情報を含む Kubernetes シークレットも作成されます。A Kubernetes secret is also created that includes connection information and credentials. kubectl get コマンドを使用すると、PVC の状態を表示できます。You can use the kubectl get command to view the status of the PVC:

$ 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

永続ボリュームの使用Use the persistent volume

次の YAML では、永続ボリューム要求 my-azurefile を使って、 /mnt/azure パスに Azure ファイル共有をマウントするポッドを作成します。The following YAML creates a pod that uses the persistent volume claim my-azurefile to mount the Azure file share at the /mnt/azure path. Windows Server コンテナーの場合、 'D:' などの Windows パス規則を使用して mountPath を指定します。For Windows Server containers, specify a mountPath using the Windows path convention, such as 'D:'.

azure-pvc-files.yaml という名前のファイルを作成し、そこに以下の YAML をコピーします。Create a file named azure-pvc-files.yaml, and copy in the following YAML. claimName が最後の手順で作成したPVC と一致していることを確認します。Make sure that the claimName matches the PVC created in the last step.

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

kubectl apply コマンドを使用してポッドを作成します。Create the pod with the kubectl apply command.

kubectl apply -f azure-pvc-files.yaml

これで Azure Files 共有が /mnt/azure ディレクトリにマウントされ、ポッドが稼働状態となりました。You now have a running pod with your Azure Files share mounted in the /mnt/azure directory. この構成は、kubectl describe pod mypod 経由でポッドを調べるときに表示できます。This configuration can be seen when inspecting your pod via kubectl describe pod mypod. 次に示したのは、その出力例の抜粋です。コンテナーにマウントされたボリュームが表示されています。The following condensed example output shows the volume mounted in the container:

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

Kubernetes バージョン 1.13.0 以降の場合、 fileModedirMode の既定値は 0777 です。The default value for fileMode and dirMode is 0777 for Kubernetes version 1.13.0 and above. ストレージ クラスを使って永続ボリュームを動的に作成している場合は、ストレージ クラスのオブジェクトに対してマウント オプションを指定できます。If dynamically creating the persistent volume with a storage class, mount options can be specified on the storage class object. 次の例では、 0777 が設定されます。The following example sets 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
parameters:
  skuName: Standard_LRS

次のステップNext steps

関連するベスト プラクティスについては、AKS のストレージとバックアップに関するベスト プラクティスに関する記事を参照してください。For associated best practices, see Best practices for storage and backups in AKS.

ストレージ クラス パラメーターについては、「Dynamic Provision」を参照してください。For storage class parameters, see Dynamic Provision.

Azure Files を使用した Kubernetes 永続ボリュームについて、さらに詳しい情報を確認します。Learn more about Kubernetes persistent volumes using Azure Files.