Kubernetes — PersientVolume против StorageClass

Kubernetes — PersientVolume против StorageClass

У меня есть этот пример Persitent Volume изэта статья о postgresql через kubernetes statefulset

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. насколько я понимаю, вам нужноилиаpersistentVolume илиа storageClassдля удовлетворения потребностей а PersistentVolumeClaim. Где а PVстатично, а SCдинамично. Я понимаю или/или как исключающееилиодинилидругой,не оба(Я считаю, что это называется NORв оппозиции к OR).
    Поэтому я не понимаю, что storageClaseNameздесь делает a. Может кто-нибудь помочь мне с логическим пониманием?

  2. Я полагаю type: localи path: "/var/data"имею в виду, что том существует в локальной файловой системе узла, и его содержимое можно найти в /var/dataкаталоге на этом узле.
    Какое значение мне нужно использовать, typeесли я захочу использовать что-то другое? Например, хранилище, предоставляемое поставщиком (в моем случае csi.vsphere.vmware.com)?

решение1

Надеюсь, я правильно понял вопрос.

PermanentVolumeClaim всегда привязывается к persistentVolume. Идея состоит в том, чтобы привязать утверждение к диску, чтобы модуль мог подключаться к одному и тому же диску независимо от того, на каком узле он развернут.

StorageClass — это автоматический механизм предоставления persistentVolume, то есть, если вы указываете persistentVolumeClaim и настроен storageClass по умолчанию, он создаст persistentVolume и присоединит его к persistentVolumeClaim.

Вы также можете вручную создать persistentVolume, и он будет присоединен к persistentVolumeClaim (независимо от storageClass), но представьте себе большую среду с сотнями pv и поддержанием pv для каждого pv.

Вы также можете указать pv, к которому нужно прикрепить pvc.

Конфигурация type:localпредставляет собой локальный том на узле, который действует как pv. В вашем случае vmware создает файл vmdk и копирует его на узел, на котором развернут pod.

Надеюсь, это поможет.

решение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 различных категориях. Gold, Silver и Bronze. Gold предназначен для критически важных для производства приложений, а rest — для менее критических приложений. Теперь вы можете легко назначить тип хранилища, который вы хотите назначить для приложения, в зависимости от его уровня риска. Например, я хочу использовать хранилище класса Gold для своего сервиса потокового видео, тогда мне нужно будет указать PVC с storageClassName, установленным на gold class. Теперь Kubernetes найдет (если доступно) PV, который принадлежит к категории gold class, чтобы удовлетворить этот запрос. Если существует PV, который по размеру достаточен для этого PVC, но не принадлежит к gold class, то этот 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

Связанный контент