Kubernetes - PersitentVolume と StorageClass

Kubernetes - PersitentVolume と StorageClass

永続ボリュームの例を以下に示します。Kubernetes StatefulSet 経由の PostgreSQL に関するこの記事

kind: PersistentVolume
apiVersion: v1
metadata:
  name: pgdata
  labels:
    app: postgres
    type: local
spec:
  storageClassName: sc001
  capacity:
    storage: 1Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/var/data"

これは動作するようですが、ロジックに問題があります。

  1. 私が理解している限りでは、あなたが必要としている事柄はどちらか1つのpersistentVolume またはa はstorageClassa のニーズを満たすPersistentVolumeClaim。a はPV静的で、SCは動的である。私は、どちらか一方が排他的であると理解している。どちらか1つまたはもう一つは、両方ではないNOR(は に対抗して呼ばれると信じていますOR)。
    したがって、ここで a が何をしているのかわかりませんstorageClaseName。論理的に理解できるように誰か助けてくれませんか?

  2. ボリュームはノードのローカル ファイル システムに存在し、そのコンテンツはそのノードのディレクトリで見つかるtype: localと 考えます。何か他のものを使用するかどうかを指定する には、どのような値を使用する必要がありますか? たとえば、プロビジョナーによって提供されるストレージ (私の場合は csi.vsphere.vmware.com) などです。path: "/var/data"/var/data
    type

答え1

質問が正しければ幸いです。

persistentVolumeClaim は常に persistentVolume にバインドされます。これは、クレームをディスクに接続して、ポッドがどのノードにデプロイされるかに関係なく、同じディスクに接続できるようにするという考え方です。

storageClass は自動 persistentVolume プロビジョニング メカニズムです。つまり、persistentVolumeClaim を指定し、デフォルトの storageClass が設定されている場合は、persistentVolume が作成され、それが persistentVolumeClaim にアタッチされます。

また、手動で persistentVolume を作成し、それを persistentVolumeClaim (storageClass に関係なく) にアタッチすることもできますが、数百の PVC があり、各 PVC に対して PV を維持する大規模な環境を想像してください。

PVC をアタッチする pv を指定することもできます。

構成type:localは、pv として機能するノード上のローカル ボリュームです。この場合、vmware は vmdk ファイルを作成し、ポッドがデプロイされているノードにコピーします。

お役に立てれば幸いです。

答え2

Question: So I do not understand what a storageClaseName is doing in here. Can anybody help me out with the logical understanding?

storageClaseName は、永続ボリュームのクラスを指定します。ユースケースを使用して説明します。本番環境の重要なアプリのストレージを 3 つの異なるカテゴリ (ゴールド、シルバー、ブロンズ) で管理するとします。ゴールドは本番グレードの重要なアプリケーション用で、残りはそれほど重要でないアプリケーション用です。これで、リスク レベルに基づいて、アプリケーションに割り当てるストレージの種類を簡単に割り当てることができます。たとえば、ビデオ ストリーミング サービスにゴールド クラスのストレージを使用する場合は、storageClassName をゴールド クラスに設定した PVC を指定する必要があります。これで、Kubernetes は、この要求を満たすためにゴールド クラス カテゴリに属する​​ PV を検索します (使用可能な場合)。この PVC に十分なサイズの PV が存在しても、ゴールド クラスに属していない場合、その PV はこの要件を満たすために使用されません。

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: gold-class-claim
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: gold-class-storage
  ....
Question: What value would I have to use for type whether I wanted to use something else?

こちらのリンクを参照してください: https://kubernetes.io/docs/concepts/storage/persistent-volumes/#types-of-persistent-volumes

関連情報