k8s部署NFS
时间: 2025-04-26 21:05:22 浏览: 21
### 如何在Kubernetes中部署和配置NFS
#### 准备工作
为了能够在Kubernetes集群上成功部署并配置NFS服务,需先确认已安装好Docker以及Kubernetes环境,并且能够正常使用`kubectl`命令工具来管理集群资源。对于Ubuntu操作系统而言,可以按照官方指南完成上述软件包的设置[^1]。
#### 部署NFS服务器
通过创建一个名为nfs-server.yaml的文件定义NFS Server Pod和服务对象,在此文件内指定镜像版本、挂载路径以及其他必要的参数。下面是一个简单的YAML模板用于启动NFS server实例:
```yaml
apiVersion: v1
kind: Service
metadata:
name: nfs-service
spec:
ports:
- port: 2049
protocol: TCP
---
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: nfs-server
name: nfs-server
spec:
replicas: 1
selector:
matchLabels:
app: nfs-server
template:
metadata:
labels:
app: nfs-server
spec:
containers:
- image: registry.k8s.io/nfs-provisioner:v4.0.2-gce
name: nfs-server
securityContext:
privileged: true
volumeMounts:
- mountPath: /exports
name: export-volume
volumes:
- hostPath:
path: /srv/nfs/pv
type: DirectoryOrCreate
name: export-volume
```
应用该配置文件将会建立一个新的Pod运行NFS服务程序,并开放相应的端口供外部访问。
#### 创建PersistentVolume(PV)与PersistentVolumeClaim(PVC)
为了让其他应用程序能方便地利用这个共享存储空间,还需要进一步声明持久卷(PV)及其对应的请求声明(PVC)。这里给出一段适用于大多数场景下的pv-nfs.yaml样例文档:
```yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv-nfs
spec:
capacity:
storage: 5Gi
accessModes:
- ReadWriteMany
nfs:
path: /
server: nfs-service.default.svc.cluster.local
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc-nfs
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 5Gi
```
当提交这段描述之后,任何希望连接到同一命名空间下由NFS提供的磁盘分区的应用都可以引用这个名字为pvc-nfs的对象作为自己的数据源。
#### 测试NFS功能正常与否
最后一步就是验证整个流程是否顺利结束。可以通过编写一个小测试案例的方式来进行检验,比如新建一个pod专门用来写入一些临时文件至刚刚设定好的网络附加存储设备里;随后再起动另一个容器读取这些资料以证明两者之间确实实现了跨节点的数据交换能力。
```bash
$ kubectl run test-writer --image=busybox --command -- sh -c "echo 'hello world' > /mnt/test.txt"
$ kubectl exec -it test-reader --image=busybox --mount=true --mount-path=/mnt:/mnt -- sh -c "cat /mnt/test.txt"
```
以上操作完成后应该可以看到输出结果为“hello world”,这表明基于Kubernetes平台搭建起来的NFS架构已经具备基本可用性。
阅读全文
相关推荐


















