概述
Volume
kubernentes的存儲部分第一個介紹了Volume。Volume可以支持local
、nfs
、cephfs
、glusterfs
以及各種云計算平臺。
官網Volume的配置都是在一個創建pod的yaml文件中,例如
apiVersion: v1
kind: Pod
metadata:
name: test-pd
spec:
containers:
- image: k8s.gcr.io/test-webserver
name: test-container
volumeMounts:
- mountPath: /test-pd
name: test-volume
volumes:
- name: test-volume
hostPath:
# directory location on host
path: /data
# this field is optional
type: Directory
Persistent Volume和Persistent Volume Claim
除了Volume之外,kubernetes還提供了Persistent Volume的方法。Volume主要是為了存儲一些有必要保存的數據,而Persistent Volume主要是為了管理集群的存儲。
Persistent Volume相對獨立于Pods,單獨創建。比如:
apiVersion: v1
kind: PersistentVolume
metadata:
name: nfs
spec:
storageClassName: manual
capacity:
storage: 1Gi
accessModes:
- ReadWriteMany
nfs:
server: 192.168.207.121
path: "/nas/dg_vd"
Persistent Volume對具體的存儲進行配置和分配,而Pods等則可以使用Persistent Volume抽象出來的存儲資源,不需要知道集群的存儲細節。
Persistent Volume和Persistent Volume Claim類似Pods和Nodes的關系,創建Pods需要消耗一定的Nodes的資源。而Persistent Volume則是提供了各種存儲資源,而Persistent Volume Claim提出需要的存儲標準,然后從現有存儲資源中匹配或者動態建立新的資源,最后將兩者進行綁定。
PVC的創建
上面已經提到了創建PV的配置文件。PVC的內容如下:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: nfs
spec:
accessModes:
- ReadWriteMany
storageClassName: manual
resources:
requests:
storage: 1Gi
Pods的使用
Pods使用的是PersistentVolumeClaim而非PersistentVolume。
具體配置如下
apiVersion: v1
kind: Pod
metadata:
name: testpv
labels:
role: web-frontend
spec:
containers:
- name: web
image: nginx
ports:
- name: web
containerPort: 80
volumeMounts:
- name: nfs
mountPath: "/usr/share/nginx/html"
volumes:
- name: nfs
persistentVolumeClaim:
claimName: nfs
一些注意事項
在配置文件中的kind是PersistentVolume
,PersistentVolumeClaim
。但是查詢時,使用的是縮寫pv
,pvc
。
概述
Volume
kubernentes的存儲部分第一個介紹了Volume。Volume可以支持local
、nfs
、cephfs
、glusterfs
以及各種云計算平臺。
官網Volume的配置都是在一個創建pod的yaml文件中,例如
apiVersion: v1
kind: Pod
metadata:
name: test-pd
spec:
containers:
- image: k8s.gcr.io/test-webserver
name: test-container
volumeMounts:
- mountPath: /test-pd
name: test-volume
volumes:
- name: test-volume
hostPath:
# directory location on host
path: /data
# this field is optional
type: Directory
Persistent Volume和Persistent Volume Claim
除了Volume之外,kubernetes還提供了Persistent Volume的方法。Volume主要是為了存儲一些有必要保存的數據,而Persistent Volume主要是為了管理集群的存儲。
Persistent Volume相對獨立于Pods,單獨創建。比如:
apiVersion: v1
kind: PersistentVolume
metadata:
name: nfs
spec:
storageClassName: manual
capacity:
storage: 1Gi
accessModes:
- ReadWriteMany
nfs:
server: 192.168.207.121
path: "/nas/dg_vd"
Persistent Volume對具體的存儲進行配置和分配,而Pods等則可以使用Persistent Volume抽象出來的存儲資源,不需要知道集群的存儲細節。
Persistent Volume和Persistent Volume Claim類似Pods和Nodes的關系,創建Pods需要消耗一定的Nodes的資源。而Persistent Volume則是提供了各種存儲資源,而Persistent Volume Claim提出需要的存儲標準,然后從現有存儲資源中匹配或者動態建立新的資源,最后將兩者進行綁定。
PVC的創建
上面已經提到了創建PV的配置文件。PVC的內容如下:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: nfs
spec:
accessModes:
- ReadWriteMany
storageClassName: manual
resources:
requests:
storage: 1Gi
Pods的使用
Pods使用的是PersistentVolumeClaim而非PersistentVolume。
具體配置如下
apiVersion: v1
kind: Pod
metadata:
name: testpv
labels:
role: web-frontend
spec:
containers:
- name: web
image: nginx
ports:
- name: web
containerPort: 80
volumeMounts:
- name: nfs
mountPath: "/usr/share/nginx/html"
volumes:
- name: nfs
persistentVolumeClaim:
claimName: nfs
一些注意事項
在配置文件中的kind是PersistentVolume
,PersistentVolumeClaim
。但是查詢時,使用的是縮寫pv
,pvc
。