StorageClass

5870 ワード

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

StorageClass


1.StorageClassの概要

StorageClassは、異なるclassが異なるサービス品質レベルおよびバックアップポリシーまたは他のポリシーなどにマッピングされる可能性がある (class)を記述する方法を提供する.StorageClassオブジェクトには、provisionerparameters、およびreclaimPolicyのフィールドが含まれており、PersistentVolumeを動的に割り当てる必要がある場合に使用されます.StorageClassオブジェクトを作成すると、名前とその他のパラメータが設定され、オブジェクトが作成されると更新できません.特定のclassにバインドされていないPVCのデフォルトのStorageClassを指定することもできます.
StorageClassオブジェクトファイル
kind: StorageClass
apiVersion: storage.k8s.io/v3
metadata:
  name: standard
provisioner: kubernetes.io/aws-ebs
parameters:
  type: gp2
reclaimPolicy: Retain
mountOptions:
  - debug

2.StorageClassのプロパティ


2.1. Provisioner(ストレージディスペンサ)


Storage classには、どのボリュームプラグインを使用してPVを割り当てるかを決定するための (provisioner)があり、このフィールドは指定する必要があります.内部ディスペンサを指定するか、外部ディスペンサを指定できます.外部ディスペンサのコードアドレスは、kubernetes-incubator/external-storageであり、NFSおよびCephなどが含まれる.

2.2. Reclaim Policy(回収ポリシー)


作成されたreclaimPolicyの回収ポリシーは、Persistent VolumeまたはDeleteを含むRetainフィールドで指定できます.デフォルトはDeleteではありません.

2.3. マウントオプション


storage classによって動的に作成されたPersistent Volumeでは、classのmountOptionsフィールドで指定されたマウントオプションが使用されます.

2.4. パラメータ


Storage classにはstorage classボリュームに属するパラメータが記述されています. に依存して、異なるパラメータを受け入れることができる.パラメータが省略されると、デフォルト値が使用されます.
例えば以下、Ceph RBDを用いる
kind: StorageClass
apiVersion: storage.k8s.io/v3
metadata:
  name: fast
provisioner: kubernetes.io/rbd
parameters:
  monitors: 30.36.353.305:6789
  adminId: kube
  adminSecretName: ceph-secret
  adminSecretNamespace: kube-system
  pool: kube
  userId: kube
  userSecretName: ceph-secret-user
  fsType: ext4
  imageFormat: "2"
  imageFeatures: "layering"

対応するパラメータの説明
  • monitors:Ceph monitor、カンマ区切り.このパラメータは必須です.
  • adminId:CephクライアントID(ceph pool)でイメージを作成します.デフォルトはadminです.
  • adminSecretNamespace:adminSecretのnamespace.デフォルトは「default」です.
  • adminSecret:adminIdのSecret名.このパラメータは必須です.指定したsecretには、「kubernetes.io/rbd」の値を持つtypeパラメータが必要です.
  • pool:Ceph RBDプール.デフォルトはrbdです.
  • userId:CephクライアントIDは、RBDミラー(RBDイメージ)をマッピングするために使用される.デフォルトはadminIdと同じです.
  • userSecretName:RBDミラーをマッピングするためのuserIdのCeph Secretの名前.PVCと同じnamespaceに存在する必要があります.このパラメータは必須です.提供されるsecretには、「kubernetes.io/rbd」という値のtypeパラメータが必要です.たとえば、
    kubectl create secret generic ceph-secret --type="kubernetes.io/rbd" \
      --from-literal=key='QVFEQ1pMdFhPUnQrSmhBQUFYaERWNHJsZ3BsMmNjcDR6RFZST0E9PQ==' \
      --namespace=kube-system
    
  • という方法で作成します.
  • fsType:KubernetesがサポートするfsType.デフォルト:ext 4.
  • imageFormat:Ceph RBDミラー形式、「1」または「2」.既定値は1です.
  • imageFeatures:このパラメータはオプションで、imageFormatを「2」に設定してのみ使用できます.現在サポートされている機能はlayeringにすぎません.デフォルトは「」です.機能は開いていません.
  • 参考記事:
  • https://kubernetes.io/docs/concepts/storage/storage-classes/