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

k8s nfs-client 添加挂载参数 —— 筑梦之路

背景介绍

  1. 为什么要使用noresvport参数挂载NAS?不重新挂载会有什么后果?

    如果发生网络切换或者后端服务的HA倒换,小概率会造成NFS文件系统阻塞,那就可能需要几分钟时间连接才会自动恢复,极端情况下甚至需要重启ECS才能恢复。使用noresvport参数后,这个恢复几秒就可以自动完成。

  2. 什么情况会引发网络切换或者后端服务的HA倒换?

    NAS服务是稳定的,网络切换或者后端服务的HA倒换都是罕见情况。

    后端服务升级会触发上述切换,但导致客户端阻塞的概率很低,并且在升级之前我们会提前通知相关集群的用户,留出充足时间使用noresvport参数。

    其他可能引发切换的场景,还有负载均衡调整、服务端硬件故障等情况,有一定的不可预测性,所以即使服务端没有升级安排,也请尽快使用noresvport参数避免这样的风险。

  3. 为什么需要重新挂载?还有没有其他的方案?

    需要重新挂载的原因是要把之前没有使用noresvport参数的TCP连接断掉,然后使用noresvport参数挂载时,会建立新的TCP连接。

    为了把老的TCP连接断掉,就必须把NAS相关的业务都停掉,然后执行umount卸载。

    如果不希望重新挂载,可以考虑新建NAS挂载点,使用noresvport参数挂载到新的本地路径,然后把业务进程逐步迁移过去,最后废弃老的挂载路径和挂载点。

NFS挂载示例

静态PV

apiVersion: v1
kind: PersistentVolume
metadata:name: pv-nfs-v3
spec:accessModes:- ReadWriteOncecapacity:storage: 2GimountOptions:- vers=3- nolock,tcp,noresvportnfs:path: /nfs-v3server: nas_serverpersistentVolumeReclaimPolicy: Retain

 

apiVersion: v1
kind: PersistentVolume
metadata:name: pv-nfs-v4.0
spec:accessModes:- ReadWriteOncecapacity:storage: 2GimountOptions:- vers=4.0- noresvportnfs:path: /nfs-v4.0server: nas_serverpersistentVolumeReclaimPolicy: Retain

动态pvc

假设集群已经部署了nfs-client-provisioner用来实现在动态提供PersistentVolume

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:name: nfsv3-sc
mountOptions:
- vers=3
- nolock,tcp,noresvport
provisioner: fuseim.pri/ifs
reclaimPolicy: Retain---------------apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:name: nfsv4-sc
mountOptions:
- vers=4.0
- nolock,tcp,noresvport
provisioner: fuseim.pri/ifs
reclaimPolicy: Retain

PVC

apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: nfsv3-pvcnamespace: default
spec:accessModes:- ReadWriteOnceresources:requests:storage: 1GistorageClassName: nfsv3-scvolumeMode: Filesystem---------------apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: nfsv4-pvcnamespace: default
spec:accessModes:- ReadWriteOnceresources:requests:storage: 1GistorageClassName: nfsv4-scvolumeMode: Filesystem

测试

kind: Pod
apiVersion: v1
metadata:name: test-nfs-podnamespace: default
spec:containers:- name: test-nfs-podimage: busybox:1.24command:- "/bin/sh"args:- "-c"- "while true; do sleep 99999;done"volumeMounts:- name: nfsv3-pvcmountPath: "/mnt/nfsv3"- name: nfsv4-pvcmountPath: "/mnt/nfsv4"restartPolicy: "Never"volumes:- name: nfsv3-pvcpersistentVolumeClaim:claimName: nfsv3-pvc- name: nfsv4-pvcpersistentVolumeClaim:claimName: nfsv4-pvc

检查验证

mount | grep nfs

http://www.lryc.cn/news/157267.html

相关文章:

  • 【算法】堆排序 详解
  • 解决Maven依赖下载问题:从阿里云公共仓库入手
  • 【Java基础】学习笔记2 - 数组运算符与main方法
  • stable diffusion实践操作-复制-清空-保存提示词
  • 【Spring 事务和事务传播机制】
  • 【爬虫】实验项目二:模拟登录和数据持久化
  • 图文版:以太网二层接口类型(含配套习题)
  • 生信豆芽菜-机器学习筛选特征基因
  • v-html富文本里面的图片设置宽高不起作用的原因
  • pdf文档怎么压缩小一点?文件方法在这里
  • CMD关闭占用端口
  • 复制粘贴是怎么实现的
  • mybatisplus多租户原理略解
  • Spring整合RabbitMQ-配制文件方式-1-消息生产者
  • Python Opencv实践 - 凸包检测(ConvexHull)
  • IP网络广播系统有哪些优点
  • 【LeetCode】83. 删除排序链表中的重复元素
  • 【大数据】Flink 详解(七):源码篇 Ⅱ
  • stable diffusion实践操作-SD原理
  • C++ Primer Plus第十三章编程练习答案
  • Elasticsearch:wildcard - 通配符搜索
  • 配置类安全问题学习小结
  • IMX6ULL移植篇-uboot源码目录
  • SAP MM学习笔记27- 购买依赖(采购申请)
  • C++零碎记录(八)
  • 基于matlab的扩频解扩误码率完整程序分享
  • 算法:轮转数组---循环取模运算
  • Vue教程
  • 算法之双指针题型:
  • vue传递给后端时间格式问题