
我有一個持久卷的範例本文透過 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"
這似乎可行,但邏輯上有問題。
據我了解你需要的事情任何一個A
persistentVolume
或者astorageClass
滿足 a 的需要PersistentVolumeClaim
。其中 aPV
是靜態的,而aSC
是動態的。我理解其中一個/或是排他性的任何一個一或者另一個,不是都(我相信這被稱為NOR
反對OR
)。
所以我不明白 astorageClaseName
在這裡做什麼。有人可以幫我理解邏輯嗎?我相信
type: local
&path: "/var/data"
意味著該卷存在於節點的本地文件系統中,並且可以在/var/data
該節點上的目錄中找到它的內容如果我想使用其他東西,
我必須使用什麼值?type
就像配置程式提供的儲存(在我的例子中為 csi.vsphere.vmware.com)?
答案1
希望我問對了。
持久卷聲明始終綁定到持久卷,其想法是將聲明連接到磁碟,以便 Pod 可以附加到同一磁碟,無論它部署在哪個節點上。
storageClass 是自動的 permanentVolume 供應機制,這表示如果您指定了 permanentVolumeClaim 並且配置了預設的 storageClass,它將建立一個 permanentVolume 並將其附加到 perpetualVolumeClaim。
您也可以手動建立持久卷,它將附加到持久卷聲明(無論儲存類別為何),但映像具有數百個 pvc 的大型環境,並為每個 pvc 維護一個 pv。
您也可以指定將 pvc 附加到的 pv。
該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 級存儲,那麼我必須指定一個 PVC,並將 storageClassName 設定為 gold 級。現在kubernetes會找到(如果有的話)一個屬於gold class類別的PV來滿足這個請求。如果存在一個 PV,其大小足以滿足該 PVC,但不屬於 Gold 類,則該 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