說明:以下內(nèi)容的學(xué)習(xí)參考k8s官網(wǎng)祟同,鏈接地址k8s官網(wǎng)參考鏈接
以下為手動創(chuàng)建pv及pvc,并根據(jù)官網(wǎng)文檔重點(diǎn)說明pvc和pv綁定策略。
1.pv
NFS的pv有靜態(tài)和動態(tài)运嗜,動態(tài)創(chuàng)建pv需要插件配合,這里介紹靜態(tài)創(chuàng)建pv悯舟。搭建好NFS之后創(chuàng)建好NFS的共享目錄担租,PV配置關(guān)聯(lián)NFS的地址及共享目錄路徑。
nfs-pv.yaml示例配置如下:
apiVersion: v1
kind: PersistentVolume
metadata:
name: nfs-pv #pv的名字
labels:
pv: nfs #pvc可以使用標(biāo)簽選擇器來選擇該pv抵怎,storageClassName和標(biāo)簽選擇器是AND關(guān)系翩活,如果storageClassName相同,標(biāo)簽選擇器不同則pvc一直是pending狀態(tài)
spec:
capacity:
storage: 5Gi #pv存儲空間的大小便贵,這里的空間大小并不能現(xiàn)在pod使用NFS空間的大小菠镇,作為pvc和pv綁定選擇使用,pv的空間符合pvc的要求則可以進(jìn)行綁定
volumeMode: Filesystem #存儲卷模式承璃,默認(rèn)為Filesystem利耍,可選項(xiàng)還有Block
accessModes:
- ReadWriteMany #存儲卷的訪問模式有三種ReadWriteOnce、ReadOnlyMany盔粹、ReadWriteMany
persistentVolumeReclaimPolicy: Retain #pv回收策略有三種Retain(保留隘梨。pv刪除,存儲數(shù)據(jù)保留舷嗡,需刪除需手動)轴猎、Recycle(回收。pv刪除进萄,存儲的數(shù)據(jù)被清空刪除掉)捻脖、Delete(刪除。pv刪除中鼠,則后端的存儲設(shè)備也刪除掉可婶,常用語云廠商)
storageClassName: slow #pv和pvc的該項(xiàng)保持一致才可以進(jìn)行綁定
nfs:
path: /tmp #NFS共享目錄
server: 172.17.0.2 #NFS服務(wù)器地址
2.pvc
nfs-pvc.yaml示例配置如下:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: nfs-pvc #pvc名字
spec:
accessModes: #pvc在請求pv的時(shí)候訪問模式保持一致
- ReadWriteMany #同pv一樣三種模式
volumeMode: Filesystem #同pv一樣兩種模式
resources:
requests:
storage: 3Gi #pvc空間的大小,并不能作為pod使用存儲的空間限制援雇,而是作為選擇綁定pv的條件矛渴。
storageClassName: slow #pvc和pv保持一致才可以進(jìn)行綁定,否則一直penting狀態(tài)
selector: #pvc可以通過標(biāo)簽選擇器選擇綁定pv惫搏。如果同時(shí)設(shè)置selector和storageClassName,那么再進(jìn)行綁定pv匹配選擇的時(shí)候是AND的關(guān)系具温,兩則同時(shí)滿足才可以。
matchLabels:
pv: "nfs"
# matchExpressions:
# - {key: environment, operator: In, values: [dev]}
3.pvc作為卷被pod掛載
apiVersion: v1
kind: Pod
metadata:
name: mypod
spec:
containers:
- name: myfrontend
image: nginx
volumeMounts:
- mountPath: "/var/www/html"
name: mypd
volumes:
- name: mypd
persistentVolumeClaim:
claimName: nfs-pvc