故障排除-------K8s挂载集群外NFS异常

故障排除-------K8s挂载集群外NFS异常

  • 1. 故障现象
  • 2. 原因梳理
    • 2.1 排查思路
    • 2.2 确认yaml内容
    • 2.3 创建k8s内的nfs测试
      • 2.3.1 创建nfs和svc
      • 2.3.2 测试创建pvc
      • 2.3.3 测试结果
    • 2.4 NFS服务端故障排除
      • 2.4.1 网络阻断排除
      • 2.4.2 排除服务状态问题
      • 2.4.3 排查NFS权限问题
  • 3. 故障排除

1. 故障现象

  1. nfs可以在任意节点挂载.
    在这里插入图片描述
  2. nfs csi正确安装
    在这里插入图片描述
  3. sc也能被正确创建,但pv未被创建,pvc无法被绑定
    在这里插入图片描述

2. 原因梳理

2.1 排查思路

问题可能发生的点无法以下2个
一. NFS的客户端(即k8s端)
k8s端可能出现的问题无非2部分

  1. csi配置问题
  2. yaml写的有问题
    排查方法:
  3. 由于csi我们重新部署过了,所以暂时忽略这个
  4. 确认storageclass和pvc的yaml内容是否正确.
  5. 在k8s集群中创建nfs看是否正常挂载pvc
    二. NFS服务提供端的问题
  6. 排查NFS服务端网络防火墙,selinux
  7. 排查NFS服务端的服务状态
  8. 排查NFS服务端权限

2.2 确认yaml内容

storageclass

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:name: nfs-csi
provisioner: nfs.csi.k8s.io
parameters:server: 192.168.31.6share: /nfs# csi.storage.k8s.io/provisioner-secret is only needed for providing mountOptions in DeleteVolume# csi.storage.k8s.io/provisioner-secret-name: "mount-options"# csi.storage.k8s.io/provisioner-secret-namespace: "default"
reclaimPolicy: Retain
volumeBindingMode: Immediate
mountOptions:- nfsvers=4.1

pvc

---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: nfs-pvc-defaultnamespace: default
spec:accessModes:- ReadWriteManyresources:requests:storage: 100MistorageClassName: nfs-csi

看上去yaml内容没什么问题

2.3 创建k8s内的nfs测试

2.3.1 创建nfs和svc

---
kind: Service
apiVersion: v1
metadata:name: nfs-servernamespace: defaultlabels:app: nfs-server
spec:type: ClusterIP  # use "LoadBalancer" to get a public ipselector:app: nfs-serverports:- name: tcp-2049port: 2049protocol: TCP- name: udp-111port: 111protocol: UDP
---
kind: Deployment
apiVersion: apps/v1
metadata:name: nfs-servernamespace: default
spec:replicas: 1selector:matchLabels:app: nfs-servertemplate:metadata:name: nfs-serverlabels:app: nfs-serverspec:nodeSelector:"kubernetes.io/os": linuxcontainers:- name: nfs-serverimage: registry.cn-hangzhou.aliyuncs.com/qiuqin/nfs-server-alpine:latestenv:- name: SHARED_DIRECTORYvalue: "/exports"volumeMounts:- mountPath: /exportsname: nfs-volsecurityContext:privileged: trueports:- name: tcp-2049containerPort: 2049protocol: TCP- name: udp-111containerPort: 111protocol: UDPvolumes:- name: nfs-volhostPath:path: /nfs-vol  # modify this to specify another path to store nfs share datatype: DirectoryOrCreate

2.3.2 测试创建pvc

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:name: nfs-csi2
provisioner: nfs.csi.k8s.io
parameters:server: nfs-server.default.svc.cluster.local.share: /# csi.storage.k8s.io/provisioner-secret is only needed for providing mountOptions in DeleteVolume# csi.storage.k8s.io/provisioner-secret-name: "mount-options"# csi.storage.k8s.io/provisioner-secret-namespace: "default"
reclaimPolicy: Retain
volumeBindingMode: Immediate
mountOptions:- nfsvers=4.1
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: nfs-pvc2-defaultnamespace: default
spec:accessModes:- ReadWriteManyresources:requests:storage: 110MistorageClassName: nfs-csi2

2.3.3 测试结果

测试下来可以看到sc,pv,pvc都正常被创建.
证明我们的yaml是没有问题的,那么问题可能出在NFS服务端
在这里插入图片描述

2.4 NFS服务端故障排除

2.4.1 网络阻断排除

排除了防火墙和selinux的可能性
在这里插入图片描述
在node节点上可以获取到nfs并挂载读取到nfs的内容
在这里插入图片描述

2.4.2 排除服务状态问题

刚才已经挂载上了,说明服务也是没有问题的
在这里插入图片描述

2.4.3 排查NFS权限问题

这里我们看到 nfs的权限是:

/nfs *(rw)

在这里插入图片描述
乍一看没什么问题,但我们来到node节点对nfs进行写操作时发现没有权限.
可我们明明(rw)了为啥没权限写入,可能问题就在这里了.
在这里插入图片描述
修改/etc/export,并重启nfs-utils服务

/nfs 192.168.31.0/24(rw,no_root_squash)

在这里插入图片描述
重新挂载并尝试写入数据到nfs
在这里插入图片描述
可以看到这里写入操作不再报错

3. 故障排除

尝试重建sc和pvc,可以看到pvc被正常绑定到了pv
在这里插入图片描述
回到nfs服务器也可以看到/nfs下对应的pvc目录被创建
在这里插入图片描述
我们再建个pod看下

---
apiVersion: v1
kind: Pod
metadata:name: nginx-nfs-examplenamespace: default
spec:containers:- image: harbor.panasonic.cn/test-nginx/nginx-web:v2.0.0name: nginxports:- containerPort: 80protocol: TCPvolumeMounts:- mountPath: /var/wwwname: pvc-nginxreadOnly: falsevolumes:- name: pvc-nginxpersistentVolumeClaim:claimName: nfs-pvc-default

可以看到目录被正常挂载到了pod的/var/www
在这里插入图片描述
在容器中创建一个文件,并在nfs服务器上可以正常读取到
在这里插入图片描述
至此K8s集群可以正常挂载集群外的NFS了
常见的NFS CSI除了本文中的csi-nfs之外还有nfs-subdir-external-provisioner
csi-nfs它的官网在:
https://github.com/kubernetes-csi/csi-driver-nfs
nfs-subdir-external-provisioner它的官网在:
https://github.com/kubernetes-sigs/nfs-subdir-external-provisioner

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/886939.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微服务即时通讯系统的实现(客户端)----(2)

目录 1. 将protobuf引入项目当中2. 前后端交互接口定义2.1 核心PB类2.2 HTTP接口定义2.3 websocket接口定义 3. 核心数据结构和PB之间的转换4. 设计数据中心DataCenter类5. 网络通信5.1 定义NetClient类5.2 引入HTTP5.3 引入websocket 6. 小结7. 搭建测试服务器7.1 创建项目7.2…

凸函数与深度学习调参

问题1:如何区分凸问题和凹问题? 问题2:深度学习如何区分调参?

使用可视化工具kafkatool连接docker的kafka集群,查看消息内容和offset

1、下载kafkatool 下载地址Offset Explorer,下载对应系统的offset explorer 下载完,傻瓜安装即可(建议放D盘),在开始菜单输入offset找到该应用打开 打开 2、连接kafka 点击File > add new connection Bootstrap…

关于Java使用ueditor上传图片的一些总结

1.如何配置ueditor让上传的图片到项目之外? 因为图片上传到web项目中,重新部署项目可能会丢失图片。 解决方法:下载ueditor.1.1.2.jar. 地址:ueditor-1.1.2项目源码及jar包.zip 链接: https://pan.baidu.com/s/1Bhumfw8OX16n0MTO9ur73g 提…

React可以做全栈开发吗

React可以做全栈开发吗? 答案是肯定的,而且还比较完美 React可以用于全栈开发,以下是具体的介绍: 前端部分 构建用户界面 React是一个用于构建用户界面的JavaScript库,它通过组件化的方式让开发者能够高效地创建交互式的UI。例…

【前端学习笔记】Javascript学习二(运算符、数组、函数)

一、运算符 运算符(operator)也被称为操作符,是用于实现赋值、比较和执行算数运算等功能的符号。 JavaScript中常用的运算符有: 算数运算符、递增和递减运算符、比较运算符、逻辑运算符、赋值运算符 算数运算符: 、-…

Redis五大基本类型——List列表命令详解(命令用法详解+思维导图详解)

目录 一、List列表类型介绍 二、常见命令 1、LPUSH 2、LPUSHX 3、RPUSH 4、RPUSHX 5、LRANGE 6、LPOP 7、RPOP 8、LREM 9、LSET 10、LINDEX 11、LINSERT 12、LLEN 13、阻塞版本命令 BLPOP BRPOP 三、命令小结 相关内容: Redis五大基本类型——Ha…

快速入门消息队列MQ、RabbitMQ

目录 一、MQ简介 1.同步调用 2.异步调用 3.技术选型 二、RabbitMQ 1.安装 2.控制台的使用说明 2.1交换机 2.2队列​编辑 2.3绑定关系 3.AMQP 3.1快速入门 3.2WorkQueues模型 3.3交换机 3.3.1 Fanout交换机 3.3.2 Direct交换机 3.3.3 Topic交换机 3.4 声明交换机…

Spark SQL大数据分析快速上手-完全分布模式安装

【图书介绍】《Spark SQL大数据分析快速上手》-CSDN博客 《Spark SQL大数据分析快速上手》【摘要 书评 试读】- 京东图书 大数据与数据分析_夏天又到了的博客-CSDN博客 Hadoop完全分布式环境搭建步骤-CSDN博客,前置环境安装参看此博文 完全分布模式也叫集群模式。将Spark目…

《现代网络技术》读书笔记:NFV功能

本文部分内容来源于《现代网络技术:SDN,NFV,QoE、物联网和云计算:SDN,NFV,QoE,IoT,andcloud》 NFV基础设施 NFV体系结构的核心是资源与功能集合,也为称为NFV基础设施(NFVI)。NFVI包括以下三个域: 计算域:提供商用的大…

MySQL数据库2——SQL语句

一.SQL基础 1.SQL通用语法 1.SQL语句可以单行或多行书写,以分号结尾。2.SOL语句可以使用空格/缩进来增强语句的可读性。3.MySQL数据库的SQL语句不区分大小写,关键字建议使用大写 注释: 单行注释:-- 注释内容或#注释内容(MySQL…

会员等级经验问题

问题描述 会员从一级完成任务升级到二级以后,一级显示还差经验,这里差的其实是二级到三级的经验,如下图所示 修复方法 1、前端需要修改: 路径:/pages/users/user_vip/index.vue 方便复制: v-if"i…

【Apache Paimon】-- 6 -- 清理过期数据

目录 1、简要介绍 2、操作方式和步骤 2.1、调整快照文件过期时间 2.2、设置分区过期时间 2.2.1、举例1 2.2.2、举例2 2.3、清理废弃文件 3、参考 1、简要介绍 清理 paimon (表)过期数据可以释放存储空间,优化资源利用并提升系统运行效…

Spring Boot整合Kafka,实现单条消费和批量消费,示例教程

如何安装Kafka&#xff0c;可以参考docker搭载Kafka集群&#xff0c;一个文件搞定&#xff0c;超简单&#xff0c;亲试可行-CSDN博客 1、在pom.xml中加入依赖 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-sta…

django基于Python的农产品销售系统的设计与实现

摘 要 随着现代人们的快速发展&#xff0c;农产品销售系统已成为农产品的需求。该平台采用Python技术和django搭建系统框架&#xff0c;后台使用MySQL数据库进行信息管理&#xff1b;通过个人中心、用户管理、商家管理、产品类型管理、农产品管理、系统管理、订单管理等功能&a…

项目-摄像

树莓派摄像头使用方法 Camera教程 https://www.raspi.cc/index.php?cread&id53&page1 nanopc-t4 ​https://www.raspi.cc/index.php?cread&id53&page1 摄像头型号 Raspberry Pi Camera Rev 1.3 检测故障 dmesg | grep -i mipi piNanoPC-T4:~$ dmesg | …

Facebook商城号封号的原因是什么?

Facebook商城作为一个重要的销售平台&#xff0c;不仅为商家提供了巨大的市场机会&#xff0c;也带来了一系列需要警惕的风险&#xff0c;其中包括账号被封的风险。本文将从环境异常、频繁操作和违规行为三个主要方面深入探讨&#xff0c;解析导致Facebook商城账号被封禁的具体…

聊一聊Elasticsearch的索引分片的恢复机制

1、什么是索引分片的恢复&#xff1f; 所谓索引分片的恢复指的是在某些条件下&#xff0c;索引分片丢失&#xff0c;ES会把某索引的分片复制一份来得到该分片副本的过程。 2、触发分片恢复的场景有哪些&#xff1f; 分片的分配 当集群中节点的数量发生变化&#xff0c;或者配…

字符串的基本操作(C语言版)

一、实验内容&#xff1a; 采用顺序结构存储串&#xff0c;编写一个函数substring(strl,str2)&#xff0c;用于判定str2是否为strl的子串&#xff1b;编写一个函数&#xff0c;实现在两个已知字符串中找出所有非空最长公共子串的长度和最长公共子串的个数&#xff1b; ①字符…

一些任务调度的概念杂谈

任务调度 1.什么是调度任务 依赖&#xff1a;依赖管理是整个DAG调度的核心。调度依赖包括依赖策略和依赖区间。 依赖分为任务依赖和作业依赖&#xff0c;任务依赖是DAG任务本身的依赖关系&#xff0c;作业依赖是根据任务依赖每天的作业产生的。两者在数据存储模型上有所不同…