Kuberenetes系統學習(七)-----共享存儲

1、概述

kubernetes對於有狀態的容器應用或者對數據需要持久化的應用,不僅需要將容器內的目錄掛載到宿主機的目錄或者emptyDir臨時存儲卷,而且需要更加可靠的存儲來保存應用產生的重要數據.
PV是對底層網絡共享存儲的對象,將共享存儲定義爲一種“資源”.
PVC是用戶對存儲資源的一個“申請”.PVC能夠消費PV資源.PVC可以申請特定的存儲空間和訪問模式.
1、PV詳解
PV作爲存儲資源,主要包括存儲能力,訪問模式,存儲類型,回收策略,後端存儲類型等關鍵信息的設置.
下面的例子聲明瞭PV的以下屬性:

apiVersion: v1
kind: PersistentVolume
metadata:
	name: pv1
spec:
	capacity:
		storage: 5Gi
	accessModes:
		- ReadWriteOnce
	persistentVolumeReclaimPolicy: Recycle
	storageClassName: slow
	nfs:
		path: /tmp
		server: 172.17.0.2	

1.2、PV生命週期的各個階段
某個PV在以下4個週期之一:
Available: 可用狀態,還未與某個PVC綁定
Bound: 已與某個PVC綁定
Released: 綁定的PVC已經刪除,資源已釋放.但沒有被集羣回收
Failed: 自動資源回收失敗

2、PVC詳解
pvc作爲用戶對存儲資源的需求申請,主要包括存儲空間請求,訪問模式,PV選擇條件和存儲類別等信息的設置.
下例聲明的PVC具有如下屬性:
申請8GiB的存儲空間,訪問模式爲ReadWriteOnce,PV選擇條件爲包含標籤“release=stable”並且包含條件爲“environment In [dev]”的標籤,存儲類別爲slow.

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
	name: myclaim
spce:
	accessModes:
		-	ReadWriteOnce
	resources:
		requests:
			storage: 8Gi
	storageClassName: slow
	selector:
		matchLabels:
			release: "stable"
		matchExpressions:
		- {key: environment,operator: In,values: [dev]}				

PVC受限於namespace,Pod在引用PVC時同樣受Namespace的限制,只有相同Namespace中的PVC才能掛載到Pod內.

3、PV和PVC的生命週期
在這裏插入圖片描述
在靜態資源供應模式下,通過PV和PVC完成綁定,並供Pod使用的存儲管理機制
在動態資源供應模式下,通過StroageClass和PVC完成資源動態綁定,並供pod使用的存儲管理機制

2、StorageClass

StorageClass作爲對存儲資源的抽象定義,對用戶設置的PVC申請屏蔽後端存儲的細節,一方面減少了用戶對於存儲資源細節的關注,另一方面減輕了管理員手工管理PV的工作,有系統自動完成PV的創建和綁定,實現了動態的資源供應
下面定義了一個名爲standard的StorageClass,提供者爲aws-ebs.其參數設置了一個type,值爲gp2

kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata: 
	name: standard
	provisioner: kubernetes.io/aws-ebs
	parameter:
		type: gp2

在使用動態存儲供應模式的情況下,相對於靜態模式的優勢有以下兩點:
1、管理員無需預先創建大量的PV作爲存儲資源
2、用戶在申請PVC時無法保證容量與預置PV的容量完全匹配,從k8s1.6版本開始,建議用戶優先考慮使用StorageClass的動態存儲供應模式進行存儲管理

欲瞭解更多的kubernetes的功能,請關注公衆號:架構師Plus
在這裏插入圖片描述

150講輕鬆搞定Python網絡爬蟲


Google開發專家帶你學 AI:入門到實戰(Keras/Tensorflow)(附源碼)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章