PV 描述的,是持久化存储数据卷。这个 API 对象主要定义的是一个持久化存储在宿主机上的目录,比如一个 NFS 的挂载目录。
PVC 描述的,则是 Pod 所希望使用的持久化存储的属性。比如,Volume 存储的大小、可读写权限
定义一个NFS类型的PV
cat wanglong-PersistentVolume.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: nfs
spec:
storageClassName: manual
capacity:
storage: 1Gi
accessModes:
- ReadWriteMany
nfs:
server: yutang2-181
path: "/data/nfs-volume/nfs_client_provisioner"
声明使用NFS-PV
cat wanglong-PersistentVolumeClaim.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: nfs
spec:
accessModes:
- ReadWriteMany
storageClassName: manual
resources:
requests:
storage: 1Gi
使用声明的PVC资源
cat wanglong-dp.yaml
apiVersion: v1
kind: Pod
metadata:
name: testpod
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
查看创建的Pod地址
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
testpod 1/1 Running 0 2m7s 172.2.177.6 yutang2-177.host.com <none> <none>
在共享目录下,创建主页文件
echo 'wo shi wanglong' > /data/nfs-volume/nfs_client_provisioner/index.html
检测主页文件持久化存储是否生效
[root@yutang2-177 ~]# curl http://172.2.177.6
wo shi wanglong