K8s的PV/PVC
Posted y_zilong
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了K8s的PV/PVC相关的知识,希望对你有一定的参考价值。
1、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
2、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提出需要的存储标准,然后从现有存储资源中匹配或者动态建立新的资源,最后将两者进行绑定。
3、PVC的创建
#上面已经提到了创建PV的配置文件。PVC的内容如下:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: nfs
spec:
accessModes:
- ReadWriteMany
storageClassName: manual
resources:
requests:
storage: 1Gi
4、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
以上是关于K8s的PV/PVC的主要内容,如果未能解决你的问题,请参考以下文章
k8s实践17:kubernetes对接nfs存储实现pvc动态按需创建分配绑定pv