kubernet提供了后端存储空间的解决方案,引申出PV和PVC的概念。
PersistentVolume (PV) 是外部存储系统中的一块存储空间,由管理员创建和维护。与 Volume 一样,PV 具有持久性,生命周期独立于 Pod。PersistentVolumeClaim (PVC) 是对 PV 的申请 (Claim)。PVC 通常由普通用户创建和维护。需要为Pod 分配存储资源时,用户可以创建一个 PVC,指明存储资源的容量大小和访问模式(比如只读)等信息,Kubernetes会查找并提供满足条件的 PV。
PV和 PVC的查询命令:
pv的API字段配置说明
kubectl explain pods.spec.volumes
pvc的AP/字段配置说明
kubectl explain pods.spec.volumes.persistentVolumeClaim
sc(接收PVC,动态化PV的效果)的API字段配置说明
kubectl explain sc
基于NFS的持久化存储
一,在master节点创建nfsdata共享./etc/exports中输入如下,exportfs -r生效,启动nfs,具体见nfs配置:
/nfsdata *(rw,no_root_squash,no_all_squash,sync)
二,创建pv
pv.yaml配置
apiVersion: v1
kind: PersistentVolume
metadata:
name: nfs-pv
spec:
capacity:
storage: 100Mi
accessModes:
- ReadWriteMany
nfs:
# FIXME: use the right IP
server: 192.168.0.X
path: "/nfsdata"
pvc配置
apiVersion: v1
kind: PersistentVolume
metadata:
name: nfs-pv
spec:
capacity:
storage: 100Mi
accessModes:
- ReadWriteMany
nfs:
# FIXME: use the right IP
server: 192.168.0.4
path: "/nfsdata"
[root@master ~]# cat pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: nfs-pvc
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 90Mi
其上再创建一个nginx的pod
apiVersion: v1
kind: Pod
metadata:
name: nginx-volume-pvc
spec:
containers:
- name: nginx-pvc
image: nginx
ports:
- containerPort: 80
volumeMounts:
- name: html-pvc #自定义名的引用
mountPath: /usr/share/nginx/html/
volumes: #这里是选择volume的类型
- name: html-pvc #自定义名
persistentVolumeClaim:
claimName: nfs-pvc #我们刚才定义的pvc名
以上三个配置用kubectl apply -f进行生成,查看
kubectl get pv/pvc进行查看状态。