前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >TKE集群,一次磁盘挂载问题处理

TKE集群,一次磁盘挂载问题处理

原创
作者头像
白鹏飞
发布2020-10-26 00:39:29
1.3K0
发布2020-10-26 00:39:29
举报
文章被收录于专栏:拥抱云原生拥抱云原生

1. 导语

随着云原生概念的普及,越来越多的企业,已经将业务迁移到容器平台上,以充分利用容器、Kubernetes、服务网格来完成基础架构的转型升级。

然而,在业务上云过程中,不可避免的遇到使用上的问题。这里,我们以腾讯云容器服务TKE为例,分析一次PVC卷挂载异常的处理过程。

2. 背景介绍

Kubernetes 官方层面,支持多种存储形式的挂载,常见的类型有:

  1. hostPath:挂载host 机器上的一个文件,或者目录到业务pod内部。对大部分业务pod 来说,不需要此种配置。
  2. emptyDir:在pod运行前,预先创建。其生命周期,伴随Pod;如果Pod被删除,内部数据将会永远消失,但是Pod重启不会清除对应数据。一个使用场景,即在业务Crash后,作为数据还原点。
  3. secret:常用来存储一些敏感数据,如密码——需要事先创建,然后挂载到Pod内部。
  4. nfs:支持网络文件系统挂载,可以被多个Pod共同挂载,从而实现数据文件在Pod间的共享。
  5. csi:容器存储接口,可以向容器编排系统暴露任意类型的存储,进而挂载到业务Pod内,其使用形式目前多基于PVC。
  6. downwardApi:可以环境变量或者volume file 形式,暴露pod或者容器自身的信息,到业务容器内部。
  7. pvc:可以用来挂载一个持久化存储卷PersistentVolume,使用过程中,可以屏蔽底层的存储类型,如磁盘、文件存储等。
  8. configMap:将配置数据放在配置集中,后续可以作为volume 挂载到Pod内,也可以作为容器内部的环境变量——需要事先创建,使用较为广泛。

腾讯云TKE,针对以上大部分类型,已有对应的支持。这里,我们来看一个PVC挂载使用报错的问题。

业务异常:

查看事件报错:kubectl get ev -n ***, 发现如下异常:

磁盘挂载报错
磁盘挂载报错

比较明显的,可以看出业务Pod 运行前,磁盘挂载操作失败。对应的磁盘,依然占用未被释放。

3. 场景分析

(1)查看Pod 挂载的 pvc:

代码语言:javascript
复制
kubectl describe pod *** -n *** |grep -3 -i persis

(2)查看PVC对应PV:

代码语言:javascript
复制
kubectl get pvc vol-****-c0woyfk2ycw0-22 -n **** 

业务Pod PVC 绑定的volume 即:pvc-65273f8d-64f8-11ea-b2dc-525400e94be5

(3)查看PV对应的磁盘信息:

代码语言:txt
复制
kubectl get pv pvc-65273f8d-64f8-11ea-b2dc-525400e94be5  -o yaml |grep -3 -i disk 

(4)查看磁盘挂载的CVM信息:

在云服务器控制台,云硬盘模块,键入对应的磁盘ID,即可过滤出特定的磁盘信息。然后,点击进入,查询该磁盘所属的CVM实例信息。

(5)登陆CVM,排查异常,检查磁盘是否依然被占用;

登陆CVM过程,此处忽略,首先查看磁盘对应信息:

代码语言:javascript
复制
查看磁盘设备信息
#ls /dev/disk/by-id

然后,使用lsof 命令排查对应磁盘是否被进程占用:

代码语言:javascript
复制
#以 vdb 磁盘为例
#lsof /dev/vdb 

如果是,kill 释放;反之,尝试手动umount在CVM内部卸载,随后在CVM控制台卸载对应磁盘。

4. 解决处理

参考相关资料,磁盘挂载的过程,有遵循以下流程,即:

Provision -> Attach -> Mount; Unmount -> Detach -> Delete

  • Provision: 创建磁盘
  • Attach:绑定磁盘到CVM机器
  • Mount:挂载磁盘到特定路径下
  • UnMount:卸载磁盘设备
  • Detach:解除磁盘跟CVM的绑定
  • Delete:删除磁盘

所以,参考磁盘挂载流程及上述场景分析,在特定CVM上排查处理即可:

(1)lsof 排查未未释放进程,手动kill

(2)将已经mount 的磁盘,进行unmount , 然后在CVM 控制台上卸载对应磁盘。

至此:挂盘问题修复-》新Pod挂载PVC成功-》业务Pod运行起来。

5. 参考资料

https://kubernetes.io/docs/concepts/storage/volumes

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 导语
  • 2. 背景介绍
    • 业务异常:
    • 3. 场景分析
    • 4. 解决处理
    • 5. 参考资料
    相关产品与服务
    云硬盘
    云硬盘(Cloud Block Storage,CBS)为您提供用于 CVM 的持久性数据块级存储服务。云硬盘中的数据自动地在可用区内以多副本冗余方式存储,避免数据的单点故障风险,提供高达99.9999999%的数据可靠性。同时提供多种类型及规格,满足稳定低延迟的存储性能要求。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档