更新时间:2024-07-02 GMT+08:00
工作负载异常:存储卷无法挂载或挂载超时
排查思路
以下排查思路根据原因的出现概率进行排序,建议您从高频率原因往低频率原因排查,从而帮助您快速找到问题的原因。
如果解决完某个可能原因仍未解决问题,请继续排查其他可能原因。
图1 存储卷无法挂载或挂载超时排查思路
排查项一:EVS存储卷是否跨AZ挂载
问题描述:
客户在有状态工作负载上挂载EVS存储卷,但无法挂载卷并超时。
问题定位:
经查询确认,该节点在可用区1,而要挂载的磁盘在可用区2,导致无法挂载而超时。
解决方案:
在同一可用区内创建磁盘再挂载后即可正常。
排查项二:存储中是否同时存在多条权限相关的配置
如果您挂载的存储中内容太多,同时又配置了以下几条配置,最终会由于逐个修改文件权限,而导致挂载时间过长。
问题定位:
- Securitycontext字段中是否包含runAsuser/fsGroup。securityContext是kubernetes中的字段,即安全上下文,它用于定义Pod或Container的权限和访问控制设置。
- 启动命令中是否包含ls、chmod、chown等查询或修改文件权限的操作。
解决建议:
请根据您的业务需求,判断是否需要修改。
排查项三:带云硬盘卷的Deployment的副本数大于1
问题描述:
创建Pod失败,并报“添加存储失败”的事件,事件信息如下。
Multi-Attach error for volume "pvc-62a7a7d9-9dc8-42a2-8366-0f5ef9db5b60" Volume is already used by pod(s) testttt-7b774658cb-lc98h
问题定位:
查看Deployment的副本数是否大于1。
Deployment中使用EVS存储卷时,副本数只能为1。若用户在后台指定Deployment的实例数为2以上,此时CCE并不会限制Deployment的创建。但若这些实例Pod被调度到不同的节点,则会有部分Pod因为其要使用的EVS无法被挂载到节点,导致Pod无法启动成功。
解决方案:
使用EVS的Deployment的副本数指定为1,或使用其他类型存储卷。
排查项四:EVS磁盘文件系统损坏
问题描述:
创建Pod失败,出现类似信息,磁盘文件系统损坏。
MountVolume.MountDevice failed for volume "pvc-08178474-c58c-4820-a828-14437d46ba6f" : rpc error: code = Internal desc = [09060def-afd0-11ec-9664-fa163eef47d0] /dev/sda has file system, but it is detected to be damaged
解决方案:
在EVS中对磁盘进行备份,然后执行如下命令修复文件系统。
fsck -y {盘符}