背景介绍
为什么要使用
noresvport
参数挂载NAS?不重新挂载会有什么后果?如果发生网络切换或者后端服务的HA倒换,小概率会造成NFS文件系统阻塞,那就可能需要几分钟时间连接才会自动恢复,极端情况下甚至需要重启ECS才能恢复。使用
noresvport
参数后,这个恢复几秒就可以自动完成。什么情况会引发网络切换或者后端服务的HA倒换?
NAS服务是稳定的,网络切换或者后端服务的HA倒换都是罕见情况。
后端服务升级会触发上述切换,但导致客户端阻塞的概率很低,并且在升级之前我们会提前通知相关集群的用户,留出充足时间使用
noresvport
参数。其他可能引发切换的场景,还有负载均衡调整、服务端硬件故障等情况,有一定的不可预测性,所以即使服务端没有升级安排,也请尽快使用
noresvport
参数避免这样的风险。为什么需要重新挂载?还有没有其他的方案?
需要重新挂载的原因是要把之前没有使用
noresvport
参数的TCP连接断掉,然后使用noresvport
参数挂载时,会建立新的TCP连接。为了把老的TCP连接断掉,就必须把NAS相关的业务都停掉,然后执行
umount
卸载。如果不希望重新挂载,可以考虑新建NAS挂载点,使用
noresvport
参数挂载到新的本地路径,然后把业务进程逐步迁移过去,最后废弃老的挂载路径和挂载点。
NFS挂载示例
静态PV
apiVersion: v1 kind: PersistentVolume metadata: name: pv-nfs-v3 spec: accessModes: - ReadWriteOnce capacity: storage: 2Gi mountOptions: - vers=3 - nolock,tcp,noresvport nfs: path: /nfs-v3 server: nas_server persistentVolumeReclaimPolicy: Retain
apiVersion: v1 kind: PersistentVolume metadata: name: pv-nfs-v4.0 spec: accessModes: - ReadWriteOnce capacity: storage: 2Gi mountOptions: - vers=4.0 - noresvport nfs: path: /nfs-v4.0 server: nas_server persistentVolumeReclaimPolicy: 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-pvc namespace: default spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi storageClassName: nfsv3-sc volumeMode: Filesystem --------------- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: nfsv4-pvc namespace: default spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi storageClassName: nfsv4-sc volumeMode: Filesystem
测试文章来源:https://www.toymoban.com/news/detail-691844.html
kind: Pod apiVersion: v1 metadata: name: test-nfs-pod namespace: default spec: containers: - name: test-nfs-pod image: busybox:1.24 command: - "/bin/sh" args: - "-c" - "while true; do sleep 99999;done" volumeMounts: - name: nfsv3-pvc mountPath: "/mnt/nfsv3" - name: nfsv4-pvc mountPath: "/mnt/nfsv4" restartPolicy: "Never" volumes: - name: nfsv3-pvc persistentVolumeClaim: claimName: nfsv3-pvc - name: nfsv4-pvc persistentVolumeClaim: claimName: nfsv4-pvc
检查验证文章来源地址https://www.toymoban.com/news/detail-691844.html
mount | grep nfs
到了这里,关于k8s nfs-client 添加挂载参数 —— 筑梦之路的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!