Azure Disk ボリュームを使用する

GKE on Azure は、azuredisk-csi-driver を自動的にデプロイして、クラスタ内の Azure Disk ボリュームのプロビジョニングと管理を行います。

GKE on Azure の Azure Disk CSI ドライバのバージョンは、Kubernetes クラスタ バージョンに関連付けられています。ドライバは通常、GKE がリリースされた時点で入手可能な最新バージョンになります。クラスタがアップグレードされると、ドライバも自動的に更新されます。

GKE on Azure が永続ストレージを提供する仕組みについては、ストレージの概要をご覧ください。

デフォルトのストレージ クラス

GKE on Azure には、デフォルトで次の StorageClass オプションが用意されています。

  • standard-rwo(デフォルト): LRS を使用して標準の SSD Azure ディスクをプロビジョニングする
  • premium-rwo: LRS を使用してプレミアム SSD Azure ディスクをプロビジョニングする

始める前に

デフォルトの StorageClass を使用する

spec.storageClassName フィールドを設定せずに PersistentVolumeClaim を作成すると、GKE on Azure は、GKE on Azure のデフォルトの Azure Disk CSI ドライバの StorageClass を使用して、Azure 標準 SSD ボリュームをプロビジョニングします。

次の YAML は、mypvc という PersistentVolumeClaim(PVC)を 30 GiB のサイズで作成します。

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mypvc
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 30Gi

プレミアム ストレージ クラスを使用する

PersistentVolumeClaim を作成し、フィールド spec.storageClassNamepremium-rwo に設定すると、GKE on Azure は、Azure プレミアム SSD ボリュームをプロビジョニングします。

次の YAML は、mypvc という PersistentVolumeClaim(PVC)を 30 GiB のサイズで作成します。

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mypvc
spec:
  storageClassName: premium-rwo
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 30Gi

StatefulSet で StorageClass を参照する

新しい StorageClass を使用するには、StatefulSet の volumeClaimTemplates で参照します。

StatefulSet の volumeClaimTemplates 仕様で StorageClass を参照すると、Kubernetes は PersistentVolume(PV)を使用して安定したストレージを提供します。Kubernetes は、StorageClass で定義されたプロビジョナーを呼び出して新しいストレージ Volume を作成します。Volume がプロビジョニングされると、Kubernetes が自動的に PV を作成します。

次の StatefulSet は、premium-rwo StorageClass を参照し、1 GiB のボリュームをプロビジョニングします。

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: web
spec:
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: registry.k8s.io/nginx-slim:0.8
        volumeMounts:
        - name: www
          mountPath: /usr/share/nginx/html
  volumeClaimTemplates: # This is the specification in which you reference the StorageClass
  - metadata:
      name: www
    spec:
      accessModes: [ "ReadWriteOnce" ]
      resources:
        requests:
          storage: 1Gi
      storageClassName: premium-rwo # This field references the existing StorageClass

次のステップ