当前位置: 首页 > news >正文

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

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-utilssudo 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-provisionernamespace: 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: ServiceAccountname: nfs-client-provisionernamespace: default
roleRef:kind: ClusterRolename: nfs-client-provisioner-runnerapiGroup: rbac.authorization.k8s.io
---
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:name: leader-locking-nfs-client-provisionernamespace: 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: ServiceAccountname: nfs-client-provisionernamespace: default
roleRef:kind: Rolename: leader-locking-nfs-client-provisionerapiGroup: 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-provisionerlabels:app: nfs-client-provisionernamespace: default
spec:replicas: 1selector:matchLabels:app: nfs-client-provisionerstrategy:type: Recreatetemplate:metadata:labels:app: nfs-client-provisionerspec:serviceAccountName: nfs-client-provisionercontainers:- name: nfs-client-provisionerimage: registry.cn-hangzhou.aliyuncs.com/open-ali/nfs-client-provisionervolumeMounts:- name: nfs-client-rootmountPath: /persistentvolumesenv:- name: PROVISIONER_NAMEvalue: hskp.io/nfs-client-provisioner- name: NFS_SERVERvalue: nfs文件服务器的Ip地址,不需要带端口- name: NFS_PATHvalue: nfs文件服务器共享的目录volumes:- name: nfs-client-rootnfs: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-storageaccessModes:- ReadWriteManyresources:requests:storage: 10Mi

创建pod使用pvc

kind: Pod
apiVersion: v1
metadata:name: test-pod
spec:containers:- name: test-podimage: nginx:1.20.0imagePullPolicy: IfNotPresentvolumeMounts:- name: nfs-pvcmountPath: "/usr/share/nginx/html"restartPolicy: "Never"volumes:- name: nfs-pvcpersistentVolumeClaim: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

相关文章:

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

NFS服务器安装及NFS制备程序安装 NFS服务器安装 NFS是一种分布式文件系统协议&#xff0c;由sun公司开发&#xff0c;旨在允许客户端主机可以像访问本地存储一样通过网络访问服务端文件 安装NFS服务器 登录需要安装NFS服务器的主机执行以下命令完成NFS安装 yum -y install…...

matlab+yalmip+cplex求解车辆路径优化问题(VRP)--matlab中yalmip函数介绍

YALMIP是一个MATLAB工具箱&#xff0c;用于建模和求解优化问题。它支持线性规划、二次规划、整数规划、鲁棒优化、半定规划等优化问题的建模和求解。下面是一些常用的函数的详细介绍&#xff1a; 1. sdpvar&#xff1a;用于定义优化问题中的变量。可以定义实数、向量和矩阵型变…...

实战:用dockerfile创建镜像实现springboot项目容器化

文章目录 前言技术积累docker基本操作命令dockerfile简介dockerfile指令说明 实战演示创建dockerfile创建挂载目录构建dockerfile启动容器完成验证 写在最后 前言 docker容器化方案是当下流行的服务部署方式&#xff0c;在软件领域举足轻重。我公司的测试、线上环境都采用dock…...

【Flask】配置项解析与加载

文章目录 默认配置表配置项加载方式直接配置存放在app.config字典通过.py配置文件通过class类加载对象通过.json配置文件通过环境变量配置内置命令行 默认配置表 配置项默认值备注DEBUGFalse是否开启 Debug 模式。如果为True&#xff0c;修改了代码&#xff0c;只需要保存&…...

Dinky: 实时即未来,让 Flink SQL 纵享丝滑--如何本地编译、运行

什么是Dinky 实时即未来,Dinky 为 Apache Flink 而生,让 Flink SQL 纵享丝滑。 Dinky 是一个开箱即用、易扩展,以 Apache Flink 为基础,连接 OLAP 和数据湖等众多框架的一站式实时计算平台,致力于流批一体和湖仓一体的探索与实践。 最后,Dinky 的发展皆归功于 Apache …...

2023 Nature 健康系统规模的语言模型是通用预测引擎

文章目录 一、论文关键信息二、论文主要内容三、总结与讨论🍉 CSDN 叶庭云:https://yetingyun.blog.csdn.net/ 一、论文关键信息 论文标题:Health system-scale language models are all-purpose prediction engines 期刊信息:2023 Nature 论文地址:h...

《2023 年 React 生态》

大家好&#xff0c;我是 Chocolate。 前不久看到一篇不错的内容&#xff0c;来自于 The React Ecosystem in 2023&#xff0c;也结合自己今年使用的 React 生态总结一下。 本文并非视频演讲稿&#xff0c;和视频内容还是有一点点区别&#xff0c;视频内容相对来说会更加详细一…...

武职302303笔记-day01

这里写自定义目录标题 开发永和小票开发步骤1、对页面进行需求分析 使用CSS的方式 Order.html问题&#xff1a;html代码和css样式代码交织 idea开发后端程序使用chatGPT给我们打工QRCreate.java 开发永和小票 开发步骤 1、对页面进行需求分析 页面是很多文字组成&#xff0c;…...

Python面试高频100题【11~15题】

Python面试必知100例。收集整理了目前Python岗位常见的面试题&#xff0c;希望大家通过学习理解相关知识点。下面介绍的是11~15道题。 十一、请介绍下Python中单下划线与双下划线区别 在Python中&#xff0c;单下划线和双下划线主要用于命名变量和方法&#xff0c;而它们具有不…...

Linux下Redis 存储

命令使用 目录 命令使用 RDB持久化 AOF持久化 yum安装 [rootlocalhost ~]# yum -y install redis 已加载插件&#xff1a;fastestmirror Loading mirror speeds from cached hostfile* c7-media: * epel: ftp.yz.yamagata-u.ac.jpvim到文件etc/redis.conf 取消注释requirep…...

QML 快速上手3 - QuickControl2

目录 QuickControl2简介风格设置control 配置文件图像浏览器案例component 组件报错问题StackViewSwipeView QuickControl2 简介 quickcontrol 用于快速构建风格化的用户界面 它包括了以下几个预制的组件风格 Default QT 默认风格Universal windows 桌面风格Material 谷歌推…...

QT Creator写一个简单的电压电流显示器

前言 本文主要涉及上位机对接收的串口数据处理&#xff0c;LCD Number控件的使用。之前的一篇写一个简单的LED控制主要是串口发出数据&#xff0c;这里再看一下怎么接收数据处理数据&#xff0c;这样基本就对串口上位机有简单的认识了。 LCD Number显示时间 这一小节通过用一…...

前端需要的技能

语言&#xff1a; 1&#xff0c;熟练掌握html5&#xff0c;css3&#xff0c;javascript&#xff0c;ajax 2&#xff0c;掌握PHP、java、python中至少一种web开发语言 3&#xff0c;库/框架:MooTools,YUI,Angular,jQuery,Dojo. 4&#xff0c;UI框架&#xff1a;BootStrap,Founda…...

Qt——Qt控件之基于模型的项目视图组-QTreeView树形视图控件的使用总结(Qt仿word标题列表的实现)

【系列专栏】:博主结合工作实践输出的,解决实际问题的专栏,朋友们看过来! 《项目案例分享》 《极客DIY开源分享》 《嵌入式通用开发实战》 《C++语言开发基础总结》 《从0到1学习嵌入式Linux开发》...

spring boot框架步骤

目录 1. 创建一个新的Spring Boot项目2. 添加所需的依赖3. 编写应用程序代码4. 配置应用程序5. 运行应用程序6. 编写和运行测试7. 部署应用程序 总结 当使用Spring Boot框架开发应用程序时&#xff0c;以下是一些详细的步骤&#xff1a; 1. 创建一个新的Spring Boot项目 使用…...

动态创建select

1.动态创建select function createSelect(){ var mySelect document.createElement("select"); mySelect.id "mySelect"; document.body.appendChild(mySelect); } 2.添加选项option function addOption(){ //根据id查找对象&#xff0c; var objdoc…...

linux-centos7操作系统查看系统未挂载的磁盘,挂载磁盘

linux-centos7操作系统查看系统未挂载的磁盘,挂载磁盘 查看当前磁盘空间 根目录 / 下也只有44G,其他目录只有10几G,正式环境肯定不够用 df -h查看硬盘数量和分区情况 fdisk -l查看到/dev/vdb 有500多G了 将/dev/vdb在分出一个区使用 第一步:编辑分区。执行命令fdisk …...

STM32软件定时器

目录 什么是定时器&#xff1f; 软件定时器优缺点 软件定时器原理 软件定时器相关配置 单次定时器和周期定时器 软件定时器相关 API 函数 1. 创建软件定时器 2. 开启软件定时器 3. 停止软件定时器 4. 复位软件定时器 5. 更改软件定时器定时时间 实操 cubeMX配置 …...

[论文阅读] (30)李沐老师视频学习——3.研究的艺术·讲好故事和论点

《娜璋带你读论文》系列主要是督促自己阅读优秀论文及听取学术讲座&#xff0c;并分享给大家&#xff0c;希望您喜欢。由于作者的英文水平和学术能力不高&#xff0c;需要不断提升&#xff0c;所以还请大家批评指正&#xff0c;非常欢迎大家给我留言评论&#xff0c;学术路上期…...

Java中List、Set、Map的区别和实现方式

Java中List、Set、Map的区别和实现方式 List List 是一个有序的集合&#xff0c;即元素按照插入的顺序进行排序&#xff0c;可以有重复的元素。因为是有序的&#xff0c;所以可以根据下标来获取元素或者遍历整个集合内的元素。常用的实现类包括 ArrayList 和 LinkedList。 A…...

深入剖析AI大模型:大模型时代的 Prompt 工程全解析

今天聊的内容&#xff0c;我认为是AI开发里面非常重要的内容。它在AI开发里无处不在&#xff0c;当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗"&#xff0c;或者让翻译模型 "将这段合同翻译成商务日语" 时&#xff0c;输入的这句话就是 Prompt。…...

调用支付宝接口响应40004 SYSTEM_ERROR问题排查

在对接支付宝API的时候&#xff0c;遇到了一些问题&#xff0c;记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...

Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动

一、前言说明 在2011版本的gb28181协议中&#xff0c;拉取视频流只要求udp方式&#xff0c;从2016开始要求新增支持tcp被动和tcp主动两种方式&#xff0c;udp理论上会丢包的&#xff0c;所以实际使用过程可能会出现画面花屏的情况&#xff0c;而tcp肯定不丢包&#xff0c;起码…...

[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?

论文网址&#xff1a;pdf 英文是纯手打的&#xff01;论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误&#xff0c;若有发现欢迎评论指正&#xff01;文章偏向于笔记&#xff0c;谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...

前端开发面试题总结-JavaScript篇(一)

文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包&#xff08;Closure&#xff09;&#xff1f;闭包有什么应用场景和潜在问题&#xff1f;2.解释 JavaScript 的作用域链&#xff08;Scope Chain&#xff09; 二、原型与继承3.原型链是什么&#xff1f;如何实现继承&a…...

基于matlab策略迭代和值迭代法的动态规划

经典的基于策略迭代和值迭代法的动态规划matlab代码&#xff0c;实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...

Hive 存储格式深度解析:从 TextFile 到 ORC,如何选对数据存储方案?

在大数据处理领域&#xff0c;Hive 作为 Hadoop 生态中重要的数据仓库工具&#xff0c;其存储格式的选择直接影响数据存储成本、查询效率和计算资源消耗。面对 TextFile、SequenceFile、Parquet、RCFile、ORC 等多种存储格式&#xff0c;很多开发者常常陷入选择困境。本文将从底…...

OD 算法题 B卷【正整数到Excel编号之间的转换】

文章目录 正整数到Excel编号之间的转换 正整数到Excel编号之间的转换 excel的列编号是这样的&#xff1a;a b c … z aa ab ac… az ba bb bc…yz za zb zc …zz aaa aab aac…; 分别代表以下的编号1 2 3 … 26 27 28 29… 52 53 54 55… 676 677 678 679 … 702 703 704 705;…...

【把数组变成一棵树】有序数组秒变平衡BST,原来可以这么优雅!

【把数组变成一棵树】有序数组秒变平衡BST,原来可以这么优雅! 🌱 前言:一棵树的浪漫,从数组开始说起 程序员的世界里,数组是最常见的基本结构之一,几乎每种语言、每种算法都少不了它。可你有没有想过,一组看似“线性排列”的有序数组,竟然可以**“长”成一棵平衡的二…...

DAY 45 超大力王爱学Python

来自超大力王的友情提示&#xff1a;在用tensordoard的时候一定一定要用绝对位置&#xff0c;例如&#xff1a;tensorboard --logdir"D:\代码\archive (1)\runs\cifar10_mlp_experiment_2" 不然读取不了数据 知识点回顾&#xff1a; tensorboard的发展历史和原理tens…...