概述
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
。