k8s集群新增计算节点使用华为iscsi存储创建的pvc存储挂载报错:FailedMount

背景:

因公司业务需求的增长,导致kubernetes集群测试环境的计算节点资源不够使用了,这时候就申请了几台服务器加入到kubernetes集群中,因为维护的kubernetes集群的对接华为了iscsi存储,通过storageclass组件来创建pvc存储。但是新加入的计算节点在使用华为iscsi存储创建的pvc存储挂载pod容器存在问题,pod容器一致无法成功启动。

问题描述:

这个在分析的过程中进行了重现操作。

创建一个deploy控制器服务,然后将pod容器服务选择nodeName参数指定到有问题的新计算节点上去,然后查看pod运行事件内容如下:

然后pod容器会一直卡在FailedMount报错事件,

问题分析:

发现是华为iscsi存储的问题,因为华为iscsi存储是通过csi插件对接到kubernetes集群的,所以在计算节点上部署multipath服务和iscsi服务,
首先检查multipath服务和iscsi服务运行情况:

iscsid服务运行情况:

bash 复制代码
[root@stcs-slave-13 ~]# systemctl status iscsid
● iscsid.service - Open-iSCSI
   Loaded: loaded (/usr/lib/systemd/system/iscsid.service; enabled; vendor preset: disabled)
   Active: active (running) since 二 2024-06-18 10:13:10 CST; 57min ago
     Docs: man:iscsid(8)
           man:iscsiuio(8)
           man:iscsiadm(8)
 Main PID: 1812 (iscsid)
   Status: "Ready to process requests"
    Tasks: 1
   Memory: 5.9M
   CGroup: /system.slice/iscsid.service
           └─1812 /sbin/iscsid -f

multipath服务运行情况:

bash 复制代码
[root@stcs-slave-13 ~]# systemctl status multipathd
● multipathd.service - Device-Mapper Multipath Device Controller
   Loaded: loaded (/usr/lib/systemd/system/multipathd.service; enabled; vendor preset: enabled)
   Active: active (running) since 二 2024-06-18 10:13:09 CST; 57min ago
 Main PID: 1381 (multipathd)
    Tasks: 8
   Memory: 3.5M
   CGroup: /system.slice/multipathd.service
           └─1381 /sbin/multipathd

检查发现iscsi服务和multipath服务都是运行正常的,既然服务都是正常的,就是检查一下multipath服务的multipath.conf配置文件的内容是否正确。

bash 复制代码
[root@stcs-slave-13 ~]# cat /etc/multipath.conf 
defaults {
    user_friendly_names yes
    find_multipaths     no
}

检查后发现也是属于正常的。

注:上面的配置是标准的配置内容。
既然上面都没有问题,那就需要看看csi的node服务的日志内容了,华为iscsi存储通过csi插件对接kubernetes集群的,在每一个计算节点上有一个csi-node守护进程服务的,然后同时会产生一个日志文件,记录计算节点与iscsi存储服务接口调用记录的。
日志文件存在如下位置:

bash 复制代码
-rw-r--r-- 1 root root 9006437 6月  18 11:17 huawei-csi-node
[root@stcs-slave-13 huawei]# pwd
/var/log/huawei

在日志查看到了报错信息

cpp 复制代码
2024-06-17 09:27:08.667731 14090 [INFO]: [requestID:3953269783] Request method: GET, Url: https://172.16.200.27:8088/deviceManager/rest/iscsi_initiator?filter=ID::iqn.1994-05.com.redhat\:9e6042a265ba, body: map[]
2024-06-17 09:27:08.713001 14090 [INFO]: [requestID:3953269783] Response method: GET, Url: https://172.16.200.27:8088/deviceManager/rest/iscsi_initiator?filter=ID::iqn.1994-05.com.redhat\:9e6042a265ba, body: {"data":[{"FAILOVERMODE":"255","HEALTHSTATUS":"1","ID":"iqn.1994-05.com.redhat:9e6042a265ba","ISFREE":"false","MULTIPATHTYPE":"0","OPERATIONSYSTEM":"255","PARENTID":"62","PARENTNAME":"k8s_stcs-slave-12","PARENTTYPE":21,"PATHTYPE":"255","RUNNINGSTATUS":"27","SPECIALMODETYPE":"255","TYPE":222,"USECHAP":"false"}],"error":{"code":0,"description":"0"}}

2024-06-17 09:27:08.713112 14090 [ERROR]: [requestID:3953269783] ISCSI initiator iqn.1994-05.com.redhat:9e6042a265ba is already associated to another host 62
2024-06-17 09:27:08.713132 14090 [ERROR]: [requestID:3953269783] Attach iscsi connection error: ISCSI initiator iqn.1994-05.com.redhat:9e6042a265ba is already associated to another host 62
2024-06-17 09:27:08.713173 14090 [INFO]: [requestID:3953269783] Request method: DELETE, Url: https://172.16.200.27:8088/deviceManager/rest/sessions, body: map[]
2024-06-17 09:27:09.418136 14090 [INFO]: [requestID:3953269783] Response method: DELETE, Url: https://172.16.200.27:8088/deviceManager/rest/sessions, body: {"data":{},"error":{"code":0,"description":"0"}}

2024-06-17 09:27:09.418214 14090 [INFO]: [requestID:3953269783] Logout https://172.16.200.27:8088/deviceManager/rest success
2024-06-17 09:27:09.418232 14090 [ERROR]: [requestID:3953269783] Stage volume pvc-3f445b3f-2c5d-4753-bb56-0d1 error: ISCSI initiator iqn.1994-05.com.redhat:9e6042a265ba is already associated to another host 62

核心的报错内容如下的:

cpp 复制代码
Stage volume pvc-3f445b3f-2c5d-4753-bb56-0d1 error: ISCSI initiator iqn.1994-05.com.redhat:9e6042a265ba is already associated to another host 62

根据报错的信息,好想是计算节点的iscsi初始化启动器配置内容有问题,好想是跟其他的节点重复了。

注:这次新增计算节点是新增了两台服务器的,这两台服务器是克隆的。

检查iscsi的启动器配置文件的内容:

cpp 复制代码
[root@stcs-slave-12 network-scripts]# cat /etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.1994-05.com.redhat:9e6042a265ba
 
cpp 复制代码
[root@stcs-slave-13 network-scripts]# cat /etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.1994-05.com.redhat:9e6042a265ba
 

通过上面发现新增的两个节点的iscsi启动器的配置是一样的。

同时也联系了华为存储工程师分析该问题,反馈也是该iscsi的启动器内容一致导致的。

问题处理:

上面经过分析已经是发现了问题所在,既然两个服务器的iscsi的启动器配置内容一致,那么只要将启动一个节点的iscsi的启动器配置内容修改为不一致就可以了。

这里修改为报错节点的,修改后的内容如下:

cpp 复制代码
[root@stcs-slave-13 network-scripts]# vim /etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.1994-05.com.redhat:9a6042a265ba

然后重启一下iscsi服务。

bash 复制代码
[root@stcs-slave-13 huawei]# systemctl restart iscsid

验证:

这时候,再将之前重现问题的deploy控制器的pod容器重新删除调度一下就可以了。通过操作发现可以正常调度,并且挂载了华为iscsi存储了。

到这里, k8s集群新增计算节点使用华为iscsi存储创建的pvc存储挂载报错:FailedMount的问题就处理好了,感谢大家的支持!!!!

相关推荐
小猿姐1 天前
MySQL Top 10 热点问题 AI 运维实战:从内核诊断到云原生运维
mysql·云原生·aiops
阿里云云原生2 天前
深入内核:拆解 OpenTelemetry eBPF 探针如何优雅地“透视”多语言微服务?
云原生
java_cj2 天前
深入kube-apiserver认证机制:从Bearer Token到mTLS的完整认证链解析
linux·运维·服务器·云原生·容器·kubernetes
qq_452396232 天前
第十三篇:《K8s 安全基础:RBAC、ServiceAccount、Pod Security》
java·安全·kubernetes
睡不醒男孩0308232 天前
云原生运维实战:高并发架构下的云原生可观测性、韧性降级与自动化干预体系
数据库·kubernetes·高并发·prometheus·devops·sre·缓存调优
qq_452396232 天前
第十四篇:《K8s 网络模型与 CNI 插件(Calico、Flannel、Cilium)》
网络·kubernetes·php
Hadoop_Liang2 天前
Kubernetes 应用 HTTPS 安全访问配置实践
https·kubernetes
互联网推荐官3 天前
上海软件定制开发公司推荐:从PaaS工程化路径看D-coding的技术取舍
云原生·云计算·paas·软件开发·开发经验·上海
sbjdhjd3 天前
从零搭建企业级 CI/CD(下):Jenkins+GitLab+Harbor 全链路实战指南
git·servlet·ci/cd·云原生·云计算·gitlab·jenkins
java_cj3 天前
从0到1启动kube-apiserver:深入源码解析API Server启动全流程
docker·容器·kubernetes