使用 ​NFS 手动创建 ​PV/PVC 的静态供应实例

1. 前置条件

  1. NFS 服务器已部署:指定自己的NFS 服务器地址为 192.168.111.105,共享目录为 /data/nfs/static
  2. 客户端节点已安装 NFS 工具:确保 Kubernetes 节点能挂载 NFS。

2. 创建 PersistentVolume (PV)

手动定义一个 PV,指向 NFS 服务器的共享目录:

apiVersion: v1
kind: PersistentVolume
metadata:
  name: static-nfs-pv
spec:
  capacity:
    storage: 10Gi       # PV 总容量
  volumeMode: Filesystem
  accessModes:
    - ReadWriteMany     # NFS 支持多节点读写
  persistentVolumeReclaimPolicy: Retain  # 删除 PVC 后保留 PV 和数据
  storageClassName: static-nfs           # 可自定义或留空(与 PVC 匹配)
  nfs:
    path: /data/nfs/static  # NFS 共享目录路径
    server: 192.168.111.105   # NFS 服务器 IP

应用配置

kubectl apply -f static-nfs-pv.yaml

3. 创建 PersistentVolumeClaim (PVC)

定义 PVC 来申请 PV 资源(需匹配 PV 的 storageClassName 和容量):

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: static-nfs-pvc
spec:
  storageClassName: static-nfs  # 必须与 PV 的 storageClassName 一致
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 5Gi   # 请求的存储量(需 ≤ PV 的容量)

应用配置

kubectl apply -f static-nfs-pvc.yaml

4. 验证 PV/PVC 绑定

检查 PV 和 PVC 状态:

kubectl get pv static-nfs-pv       # 状态应为 Bound
kubectl get pvc static-nfs-pvc     # 状态应为 Bound

5. 在 Pod 中使用 PVC

将 PVC 挂载到 Pod 中:

apiVersion: v1
kind: Pod
metadata:
  name: nfs-static-pod
spec:
  containers:
  - name: nginx
    image: nginx
    volumeMounts:
    - name: nfs-storage
      mountPath: /usr/share/nginx/html  # 容器内的挂载路径
  volumes:
  - name: nfs-storage
    persistentVolumeClaim:
      claimName: static-nfs-pvc  # 引用 PVC

应用配置

kubectl apply -f pod-with-static-pvc.yaml

6. 验证数据持久化

​(1) 写入数据到 NFS 目录
kubectl exec -it nfs-static-pod -- touch /usr/share/nginx/html/test.txt
(2) 检查 NFS 服务器目录

在 NFS 服务器的 /data/nfs/static 目录中,应看到 test.txt 文件:

ls /data/nfs/static  # 确认文件存在

7. 清理资源

​(1) 删除 Pod 和 PVC
kubectl delete pod nfs-static-pod
kubectl delete pvc static-nfs-pvc
​(2) 手动清理 PV

由于 persistentVolumeReclaimPolicy: Retain,删除 PVC 后 PV 状态变为 Released,需手动删除并清理 NFS 数据:

kubectl delete pv static-nfs-pv
rm -rf /data/nfs/static/*   # 在 NFS 服务器上执行

配置说明

参数作用
accessModes: ReadWriteManyNFS 支持多节点同时读写。
persistentVolumeReclaimPolicyRetain:删除 PVC 后保留 PV 和数据;Delete:自动删除 PV 和数据(需谨慎! )。
storageClassName用于将 PVC 与 PV 匹配

使用推荐

  • 需要精确控制存储资源的分配。
  • NFS 共享目录已预先规划,无需动态创建子目录。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值