前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >解决pvc无法mount的问题

解决pvc无法mount的问题

作者头像
jeremyxu
发布于 2019-07-23 02:54:55
发布于 2019-07-23 02:54:55
9.6K00
代码可运行
举报
运行总次数:0
代码可运行

这周遇到了两个因pvc无法attach导致pod一直没法正常启动的问题,这里记录一下解决的过程。

问题一

问题描述

一个deployment,在其spec中指定使用了某一个pvc,在很偶然的情况下,出现这一个deployment对应的pod被调度到了另外一个node节点,但pod在另外的node由于无法正常attach pv volume一直没法正常运行。

问题解决

首先检查一下有问题的pod:

代码语言:javascript
代码运行次数:0
运行
复制
$ kubectl describe pod xxxx

Warning  FailedAttachVolume     43m                 attachdetach-controller  Multi-Attach error for volume "pvc-0a5eb91b-3720-11e8-8d2b-000c29f8a512" Volume is already exclusively attached to one node and can't be attached to another

可以看到attachdetach-controller报告说这个volume已经被attach到一个node节点上了,因此不能被attach到其它的node节点。

然后检查一下这个volume被哪个node节点attach住了:

代码语言:javascript
代码运行次数:0
运行
复制
$ kubectl describe pv pvc-0a5eb91b-3720-11e8-8d2b-000c29f8a512
Source:
    Type:          RBD (a Rados Block Device mount on the host that shares a pod's lifetime)
    ...
    RBDImage:      kubernetes-dynamic-pvc-0a5eb91b-3720-11e8-8d2b-000c29f8a512
    ...
    RBDPool:       k8s
    ...

这里可以看到这个volume对应的rbd镜像是kubernetes-dynamic-pvc-0a5eb91b-3720-11e8-8d2b-000c29f8a512,rbd池是k8s

接下来可以用ceph的相关命令查一下该rbd镜像现在被哪个node节点使用了:

代码语言:javascript
代码运行次数:0
运行
复制
$ rbd info k8s/kubernetes-dynamic-pvc-0a5eb91b-3720-11e8-8d2b-000c29f8a512
rbd image 'kubernetes-dynamic-pvc-0a5eb91b-3720-11e8-8d2b-000c29f8a512':
	...
	block_name_prefix: rbd_data.115f79643c9869
	...

# 这里将上面的block_name_prefix属性值拿出来,将rbd_data修改为rbd_header即可
$ rados listwatchers -p k8s rbd_header.115f79643c9869
watcher=10.125.53.47:0/3423687629 client.1138525 cookie=18446462598732840965

上述命令就看到了这个rbd镜像是被10.125.53.47这个node节点使用了。

接下来登录到10.125.53.47这个node节点,消除其对rbd镜像的使用。

代码语言:javascript
代码运行次数:0
运行
复制
# 这里的路径为/dev/rbd/${rbdPool}/${rbdImage}
$ ls -l /dev/rbd/k8s/kubernetes-dynamic-pvc-0a5eb91b-3720-11e8-8d2b-000c29f8a512
lrwxrwxrwx 1 root root 10 72 11:30 /dev/rbd/k8s/kubernetes-dynamic-pvc-0a5eb91b-3720-11e8-8d2b-000c29f8a512 -> ../../rbd4

# 直接使用rbd unmap命令将rbd镜像unmap
$ rbd unmap /dev/rbd4

到此问题解决。

根源分析

首先回顾一下k8s里volume的挂载过程:

  • provision,卷分配成功,这个操作由PVController完成
  • attach,卷挂载在对应worker node,这个操作为AttachDetachController完成
  • mount,卷挂载为文件系统并且映射给对应Pod,这个操作为VolumeManager完成

k8s里volume的卸载过程跟上述场景完全相反:

  • umount,卷已经和对应worker node解除映射,且已经从文件系统umount
  • detach,卷已经从worker node卸载
  • recycle,卷被回收

在我这个场景里,pod的迁移会导致原来的pod从其node节点删除,这时AttachDetachController没有成为将rbd从原来的node节点detach。后面多次尝试却无法重现问题,猜测是当时由于某些原因AttachDetachController执行detach操作失败了,可能是强制删除pod导致的,所以删除pod时还是要慎用—force —grace-period=0选项。

问题二

问题描述

还是上述那个场景,这次对deployment作了一次滚动更新,这时k8s会新创建一个pod,尝试挂载volume,但这次原来那个node节点上pod仍处于Running状态,因而其使用volume是正常的。

问题解决

这次很容易解决,直接删除旧的pod就可以了:

代码语言:javascript
代码运行次数:0
运行
复制
$ kubectl delete pod xxxx

根源分析

很明显,滚动更新时产生多了一个pod,为什么会这样了,我们看一下deployment里的滚动更新策略:

代码语言:javascript
代码运行次数:0
运行
复制
$ kubectl get deployment xxxx -o yaml
...
deploySpec:
  replicas: 1
  ...
  strategy:
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 1
    type: RollingUpdate
  template:
    volumes:
        - name: data
          persistentVolumeClaim:
            claimName: data-vol
...

$ kubectl get pvc data-vol -o yaml
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: data-vol
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 8Gi
  storageClassName: rbd

可以看到这里默认配置的滚动更新参数为maxSurge=1,也即允许比desired的pod数目多1个。而pvc又是ReadWriteOnce的访问模式,因此滚动更新时会产生多一个pod,而ReadWriteOnce的访问模式又不允许两个pod挂载同一个volume。

因此这里有几个的解决方案:

  1. 使用ReadWriteMany访问模式的pvc
  2. maxSurge设置为0,避免在更新过程中产生多余的pod
  3. 将deployment改为statefulset,statefulset对应的pod与pvc是一一绑定的,在更新过程中不会产生多余的pod

总结

kuberentes里使用存储自有其逻辑,按照它的逻辑去分析问题,很多问题都可以迎刃而解。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-07-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
光特通信 | 光模块为什么有那么多的波长?该如何选择?
光纤世界里,波长选择如同调频收音,选对频道才能清晰接收信号。为什么有的光模块传输距离仅 500 米,有的却能跨越上百公里?答案藏在那束光的颜色里 —— 准确地说,是光的波长。
深圳光特通信豆子
2025/06/07
1190
光特通信 | 光模块为什么有那么多的波长?该如何选择?
BiDi单纤光模块和双纤光模块有什么区别?
BIDI单纤双向光模块通过使用WDM(波分复用)技术,在一根光纤上同时传输收发两个方向的光信号。其核心在于收发方向采用不同的中心波长:例如,一个方向使用1310nm波长发射光信号,另一个方向使用1550nm波长接收光信号(或相反)。光模块内部利用滤波器进行滤波,确保发射和接收过程互不干扰。这与传统双纤双向光模块不同,后者需两个端口(TX为发射端口、RX为接收端口),而BIDI模块仅需一个端口即可完成收发功能。因此,BIDI模块必须成对使用,以实现双向通信。
深圳光特通信豆子
2025/06/12
890
BiDi单纤光模块和双纤光模块有什么区别?
七种光纤类型以及常用G652,G657光纤特性
光纤按照不同的特点可有各种不同的分类方式, 如按光的模式可分为单模光纤、多模光纤。按折射率分:跳变式光纤和渐变式光纤。 可点击此查看文章 一秒知道光纤、光缆、跳线、尾纤、连接器类型。其中根据ITU标准,将光纤分为七种:G651,G652,G653,G654,G655,G656,G657,其中常用的是G652、G657。
亿源通科技HYC
2021/05/21
12.7K0
七种光纤类型以及常用G652,G657光纤特性
一分钟了解光纤、单模光纤、多模光纤
光纤纤芯和包层是由不同折射率的玻璃组成,中心为高折射率玻璃纤芯(掺锗二氧化硅),中间为低折射率硅玻璃包层(纯二氧化硅)。光以一特定的入射角度射入光纤,在光纤和包层间发生全发射(由于包层的折射率稍低于纤芯),从而可以在光纤中传播。
亿源通科技HYC
2019/10/14
2.7K0
一分钟了解光纤、单模光纤、多模光纤
精品文章!精讲光模块的方方面面,收藏!
光纤通信的主要优点:大容量,损耗低,中继距离长,保密性强,体积小,重量轻,光纤的原材料取之不竭。
网络技术联盟站
2021/07/22
2.3K0
关于光模块,看这一篇就够啦!
随着光通信的高速发展,现在我们工作和生活中很多场景都已经实现了“光进铜退”。也就是说,以同轴电缆、网线为代表的金属介质通信,逐渐被光纤介质所取代。
鲜枣课堂
2020/01/14
4.4K0
关于光模块,看这一篇就够啦!
小身材有大作用——光模块基础知识(一)
光模块体积虽小,但是在数据中心里的作用却不能被忽视,如果没有它,无论什么数据中心都将无法运行。尤其是在数据中心对带宽要求越来越高的今天,光模块在一定程度上甚至已经制约了数据中心的发展,可以用“小身材有大作用”这句话来形容光模块所发挥的作用,这样讲一点也不夸张。光模块是什么东东,和武汉海翎光电的小编一起了解一下吧!
利又德智能感知
2022/08/03
1.8K0
小身材有大作用——光模块基础知识(一)
芯片测试工程师:带您了解光模块芯片与光模块芯片测试座解析
光模块芯片是光通信系统中的核心部件,扮演着至关重要的角色。它主要用于将电信号和光信号进行转换,实现数据的高速传输。光模块芯片广泛应用于数据中心、通信网络、光纤传输等领域。光模块芯片的核心功能包括发射器和接收器,其中发射器将电信号转换为光信号,而接收器则将光信号转换回电信号。
ICsocketgirl
2024/09/09
5340
芯片测试工程师:带您了解光模块芯片与光模块芯片测试座解析
光纤光缆基础知识二十问
光纤纤芯和包层是由不同折射率的玻璃组成,中心为高折射率玻璃纤芯(掺锗二氧化硅),中间为低折射率硅玻璃包层(纯二氧化硅)。光以一特定的入射角度射入光纤,在光纤和包层间发生全发射(由于包层的折射率稍低于纤芯),从而可以在光纤中传播。涂覆层的主要作用是保护光纤不受外界的损伤,同时又增加光纤的柔韧性。正如前面所述,纤芯和包层都是玻璃材质,不能弯曲易碎,涂覆层的使用则起到保护并延长光纤寿命的作用。
亿源通科技HYC
2021/05/28
1.6K0
光纤光缆基础知识二十问
【彩色光模块】CWDM光模块和DWDM光模块知识百科
彩色光模块(也被称为波分光模块)是光复用传输链路中的的光电转换器,其采用波分复用技术,将不同波长的光信号复合在一条光纤上进行传输,具备成本低等优点。
易天光通信
2019/03/06
1.4K0
【彩色光模块】CWDM光模块和DWDM光模块知识百科
单模和多模光纤可以混用吗_多模光纤和单模光纤能混用吗
我们知道光纤和光模块都有单模和多模两种类型,那么我们可能在使用中会产生疑问,单模/多模光纤和单模/多模光模块如何配套使用?它们可以混用吗?下面飞速光纤将通过问答的方式来为大家解答这个疑惑。   问:单模光纤和多模光纤有什么区别?  答:单模光纤采用固体激光器做光源;多模光纤则采用发光二极管做光源;单模光纤传输频带宽、传输距离长,但因其需要激光源,成本较高;多模光纤传输速度低、距离短,但其成本比较低;单模光纤芯径和色散小,仅允许一种模式传输;多模光纤芯径和色散大,允许上百种模式传输。  问:单模光模块和多模光模块有什么区别?  答:多模光模块的工作波长为850nm;单模光模块的工作波长为1310nm、1550nm;单模光模块中使用的器件是多模光模块的两倍,所以单模光模块的总体成本要远远高于多模光模块;单模光模块的传输距离可达150至200km;多模光模块的传输距离可达5km。  问:单模/多模光纤和单模/多模光模块应用在哪里?  答:单模光纤能够使光纤直接发射到中心,一般用于长距离的数据传输;多模光纤中光信号通过多个通路传播,因此多模光纤常用于短距离的数据传输中。  单模光模块常用于远距离和传输速率相对较高的城域网;多模光模块则用于短距离传输中。  问:单模/多模光纤可以和单模/多模光模块可以混用吗?  答:单模/多模光纤可以和单模/多模光模块混用结果如下表所示,我们可以看到它们是不能混用的,必须要将光纤和光模块匹配好才可以正常使用。  问:多模光纤能和单模光模块一起使用吗?如果不能,那么原因是什么?  答:不能。多模光纤最好和多模光模块一起使用,因为多模和单模的转换器必须是相应的波长和光收发功能才能实现光电转换,所以多模光纤能和单模光模块一起使用无法保障使用效果。 
全栈程序员站长
2022/11/09
2.1K0
单模和多模光纤可以混用吗_多模光纤和单模光纤能混用吗
教程|快速确认光模块类型和具体含义
光模块的作用就是光电转换,发送端把电信号转换成光信号,通过光纤传送后,接收端再把光信号转换成电信号。
吾爱运维
2022/09/29
7.5K0
教程|快速确认光模块类型和具体含义
WDM波分复用中什么是C波段、L波段?
WDM波分复用是光纤通信中利用一根光纤同时传输多个不同波长的光载波的传输技术。光的波长不同,在光纤中的传输损耗就不同。为了尽可能减少损耗,保证传输效果,需要找寻到最为适合传输的波长。经过长时间摸索和测试,1260nm~1625nm波长范围的光,由色散导致的信号失真最小,损耗最低,最适合在光纤中传输。
亿源通科技HYC
2020/06/29
2.7K0
WDM波分复用中什么是C波段、L波段?
光模块波长与传输距离
光模块波长和传输距离是光模块的重要参数,不同波长的光模块传输距离也不同,那么常用的波长有哪些,波长和传输距离如何搭配?今天我们就来细说一下。
光特通信
2025/05/06
2660
光模块波长与传输距离
应用于高速收发模块的并行光学&WDM波分光学技术
光模块的传输距离分为短距、中距、长距。通常短距离传输是指2km以下的传输距离,中距为10-20km。≥30km的则为长距离传输。根据不同的传输距离,光模块类型分为SR(100m)、DR(500m)、FR(2km)、LR(10 km)、ER(40 km)、ZR(80 km)几种。
亿源通科技HYC
2022/12/19
1.6K0
应用于高速收发模块的并行光学&WDM波分光学技术
光纤接口有哪几种,从四个角度介绍
众所周知,光纤接口类型多样,但是他们到底有哪几种,有什么特点和适用什么场景呢?阿祥今天按连接器(LC/SC/ST等)、传输模式(单模/多模)、应用场景(电信/数据中心/家庭)等分类介绍,帮助粉丝们了解如何选型合适的光纤。
ICT系统集成阿祥
2025/04/04
6150
光纤接口有哪几种,从四个角度介绍
OFC 2025前瞻:微软&南安普顿大学实现创纪录的<0.1 dB/km损耗的空芯光纤
自1970年以来,尽管光通信领域不断进步,但二氧化硅玻璃光纤的最小衰减在四十多年里几乎没有变化。从1985年的0.154dB/km到2024年的0.1397dB/km(由住友报道,OFC 2025会做邀请报告),看似微小的变化却难以突破约0.14dB/km的衰减极限。
光芯
2025/04/08
2641
OFC 2025前瞻:微软&南安普顿大学实现创纪录的<0.1 dB/km损耗的空芯光纤
光纤、光模块、光纤交换机、光模块组网设计与案例
光纤组网已是当今智能化弱电行业里一种常见的组网方式,组建远距离无线、监控网络时,往往需要使用光纤进行连接通信,使用光纤收发器是经济适用型做法,尤其是在室外的使用。其实光纤收发器不仅可以成对使用,还可以配合光纤交换机使用。今天就和海翎光电的小编咱们一起聊聊“光纤、光模块、光纤交换机、光模块组网知识”。
利又德智能感知
2022/11/08
1.7K0
光纤、光模块、光纤交换机、光模块组网设计与案例
全面了解WDM波分复用
在同一根光纤中同时让两个或两个以上的光波长信号通过不同光信道各自传输信息的技术称之为波分复用技术(WDM)。WDM (Wavelength Division Multiplexing) 是将两种或多种不同波长的光载波信号(携带着各种信息),在发送端经过合波器(Multiplexer)汇合在一起,并耦合到同一根光纤中进行传输,而在接收端经分波器(Demultiplexer)将各种波长的光信号分离出来,然后由光接收机进一步处理恢复为原信号。
亿源通科技HYC
2021/04/21
2.5K0
全面了解WDM波分复用
什么是SFP接口?如何正确选择SFP光模块:从技术参数到应用场景的完整指南
随着网络技术的快速发展,光模块作为数据中心、企业网络和电信系统的核心组件之一,其选型的准确性直接决定了网络性能和部署成本。SFP(Small Form-factor Pluggable)模块因其小型化、热插拔和高灵活性的特性,已广泛应用于各类网络设备。然而,面对市场上成百上千种型号的SFP模块,工程师和采购人员往往面临诸多疑问:
voohu
2025/05/29
2840
什么是SFP接口?如何正确选择SFP光模块:从技术参数到应用场景的完整指南
推荐阅读
相关推荐
光特通信 | 光模块为什么有那么多的波长?该如何选择?
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档