使用nfs对pod的数据持久化,进行网络存储时,需要在资源编排文件中暴露nfs主机的ip和存储路径,这样有一定弊端,为了解决这一问题引入了pv pvc。
pv:存储的资源,提供了资源访问的方式;
pvc:对资源访问,也就是访问pvc;
pvc和pv绑定之后,支持匹配模式就可以访问资源了。
pvc 资源编排文件:
[root@k8smaster pv]# cat pvc.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-dep1
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx
volumeMounts:
- name: wwwroot
mountPath: /usr/share/nginx/html
ports:
- containerPort: 80
volumes:
- name: wwwroot
persistentVolumeClaim:
claimName: my-pvc
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: my-pvc
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 5Gi
# 启动pvc
[root@k8smaster pv]# kubectl apply -f pvc.yaml
pv 资源编排文件
[root@k8smaster pv]# cat pv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: my-pv
spec:
capacity:
storage: 5Gi
accessModes:
- ReadWriteMany
nfs:
path: /data/nfs
server: nfs主机ip
启动pv资源
[root@k8smaster pv]# kubectl apply -f pv.yaml
pvc根据匹配模式寻找部署好的pv
# pvc已经绑定了pvc
[root@k8smaster pv]# kubectl get pv,pvc
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
persistentvolume/my-pv 5Gi RWX Retain Bound default/my-pvc 2m14s
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
persistentvolumeclaim/my-pvc Bound my-pv 5Gi RWX 11m
[root@k8smaster pv]#
进入容器查看 上一篇博客存放在nfs中的文件是否同步成功
[root@k8smaster pv]# kubectl get pods
NAME READY STATUS RESTARTS AGE
nginx-dep1-58b7bf955f-bwftk 1/1 Running 0 13m
nginx-dep1-58b7bf955f-d72vb 1/1 Running 0 13m
nginx-dep1-58b7bf955f-z9cbg 1/1 Running 0 13m
[root@k8smaster pv]# kubectl exec -it nginx-dep1-58b7bf955f-z9cbg bash
kubectl exec [POD] [COMMAND] is DEPRECATED and will be removed in a future version. Use kubectl kubectl exec [POD] -- [COMMAND] instead.
root@nginx-dep1-58b7bf955f-z9cbg:/# cd /usr/
bin/ games/ include/ lib/ local/ sbin/ share/ src/
root@nginx-dep1-58b7bf955f-z9cbg:/# cd /usr/local/
bin/ etc/ games/ include/ lib/ man/ sbin/ share/ src/
root@nginx-dep1-58b7bf955f-z9cbg:/# cd /usr/share/nginx/html/
root@nginx-dep1-58b7bf955f-z9cbg:/usr/share/nginx/html# ls
a.txt index.html