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