:-: ![](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
- K8s是什么
- K8s特点
- K8s功能
- 为什么用容器
- K8s集群搭建
- 1. 集群架构
- 2. 机器初始化
- 3. 安装Docker
- 4. 配置k8s镜像仓库
- 5. 安装k8s核心工具
- 6. 初始化主节点
- 7. node节点加入集群
- 8. 安装Pod网络插件
- 9. 测试k8s集群
- yaml资源文件
- yaml文件作用
- yaml文件编辑语法
- 资源清单描述方法
- 命令行工具kubectl
- kubectl是什么
- kubectl命令语法
- Pod
- Pod是什么
- Pod特征
- Pod定义
- Pod基本操作
- Pod分类
- Pod生命周期
- Pod重启策略
- 镜像拉取策略
- 资源限制
- 健康检查
- Label
- Namespace
- ReplicationController
- ReplicaSet
- Deployment
- HorizontalPodAutoscaler
- Service
- Service是什么
- 应用Service
- Ingress
- Ingress是什么
- 部署ingress-nginx
- Helm
- Helm是什么
- Volume
- Volume是什么
- NFS的使用
- PV与PVC
- PV与PVC是什么
- PV与PVC的使用
- ConfigMap
- ConfigMap是什么
- ConfigMap创建
- ConfigMap使用
- ConfigMap热更新
- 滚动更新Pod
- Secret
- Secret作用
- Secret类型