Dynamic Volume Provisioning


個人ブログのアドレス:https://www.huweihuang.com/kubernetes-notes/storage/dynamic-provisioning.html

Dynamic Volume Provisioning


Dynamic volume provisioningでは、ストレージボリュームを必要に応じて自動的に作成できます.これにより、ストレージの複雑さや違いに関心を持つ必要がなくなり、異なるストレージタイプを選択できます.

1.Dynamic Provisioningをオンにする

StorageClassオブジェクトを事前に作成する必要があります.StorageClassでは、どのprovisionerが使用され、provisionerが呼び出されたときにどのパラメータが入力されるかが定義されています.具体的には、StorageClassを参照してください.
例:
  • ディスククラスストレージ
  • apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: slow
    provisioner: kubernetes.io/gce-pd
    parameters:
      type: pd-standard
    
  • SSDクラスストレージ
  • apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: fast
    provisioner: kubernetes.io/gce-pd
    parameters:
      type: pd-ssd
    

    2.Dynamic Provisioningの使用


    PVCオブジェクトを作成し、storageClassNameフィールドに使用するStorageClassの名前を指定します.たとえば、次のようになります.
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: claim1
    spec:
      accessModes:
        - ReadWriteOnce
      storageClassName: fast
      resources:
        requests:
          storage: 30Gi
    

    PVCを使用すると自動的に対応する外部ストレージが作成され、PVCが削除されると自動的に外部ストレージが破棄(またはバックアップ)されます.

    3.デフォルトのStorageClass


    対応するStorageClassの構成がない場合、デフォルトのStorageClassを設定できます.以下の操作が必要です.
  • APIサーバでDefaultStorageClass admission controllerをオンにします.
  • デフォルトのStorageClassオブジェクトを設定します.
  • storageclass.kubernetes.io/is-default-class注釈を追加することによって、あるStorageClassをデフォルトのStorageClassに設定することができる.ユーザがPersistentVolumeClaimを作成したが、storageClassNameが指定されていない場合、PVCのstorageClassNameは、デフォルトのStorageClassに自動的に向けられる.
    参考記事:
  • https://kubernetes.io/docs/concepts/storage/dynamic-provisioning/