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的问题就处理好了,感谢大家的支持!!!!

相关推荐
csdn_aspnet12 小时前
GitOps宣言:Kubernetes配置的版本化革命
云原生·容器·kubernetes·gitops
xmlhcxr14 小时前
Docker容器常用操作与私有仓库部署实验笔记
docker·云原生·eureka
白胡子15 小时前
Kubernetes NFS 接入方案
云原生
河码匠18 小时前
Kubernetes YAML 详解之网络服务二( Ingress、IngressClasses)
云原生·容器·kubernetes
blackorbird19 小时前
一个来自法国的基于K8s的规模化扫描集群
云原生·容器·kubernetes
掘根19 小时前
【微服务即时通讯】消息存储子服务2
微服务·云原生·架构
风向决定发型丶19 小时前
浅谈K8S的Label和Annotation
云原生·容器·kubernetes
2401_8401922719 小时前
监控的作用
分布式·kubernetes
培小新19 小时前
【Docker安全优化】
云原生·eureka