Azure ファイル共有を使用する
GKE on Azure では、Azure ファイル共有のマウントがサポートされています。GKE on Azure で使用する Azure ファイル共有がすでにある場合は、PersistentVolume(PV)オブジェクトを作成して特定の PersistentVolumeClaim(PVC)用に予約できます。
このページでは、データが入力された既存の共有を使用して PV を作成する方法と、Pod で PV を使用する方法について説明します。
始める前に
- クラスタに接続する
- Azure ファイル共有にアクセスするか、ファイル共有を作成します。詳細については、Azure ファイル共有を作成するをご覧ください。
Azure ストレージ アカウント情報を保存する
GKE on Azure は、Azure ストレージ アカウントにアクセスするための情報を Secret に保存します。クラスタで Secret を作成していない場合は、追加する必要があります。この Secret がクラスタにある場合は、既存の共有用の PersistentVolume を作成するに進んでください。
Secret を作成するには、次のマニフェストを「azure-service-account-key.yaml」という名前のファイルにコピーします。
--- apiVersion: v1 kind: Secret metadata: name: azure-secret-account-key type: Opaque stringData: accountname: STORAGE_ACCOUNT_NAME accountkey: STORAGE_ACCOUNT_KEY
次のように置き換えます。
- STORAGE_ACCOUNT_NAME: Azure ストレージ アカウント名
- STORAGE_ACCOUNT_KEY: Azure ストレージ アカウント キー
kubectl
ツールでファイルをクラスタに適用します。kubectl apply -f azure-service-account-key.yaml
既存の共有用の PersistentVolume を作成する
クラスタに新しい PV を指定して、既存の Azure File 共有をインポートします。PV の作成手順は次のとおりです。
次の YAML を
existing-volume.yaml
というファイルにコピーします。apiVersion: v1 kind: PersistentVolume metadata: name: VOLUME_NAME spec: capacity: storage: VOLUME_CAPACITY storageClassName: standard-rwx accessModes: - ReadWriteMany persistentVolumeReclaimPolicy: Retain csi: driver: file.csi.azure.com readOnly: false volumeHandle: VOLUME_ID
次のように置き換えます。
- VOLUME_NAME: ボリュームの名前
- VOLUME_CAPACITY: ボリュームのサイズ。例:
30Gi
Kubernetes でのボリューム容量の指定の詳細については、Meaning of memory をご覧ください。 - VOLUME_ID: ボリュームの一意の ID。
RESOURCE_GROUP_NAME#STORAGE_ACCOUNT_NAME#FILESHARE_NAME#
の文字列の形式になります。ここで、 - FILE_SHARE_NAME: Azure File の共有名
ストレージ アカウントがクラスタとは異なるリソース グループにある場合、ストレージ アカウント キーを含む Secret への参照を追加する必要があります。参照を追加するには、
spec.csi
セクションに以下を挿入します。# Optional. Only required if your storageAccount is in a different resource group than the cluster. nodeStageSecretRef: name: NODE_STAGE_SECRET_NAME namespace: NODE_STAGE_SECRET_NAMESPACE
次のように置き換えます。
- NODE_STAGE_SECRET_NAME: Secret の名前
- NODE_STAGE_SECRET_NAMESPACE Secret が含まれる Namespace
YAML をクラスタに適用します。
kubectl apply -f existing-volume.yaml
kubectl describe pv
で PV の作成を確認します。kubectl describe pv VOLUME_NAME
このコマンドの出力には、PV のステータスが含まれます。
PersistentVolumeClaim と Pod でボリュームを使用する
ボリュームをインポートしたら、PVC とその PVC をマウントする Pod を作成できます。
次の YAML は、PVC を作成し、Nginx ウェブサーバーを実行する Pod に接続します。このコードを
nginx.yaml
という名前のファイルにコピーします。apiVersion: v1 kind: PersistentVolumeClaim metadata: name: my-pvc spec: storageClassName: STORAGE_CLASS_NAME volumeName: VOLUME_NAME accessModes: - ACCESS_MODE resources: requests: storage: VOLUME_CAPACITY --- apiVersion: v1 kind: Pod metadata: name: web-server spec: containers: - name: web-server image: nginx volumeMounts: - mountPath: /var/lib/www/html name: data volumes: - name: data persistentVolumeClaim: claimName: my-pvc
次のように置き換えます。
- STORAGE_CLASS: 以前に作成した PersistentVolume の StorageClass の名前。例:
standard-rwo
。 - ACCESS_MODE: ボリュームのアクセスモード。Azure Disk の場合は、
ReadWriteOnce
を使用します。Azure File の場合は、ReadWriteMany
を使用します。 - VOLUME_CAPACITY: ボリュームのサイズ。例:
30Gi
。
- STORAGE_CLASS: 以前に作成した PersistentVolume の StorageClass の名前。例:
YAML をクラスタに適用します。
kubectl apply -f nginx.yaml
kubectl describe
で Nginx インスタンスのステータスを確認します。出力には、Running
のSTATUS
が含まれます。kubectl describe pod web-server
Pod を削除するには、
kubectl delete
コマンドを使用します。kubectl delete -f nginx.yaml
次のステップ
- GKE on Azure で追加のストレージ ドライバを使用する。
- Azure File CSI ドライバのドキュメントを読む。