
Ich habe dieses Beispiel eines persistenten Volumes vondieser Artikel über PostgreSQL über 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"
Dies scheint zu funktionieren, hat aber ein Problem mit der Logik.
soweit ich die Angelegenheit verstehe, die Sie brauchenentwederA
persistentVolume
odera,storageClass
um die Bedürfnisse von a zu erfüllenPersistentVolumeClaim
. Wobei aPV
statisch ist, währendSC
a dynamisch ist. Ich verstehe entweder/oder als exklusiventwedereinsoderdas andere,nicht beide(Ich glaube, das wirdNOR
im Gegensatz zu aufgerufenOR
.)
Ich verstehe also nicht, was astorageClaseName
hier macht. Kann mir jemand beim logischen Verständnis helfen?Ich glaube
type: local
undpath: "/var/data"
meine, dass das Volume im lokalen Dateisystem des Knotens existiert und sein Inhalt im/var/data
Verzeichnis auf diesem Knoten gefunden werden kann.
Welchen Wert müsste ich verwenden,type
wenn ich etwas anderes verwenden möchte? Wie etwa von einem Provisioner bereitgestellten Speicher (in meinem Fall csi.vsphere.vmware.com)?
Antwort1
Hoffe, ich habe die Frage richtig beantwortet.
Ein persistentVolumeClaim wird immer an ein persistentes Volumen gebunden. Die Idee besteht darin, einen Anspruch mit einer Festplatte zu verbinden, sodass der Pod sich an dieselbe Festplatte anhängen kann, unabhängig davon, auf welchem Knoten er bereitgestellt wird.
Eine StorageClass ist ein automatischer Bereitstellungsmechanismus für persistente Datenträger. Das bedeutet, wenn Sie einen persistenten Datenträgeranspruch angeben und eine Standard-StorageClass konfiguriert ist, wird ein persistenter Datenträger erstellt und an den persistenten Datenträgeranspruch angehängt.
Sie können auch manuell ein persistentes Volumen erstellen und es wird an den persistenten Volumenanspruch angehängt (unabhängig von einer Speicherklasse), aber stellen Sie sich eine große Umgebung mit Hunderten von PVCs vor und verwalten Sie für jedes PVC ein PV.
Sie können auch ein PV angeben, an das das PVC angehängt werden soll.
Die type:local
Konfiguration ist ein lokales Volume auf dem Knoten, das als PV fungiert. In Ihrem Fall erstellt VMware eine VMDK-Datei und kopiert sie auf den Knoten, auf dem der Pod bereitgestellt wird.
Hoffentlich hilft das.
Antwort2
Question: So I do not understand what a storageClaseName is doing in here. Can anybody help me out with the logical understanding?
Der storageClaseName dient zur Angabe der Klasse eines persistenten Datenträgers. Ich werde das anhand eines Anwendungsfalls erklären. Stellen Sie sich vor, Sie möchten den Speicher Ihrer produktionskritischen Apps in drei verschiedenen Kategorien verwalten: Gold, Silber und Bronze. Gold ist für produktionskritische Anwendungen und der Rest für weniger kritische Apps. Jetzt können Sie einer Anwendung basierend auf ihrem Risikoniveau ganz einfach den gewünschten Speichertyp zuweisen. Wenn ich beispielsweise Gold-Klasse-Speicher für meinen Video-Streaming-Dienst verwenden möchte, muss ich ein PVC mit einem storageClassName angeben, der auf die Gold-Klasse eingestellt ist. Jetzt findet Kubernetes (sofern verfügbar) ein PV der Gold-Klasse, um diese Anforderung zu erfüllen. Wenn ein PV vorhanden ist, dessen Größe für dieses PVC ausreicht, das aber nicht zur Gold-Klasse gehört, wird dieses PV nicht verwendet, um diese Anforderung zu erfüllen.
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?
Bitte folgen Sie diesem Link: https://kubernetes.io/docs/concepts/storage/persistent-volumes/#types-of-persistent-volumes