🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
:-: ![](https://img.kancloud.cn/03/85/03856e202bfb76c8c01b62fb93d0bcde_1242x239.png) PV 与 PVC 的应用过程 PVC 根据 PV 的访问模式和容量进行绑定。 | 资源名称 | 访问模式 | 容量 | | --- | --- | --- | | PV | `spec.accessModes` | `spec.capacity.storage` | | PVC | `spec.accessModes` | `spec.resources.requests.storage` | <br/> PV 与 PVC 的使用步骤如下: **1. 定义 PV** ```shell 【1】定义 PV # vim nginx-pv01.yaml apiVersion: v1 kind: PersistentVolume metadata: name: nginx-pv01 spec: capacity: storage: 5Gi #PV的空间容量 accessModes: - ReadWriteMany #PV的访问模式 persistentVolumeReclaimPolicy: Recycle #PV的回收策略 nfs: path: /home/cone/share #nfs服务器挂载路径 server: 192.168.1.16 #nfs服务器地址 【2】创建 PV # kubectl apply -f nginx-pv01.yaml # kubectl get pv NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE nginx-pv01 5Gi RWX Recycle Available 101s ``` <br/> **2. 定义 PVC 并绑定 PV** ```shell 【1】定义 PVC # vim nginx-pvc01.yaml apiVersion: v1 kind: PersistentVolumeClaim metadata: name: nginx-pvc01 spec: accessModes: - ReadWriteMany #对应的PV的访问模式 resources: requests: storage: 5Gi #对应的PV空间容量 【2】创建 PVC # kubectl apply -f nginx-pvc01.yaml # kubectl get pvc NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE nginx-pvc01 Bound nginx-pv01 5Gi RWX 60s ``` <br/> **3. 部署一个应用来演示 PVC 的调用** ```shell 【1】 # kubectl create deployment nginx-dep02 --image=nginx:latest --dry-run=client -o yaml > nginx-dep02.yaml # vim nginx-dep02.yaml apiVersion: apps/v1 kind: Deployment metadata: labels: app: nginx-dep02 name: nginx-dep02 spec: replicas: 1 selector: matchLabels: app: nginx-dep02 template: metadata: labels: app: nginx-dep02 spec: containers: - image: nginx:latest name: nginx volumeMounts: - name: share-nginx mountPath: /usr/share/nginx/html volumes: - name: share-nginx persistentVolumeClaim: claimName: nginx-pvc01 #PVC的名字 【2】创建应用 # kubectl apply -f nginx-dep02.yaml # kubectl get pods NAME READY STATUS RESTARTS AGE nginx-dep02-674dccbc9c-k464t 1/1 Running 0 2m3s ``` <br/> **4. 测试** ```shell 【1】在 nfs 服务器的挂载目录随便创建一个文件 # cd /home/cone/share # vim index.txt Hello World! 【2】进入到 Pod 查看是否有 index.txt 文件 # kubectl exec -it nginx-dep02-674dccbc9c-k464t bash root@nginx-dep02-674dccbc9c-k464t:/# root@nginx-dep02-674dccbc9c-k464t:/# cd /usr/share/nginx/html root@nginx-dep02-674dccbc9c-k464t:/# ls index.txt /* 可以看到容器内已经有这个文件了,挂载成功 */ root@nginx-dep02-674dccbc9c-k464t:/# cat index.txt Hello World! ``` **** 参考文档:https://feisky.xyz/kubernetes-handbook/concepts/persistent-volume.html