前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >云原生家庭网络(八):部署 nfs-server 实现家庭 NAS 共享存储

云原生家庭网络(八):部署 nfs-server 实现家庭 NAS 共享存储

原创
作者头像
imroc
发布2024-05-20 16:11:18
1120
发布2024-05-20 16:11:18
举报

为什么需要 NFS ?

家里有些设备,比如电视机、投影仪,支持通过 NFS 远程读取文件来看路由器磁盘中的视频文件,前提是路由器安装了 NFS 服务(传说中的 NAS 中的一种协议)。

开源项目

本文部署的 NFS 服务使用这个开源项目构建的容器镜像:https://github.com/ehough/docker-nfs-server

目录结构

代码语言:txt
复制
nfs
├── config
│   └── exports
├── daemonset.yaml
└── kustomization.yaml

配置 exports 文件

将要共享的目录写在 exports 文件中,每行一个目录,格式为:目录路径 权限设置

代码语言:txt
复制
/data/media *(rw,no_root_squash,sync)
/data/media/movies *(rw,no_root_squash,sync)

配置 daemonset.yaml

代码语言:yaml
复制
apiVersion: apps/v1
kind: DaemonSet
metadata:
  labels:
    app: nfs
  name: nfs
  namespace: default
spec:
  selector:
    matchLabels:
      app: nfs
  template:
    metadata:
      labels:
        app: nfs
    spec:
      terminationGracePeriodSeconds: 1
      containers:
        - image: docker.io/erichough/nfs-server:2.2.1
          imagePullPolicy: IfNotPresent
          name: nfs
          securityContext:
            privileged: true
          volumeMounts:
            - mountPath: /data/media
              name: media
            - mountPath: /lib/modules
              name: mod
              readOnly: true
            - mountPath: /etc/exports
              name: exports
              subPath: exports
      dnsPolicy: Default
      hostNetwork: true
      restartPolicy: Always
      volumes:
        - name: media
          hostPath:
            path: /data/media
            type: DirectoryOrCreate
        - name: mod
          hostPath:
            path: /lib/modules
        - name: exports
          configMap:
            name: nfs-exports
  updateStrategy:
    rollingUpdate:
      maxSurge: 0
      maxUnavailable: 1
    type: RollingUpdate

配置 kustomization.yaml

代码语言:yaml title="kustomization.yaml"
复制
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization

resources:
  - daemonset.yaml

namespace: default

configMapGenerator:
  - name: nfs-exports
    files:
      - config/exports

注意事项

要求节点有 nfsnfsd 两个内核模块:

代码语言:bash
复制
lsmod | grep nfs
modprobe {nfs,nfsd}

如没有,ubuntu 可尝试安装:

代码语言:bash
复制
sudo apt-get install nfs-kernel-server

需禁用节点自身启动的 nfs-server 和 rpc-statd 服务,避免冲突:

代码语言:bash
复制
systemctl disable nfs-server
systemctl stop nfs-server
systemctl stop rpc-statd

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 为什么需要 NFS ?
  • 开源项目
  • 目录结构
  • 配置 exports 文件
  • 配置 daemonset.yaml
  • 配置 kustomization.yaml
  • 注意事项
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档