k8s nfs pv pvc

本文详细介绍如何在Kubernetes中配置NFS作为持久卷(PV),包括安装NFS服务、创建PV、申请PVC及挂载到Pod的过程,并验证共享存储的读写权限。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. nfs准备

1. yum install nfs-utils rpcbind -y

2. cd / && mkdir tmp1

3. chown -R nfsnobody.nfsnobody /tmp1

4. vim /etc/exports
[root@k8s-master manifests]# cd /etc
[root@k8s-master etc]# vim exports
 /tmp1 *(rw,sync)

5. systemctl enable nfs-server
6. systemctl start nfs-server

7. showmount -e
[root@k8s-master etc]# showmount -e
Export list for k8s-master:
/tmp1 *

2. 创建pv

[root@k8s-master k8s]# cat pv.yaml 
apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv1
spec:
  capacity:
    storage: 5Gi
  accessModes:
    - ReadWriteMany
  persistentVolumeReclaimPolicy: Recycle
  storageClassName: slow
  nfs:
    path: /tmp1
    server: 127.0.0.1

3. 申请pvc

[root@k8s-master k8s]# cat pvc.yaml 
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: pvc1
spec:
  storageClassName: slow
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 200Mi

4. 挂载pod

[root@k8s-master k8s]# cat pod-busybox-pvc.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: pod-use-pvc
spec:
  containers:
  - name: pod-use-pvc
    image: busybox
    command:
    - sleep
    - "3600"
    volumeMounts:
    - name: pvc-path
      mountPath: /pvc-data
  volumes:
  - name: pvc-path
    persistentVolumeClaim:
      claimName: pvc1

5. 验证

1. 容器内新建文件

[root@k8s-master /]# kubectl get po
NAME                                   READY   STATUS    RESTARTS   AGE
busybox-test-5c67469d4c-2wcxx          1/1     Running   1          6d8h
kubernetes-bootcamp-7d6f8694b6-bthc9   1/1     Running   4          22d
kubernetes-bootcamp-7d6f8694b6-ktk8k   1/1     Running   4          22d
nginx-6db489d4b7-hlgwm                 1/1     Running   4          29d
pod-busybox                            1/1     Running   0          37m
pod-use-pvc                            1/1     Running   0          33s
[root@k8s-master /]# kubectl exec -ti pod-use-pvc -- sh
/ # ls
bin       dev       etc       home      proc      pvc-data  root      sys       tmp       usr       var
/ # cd pvc-data/
/pvc-data # ls
/pvc-data # touch a
touch: a: Read-only file system
/pvc-data # touch a
/pvc-data # 



2. 共享存储服务器查看新建文件
[root@k8s-master /]# cd tmp1/
[root@k8s-master tmp1]# ls
a
[root@k8s-master tmp1]# clear
[root@k8s-master tmp1]# ll
总用量 0
-rw-r--r--. 1 nfsnobody nfsnobody 0 2月   4 00:06 a
[root@k8s-master tmp1]# pwd
/tmp1

 

### Kubernetes NFS 静态持久卷 (PV) 配置指南 在 Kubernetes 中配置 NFS 静态持久卷(Persistent Volume, PV),可以通过定义 YAML 文件来实现。以下是详细的说明和步骤: #### 定义静态 PV 的 YAML 文件 要创建一个 NFS 类型的静态 PV,需要编写如下所示的 `pv.yaml` 文件。 ```yaml apiVersion: v1 kind: PersistentVolume metadata: name: nfs-pv1 spec: capacity: storage: 1Gi volumeMode: Filesystem accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Retain storageClassName: manual-nfs nfs: path: /nfsdata server: 172.25.0.17 ``` - **capacity**: 表示该存储卷的最大容量,在此例子中设置为 1GB[^3]。 - **accessModes**: 定义访问模式,常见的有 `ReadWriteOnce`, `ReadOnlyMany`, 和 `ReadWriteMany`[^3]。 - **persistentVolumeReclaimPolicy**: 当 PVC 被删除时的行为策略,可选值包括 `Retain`, `Recycle`, 或者 `Delete`。 - **storageClassName**: 存储类名称用于区分不同的存储提供方式,这里命名为 `manual-nfs`。 - **nfs.path** 和 **nfs.server**: 这些字段指定 NFS 服务器的具体路径以及 IP 地址或域名[^3]。 #### 应用并验证 PV 是否成功创建 通过 kubectl 工具应用上述文件: ```bash kubectl apply -f pv.yaml ``` 随后可以查看新创建的 PV 状态是否正常: ```bash kubectl get pv ``` 如果一切顺利的话,应该能看到名为 `nfs-pv1` 的条目及其状态应标记为 “Available”。 #### 绑定 PVCPV 为了使 Pod 可以利用这个预先准备好的存储空间,则还需要建立相应的 PersistentVolumeClaim 请求对象。下面是一个简单的声明实例: ```yaml apiVersion: v1 kind: PersistentVolumeClaim metadata: name: example-pvc spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi storageClassName: manual-nfs ``` 一旦提交了这样的 PVC 请求之后,Kubernetes 就会尝试将其与之前定义的那个符合条件的 PV 关联起来形成绑定关系。此时再运行命令检查两者之间的关联情况即可确认操作成果: ```bash kubectl describe pvc example-pvc ``` 最后一步就是在实际的工作负载比如 Deployment 或者单独的 Pod 定义里引用刚才所生成出来的 PVC 来完成整个流程闭环。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值