NFS服务器安装及NFS制备程序安装

nfs安装配置详解 NFS,全称为Network File System,是一种,用于在计算机网络中实现文件共享。它允许在不同的操作系统之间和目录,使得在网络中的计算机可以像访问本地文件一样访问远程计算机上的文件。NFS最初由Sun Microsystems开发,并在1984年首次发布。它是基于客户端-服务器模型的,其中一个计算机作为NFS服务器提供文件和目录的共享,而其他计算机则作为NFS客户端请求和访问这些共享资源。NFS支持在不同的操作系统之间进行文件共享,包括UNIX、Linux和Windows等。 阅读详情

NFS服务器安装及NFS制备程序安装

NFS服务器安装

NFS是一种分布式文件系统协议,由sun公司开发,旨在允许客户端主机可以像访问本地存储一样通过网络访问服务端文件

安装NFS服务器

  1. 登录需要安装NFS服务器的主机执行以下命令完成NFS安装
yum -y install nfs-utils rpcbind
  1. 创建NFS目录
mkdir -p /nfs/data
  1. 添加需要共享目录
# 编辑export文件    
vim /etc/exports

# 往export文件添加共享目录配置:NFS共享路径 客户机IP段(参数1,参数2,参数3,...,参数n)
# 如果指定*则所有能连接到NFS服务所在主机的所有客户端都能访问。如果指定某个IP端或者IP;则只有在IP段内的或者指定IP的客户端能访问NFS服务
/nfs/data *(rw,no_root_squash,sync)

# 使配置生效
exportfs -r

# 查看生效
exportfs

共享目录参数说明

  • ro:只读访问
  • rw:读写访问
  • sync:所有数据在请求时写入共享
  • async:nfs在写入数据前可以响应请求
  • secure:nfs通过1024以下的安全TCP/IP端口发送
  • insecure:nfs通过1024以上的端口发送
  • wdelay:如果多个用户要写入nfs目录,则归组写入(默认)
  • no_wdelay:如果多个用户要写入nfs目录,则立即写入,当使用async时,无需此设置
  • hide:在nfs共享目录中不共享其子目录
  • no_hide:共享nfs目录的子目录
  • subtree_check:如果共享/usr/bin之类的子目录时,强制nfs检查父目录的权限(默认)
  • no_subtree_check:不检查父目录权限
  • all_squash:共享文件的UID和GID映射匿名用户anonymous,适合公用目录
  • no_all_squash:保留共享文件的UID和GID(默认)
  • root_squash:root用户的所有请求映射成如anonymous用户一样的权限(默认)
  • no_root_squash:root用户具有根目录的完全管理访问权限
  • anonuid=xxx:指定nfs服务器/etc/passwd文件中匿名用户的UID
  • anongid=xxx:指定nfs服务器/etc/passwd文件中匿名用户的GID
  1. 启动rpcbind、nfs服务
systemctl start rpcbind && systemctl enable rpcbind
sudo systemctl enable nfs-server && sudo systemctl start nfs-server
  1. 查看rpc服务的注册情况
rpcinfo -p localhost
  1. 查看nfs共享目录
showmount -e nfs服务器ip

客户机安装NFS

  1. 安装NFS工具包
yum -y install nfs-utils

sudo systemctl enable nfs-server && sudo systemctl start nfs-server
  1. 查看nfs共享目录
showmount -e nfs服务器ip

安装NFS制备程序

创建RBAC资源

通过rbac资源对StorageClass、PV、PVC等资源进行权限控制

cat <<EOF> rbac.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
  name: nfs-client-provisioner
  namespace: default
---
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: nfs-client-provisioner-runner
rules:
  - apiGroups: [""]
    resources: ["persistentvolumes"]
    verbs: ["get", "list", "watch", "create", "delete"]
  - apiGroups: [""]
    resources: ["persistentvolumeclaims"]
    verbs: ["get", "list", "watch", "update"]
  - apiGroups: ["storage.k8s.io"]
    resources: ["storageclasses"]
    verbs: ["get", "list", "watch"]
  - apiGroups: [""]
    resources: ["events"]
    verbs: ["list", "watch", "create", "update","patch"]
  - apiGroups: [""]
    resources: ["endpoints"]
    verbs: ["create", "delete", "get", "list","watch", "patch", "update"]
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: run-nfs-client-provisioner
subjects:
  - kind: ServiceAccount
    name: nfs-client-provisioner
    namespace: default
roleRef:
  kind: ClusterRole
  name: nfs-client-provisioner-runner
  apiGroup: rbac.authorization.k8s.io
---
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: leader-locking-nfs-client-provisioner
  namespace: default
rules:
  - apiGroups: [""]
    resources: ["endpoints"]
    verbs: ["get", "list", "watch", "create", "update", "patch"]
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: leader-locking-nfs-client-provisioner
subjects:
  - kind: ServiceAccount
    name: nfs-client-provisioner
    namespace: default
roleRef:
  kind: Role
  name: leader-locking-nfs-client-provisioner
  apiGroup: rbac.authorization.k8s.io
EOF

# 执行如下指令创建RBAC资源
kubectl apply -f rbac.yaml
  • 由于nfs-client-provisioner是命名空间下资源,因此如果要操作集群系统级别资源,例如StorageClass,则需要分配权限才行

创建NFS Provisioner资源

# 创建nfs provisioner资源描述文件
cat <<EOF> nfs-client-provisioner.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nfs-client-provisioner
  labels:
    app: nfs-client-provisioner
  namespace: default
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nfs-client-provisioner
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: nfs-client-provisioner
    spec:
      serviceAccountName: nfs-client-provisioner
      containers:
        - name: nfs-client-provisioner
          image: registry.cn-hangzhou.aliyuncs.com/open-ali/nfs-client-provisioner
          volumeMounts:
            - name: nfs-client-root
              mountPath: /persistentvolumes
          env:
            - name: PROVISIONER_NAME
              value: hskp.io/nfs-client-provisioner
            - name: NFS_SERVER
              value: nfs文件服务器的Ip地址,不需要带端口
            - name: NFS_PATH
              value: nfs文件服务器共享的目录
      volumes:
        - name: nfs-client-root
          nfs:
            server: nfs文件服务器的Ip地址,不需要带端口
            path: nfs文件服务器共享的目录
EOF

# 创建nfs provisioner资源
kubectl create -f nfs-client-provisioner.yaml

测试nfs provisioner是否可用

创建StorageClass
cat <<EOF> managed-nfs-storage.yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: managed-nfs-storage
provisioner: hskp.io/nfs-client-provisioner #对应nfs-client-provisioner.yaml文件中spec.template.spec.containers[0].env下的PROVISIONER_NAME配置的内容
EOF

# 使用如下指令创建StorageClass
kubectl create -f managed-nfs-storage.yaml
  • 创建StorageClass并指定nfs provisioner。StorageClass是系统层级的资源
创建pvc使用storageClass动态创建pv
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: test-claim
spec:
  storageClassName: managed-nfs-storage
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 10Mi
创建pod使用pvc
kind: Pod
apiVersion: v1
metadata:
  name: test-pod
spec:
  containers:
    - name: test-pod
      image: nginx:1.20.0
      imagePullPolicy: IfNotPresent
      volumeMounts:
        - name: nfs-pvc
          mountPath: "/usr/share/nginx/html"
  restartPolicy: "Never"
  volumes:
    - name: nfs-pvc
      persistentVolumeClaim:
        claimName: test-claim
  • 使用pvc卷
查看pvc资源状态

执行如下指令查看pvc资源列表

kubectl get pvc # 如果需要指定命名空间可以添加 -n 命名空间
  • 查看STATUS列状态变为Bound表示已经成功绑定pv
查看动态创建的pv资源
kubectl get pv
  • 执行上述命令可以查看集群下的pv资源列表
  • pvs属于系统资源而非命名空间下资源
  • CLAIM:可以知道那个命名空间下的那个pvc于当前pv绑定
  • STORAGECLASS:pv是由那个storageClass动态创建
  • RECLAIM POLICY:告诉pv的保留策略
nfs提供者无法动态分配资源

如果pvc一直没有到Bound状态,可以查看nfs-client-provisioner pod日志,如果报以下类似错误,可以通过如下方式解决

E0209 04:58:34.682881       1 controller.go:1004] provision "mysql/www-nginx-0" class "managed-nfs-storage": unexpected error getting claim reference: selfLink was empty, can't make reference

SelfLink在Kubernetes v1.16引入,v1.20之前默认使用,在v1.20之后默认禁用,需要在/etc/kubernetes/manifests/kube-apiserver.yaml中添加如下指令参数启用SelfLink

spec:
containers:
- command:
    - kube-apiserver
    - --feature-gates=RemoveSelfLink=false

执行如下指令使参数生效

kubectl apply -f /etc/kubernetes/manifests/kube-apiserver.yaml
Linux下安装配置nfs 192.168.0.101(rw,no_root_squash,no_all_squash,sync) 为客户端的地址及权限,地址可以是一个网段(如:192.168.0.0/24),一个IP地址或者是一个域名,域名支持通配符,如:*.root_squash:NFS客户端连接服务端时如果使用的是root的话,那么对服务端分享的目录来说,拥有匿名用户权限,通常他将使用nobody或nfsnobody身份;显然开启这项是不安全的。/usr/local/test/ 为共享的目录,使用绝对路径。 阅读详情

相关推荐

NFS共享储存服务

NFS共享储存文件(NFS网络文件系统)① 依赖于RPC(远程过程调用)② 需要安装nfs-utils和rpcbind软件包nfs-utils 端口号:2049 TCP传输协议rpcbind 端口号:111 TCP传输协议③ 系统服务,网络上共享文件系统的协议④ 允许多个服务器之间通过网络共享文件和目录⑤ 许多操作系统的标配服务既有服务端也有客户端服务端:将指定的目录标记为共享目录,给赋予访问权限,赋予指定目录全部权限。

Liu_Fang_Hong的博客 3155

NFS安装

目录 1.什么是NFS? 2.NFS服务端安装? 3.nfs客户端安装 4.umount卸载 5.nfs 挂载时注意事项 1.什么是NFS? NFS全称Network File System,即网络文件系统,NFS同时也是一种网络协议,主要功能是通过网络让不同的主机系统之间可以共享文件或目录。在NFS中,本地NFS客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。 2.NFS服务端安装? 1.nfs 安装 yum install -y nfs-u..

厚积薄发的博客 9845

K8s动态扩展Jenkins-Slave实战:从NFS制备到Pod自动化

本文详细介绍了在Kubernetes上部署高可用Jenkins并实现动态Slave扩展的实战方案。通过NFS动态存储制备器解决数据持久化问题,配置Kubernetes插件实现按需创建和销毁构建Pod,从而获得极致的资源弹性、环境隔离和高可用性,显著提升CI/CD流水线的效率和运维便捷性。

weixin_29215815的博客 613

Linux 环境下 NFS 服务安装及配置使用

NFS 是 Network FileSystem 的缩写,顾名思义就是网络文件存储系统,它最早是由 Sun 公司发展出来的,也是 FreeBSD 支持的文件系统中的一个,它允许网络中的计算机之间通过 TCP/IP 网络共享资源。通过 NFS,我们本地 NFS 的客户端应用可以透明地读写位于服务端 NFS 服务器上的文件,就像访问本地文件一样方便。简单的理解,NFS 就是可以透过网络,让不同的主机、不同的操作系统可以共享存储的服务。

哎_小羊的博客 10万+

K8S中基于NFS-Subdir-External-Provisioner存储组件实现的StorageClass

一般 StorageClass 都有一个制备器(Provisioner),用来决定使用哪个卷插件制备 PV。NFS-Subdir-External-Provisioner是对 nfs-client-provisioner 的扩展,如今nfs-client-provisioner 已经不提供更新,且 nfs-client-provisioner 的 Github 仓库已经迁移到 NFS-Subdir-External-Provisioner 的仓库。

weixin_45648912的博客 3376

第五节 Amesim《直动型溢流阀HCD建模》HCD5 学习资料

利用HCD原则创建直动型溢流阀的界面。这可能包括图形化表示直动型溢流阀的工作原理、操作方式和调节方法。这样的界面应当直观且易于理解,使用户能够轻松了解阀门的功能和使用方法。

m0_58052642的博客 1330

Kubernetes Storage Class动态制备NFS PV入门教程

本次实验用StorageClass给nginx挂载上目录,并在里面添加一个index.html,index.html只有以下内容。

咸鱼的博客 635

DETRs with Collaborative Hybrid Assignments Training论文阅读与代码

在这篇论文中,作者观察到在DETR中将过少的 Query 分配为正样本,采用一对一的集合匹配,会导致对编码器输出的监督稀疏,严重损害编码器的区分特征学习,反之亦然,也会影响解码器中的注意力学习。为了缓解这个问题,作者提出了一种新颖的协同混合分配训练方案,名为Co-DETR,以从多样的标签分配方式中学习更高效、更有效的基于DETR的检测器。这种新的训练方案可以通过训练多个并行辅助 Head ,以一对多的标签分配方式(如ATSS和Faster RCNN)进行监督,轻松增强端到端检测器中编码器的学习能力。

qingjing0413的博客 1156

k8s 安装nfs_如何在kubernetes集群中使用nfs存储卷——通过自建nfs服务器

对于运行在云服务商中的k8s集群(比如GKE等),有比较完善的存储卷支持。而自建的k8s集群,这方面往往比较麻烦。经过调查,发现在自建k8s集群中使用nfs卷是一个比较简单可行的方案。nfs服务器可以独立于k8s集群,便于集中管理集群中的卷和文件。本文内容包括:安装配置nfs服务器使用nfs客户端连接nfs共享文件夹在k8s集群中通过手动方式创建nfs卷本文实验环境为ubuntu/Debian,对...

weixin_39898380的博客 923

STM32CUBEIDE调试中HardFault_Handler崩溃的故障分析器实战解析

本文详细解析STM32CUBEIDE调试中HardFault_Handler崩溃问题的实战处理方法。通过内置故障分析器自动诊断硬件异常原因,如内存越界、堆栈溢出等,提供图形化界面简化调试流程,并分享配置步骤、典型案例及高级调试技巧,帮助开发者快速定位和解决嵌入式系统崩溃问题。

night的博客 646

oracle p6 破解版下载,Primavera P6项目管理软件 16~17 图文详细安装教程(附下载)

Primavera P6 Professional项目管理软件结合了Oracle和Microsoft SQL Server关系数据库,是一款非常好用且功能强大的综合的项目管理软件(PPM) 解决方案,主要用于土建等方面的施工计划分析,具有进度时间安排与资源控制功能的多用户、多项目系统,支持多层项目分层结构、角色与技能导向的资源安排、记录实际数据、自定义视图以及自定义数据,本文主要为大家图文详细介绍...

weixin_33978451的博客 4922

K8S单机部署-06.动态持久化StorageClass(基于NFS)

Kubernetes提供了一套可以自动创建PV的机制,即:Dynamic Provisioning.而这个机制的核心在于:StorageClass这个API对象.有了这两个信息之后,Kubernetes就能够根据用户提交的PVC,找到一个对应的StorageClass,之后Kubernetes就会调用该StorageClass声明的存储插件,进而创建出需要的PV.但是其实使用起来是一件很简单的事情,你只需要根据自己的需求,编写YAML文件即可,然后使用kubectl create命令执行即可。

GQ_YIN日常记录 2076

TensorRT量化校准数据集选择

在TensorRT中进行INT8量化时,校准数据集的选择至关重要,直接影响量化后模型的精度和推理性能。这是一个典型的问题。

浩瀚之水的专栏 500

k8s之nfs挂载,使用一个节点进行存储

环境: master1 192.168.0.145 node1 192.168.0.146 node2 192.168.0.147 现要求所有不同节点的pod,文件统一上传至node1节点上的文件里,日志也同样放在node1上 步骤如下: 配置NFS服务器在node1上 # 安装 yum -y install nfs-utils # 创建或使用用已有的文件夹作为nfs文件存储点 vi /etc/exports (写入如下内容) /mnt *(rw,no_root_squash,sync) #

吴广智的博客 3327

ROM和RAM在单片机程序运行理解

ROM和RAM是电子设备中两种核心存储组件,主要区别在于:ROM用于长期存储系统程序、用户文件等固定数据,断电后数据不丢失,但写入速度较慢;RAM则用于临时存储运行中的程序和数据,读写速度快但断电后数据会清空。在单片机中,ROM存储程序代码和常量,RAM存储运行时的变量和数据。两者协同工作,ROM如同"永久档案库"保存必要信息,RAM则像"临时工作台"支持高速运算,共同确保设备正常运行。

qq_37999850的博客 1624

YOLO26优化:注意力魔改 | 用于微小目标检测的上下文增强和特征细化网络ContextAggregation,助力小目标检测,暴力涨点

用于微小目标检测的上下文增强和特征细化网络ContextAggregation,助力小目标检测

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 492

k8s集群nfs网络持久卷存储实现

k8s集群nfs网络持久卷存储实现

qq_50255609的博客 718

比NTP还牛逼的时间同步协议:1588v2,亚微秒级!

1588v2,又称为Precision Time Protocol Version 2,即精密时间协议的第二版本,或称为PTPv2,是一种精密时间同步协议标准,旨在实现网络中设备之间的高精度时间同步。该协议由IEEE标准组织发布,并在网络测量和控制系统中得到广泛应用。1588v2的主要目的是在计算机网络中提供高度准确的时间同步。它可用于确保不同设备之间的时钟同步,从而协调它们的操作。这对于需要协同工作的系统、无线通信基站等具有关键性的应用非常重要。

网络技术联盟站 4282

【云原生 | Kubernetes 实战】13、K8s 常见的存储方案及具体应用场景分析(下)

k8s 存储类:storageclass 详解!!!

GG Bond 的博客 1437

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Kubernetes学习指南:保姆级实操手册08——持久化存储部署(StorageClass)

八、Kubernetes学习指南:保姆级实操手册08——持久化存储部署(StorageClass)一、NFS for kubernetes特性介绍NFS(Network File System)卷在Kubernetes中的使用提供了一种将远程文件系统挂载到Pods中的方法。优化建议:在创建NFS卷时,明确规划数据的组织结构...

cnzzs的博客 422

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

K8s动态扩展Jenkins-Slave实战:NFS存储与Pod自动化管理

本文详细介绍了在Kubernetes(K8s)环境中动态扩展Jenkins-Slave的实战方法,包括NFS存储配置、Pod自动化管理以及高可用部署。通过动态扩展技术,显著提升了CI/CD流水线的执行效率,资源利用率提高40%。文章还提供了NFS服务端搭建、Jenkins-Master部署及动态Slave配置的详细步骤和优化建议。

m2n3b4v5c6的博客 179

K8s 环境部署 ECShop 商城:从 NFS 存储到 HPA 自动扩缩容全流程实战

K8s 环境部署 ECShop 商城:从 NFS 存储到 HPA 自动扩缩容全流程实战

2403_88632628的博客 181

k8s StorageClass 存储类

k8s StorageClass 存储类

misakivv的博客 2387

学习记录---kubernetes动态卷使用---storageClass及驱动安装(nfs驱动)

kubernetes中,在存储层面,我们常用到的两个资源是pv和pvc,其中pv是实际创建出来的一致性卷,我们可以通过pv将容器中的数据进行持久化保存,而pvc则可以理解为pod使用pv的中间控制器,通过pvc将pv绑定到pod上。但是在生产环境下,我们需要按照顺序先创建pv,再创建pvc,然后在pod中进行绑定。此外,在某些场景下,我们甚至需要在对应的pod所在的目录上创建目录,但是由于kubernetes的调度规则是黑盒制度,一般情况下,不好进行控制。

wx370092877的博客 521

告别数据丢失:Kubernetes 中的 NFS PVC 持久化存储

k8s使用nfs

u013901725的博客 411
上一篇: Kubernetes集群添加新集群节点
下一篇: helm部署Seata服务
炒栗子不加糖
博客等级 码龄10年 68粉丝 123原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值