一、 背景介绍
在之前的博客已经介绍了 Kubernetes 集成 ceph 分布式存储实现数据持久化的技术;
本篇介绍如何对已经挂载到容器的rbd卷进行空间扩(缩)容!
二、 操作步骤
2.1 定位容器所使用的 ceph rbd 卷名称
访问 kubernetes dashboard,进入“持久化存储卷索取”菜单,
根据命名规则 “volumeClaimTemplates name - container name" 搜索,如 ceph-rbd-hadoop-m-0
拷贝“存储卷”名称 pvc-xxxx,然后切到“持久化存储卷”菜单,搜索该 pvc
点击 pvc 名称链接,进入详情页,可以看到该 pvc 实际使用的 rbd 名称
拷贝镜像名称 kubernetes-dynamic-pvc-xxx,
2.2 扩容 rbd 卷
登陆 ceph 集群控制机(ceph 任意控制节点),执行如下命令
# rbd resize --size 40960 kube/kubernetes-dynamic-pvc-b3de96b5-0019-11e8-ae98-0ae09837d988
其中,40960 为扩容后大小,单位为MB,40960 即为 40GB 磁盘空间,
kube 为 ceph rbd 所在存储池名称,可以在 “存储类”详情标签里找到,如下图
2.3 找到容器使用 rbd 卷的设备名称
进入容器 shell,执行如下命令
# df -h
不难发现,/dev/rbd4 即为容器使用 rbd 的设备名称
2.4 定位容器运行所在宿主机
可以通过“容器组”菜单下,目标容器的详情页查看容器运行所在物理节点
2.5 进入该节点 shell,执行如下命令,更新 rbd 容量信息
# blockdev --getsize64 /dev/rbd4
# resize2fs /dev/rbd4
2.6 更新 pvc 容量显示信息
因为 kubernetes 并不会感知到 rbd 的变化,因此需要手动修正 rbd 大小的显示信息
来到“持久化存储卷”菜单,编辑已经修改过大小的 pvc,将其容量信息改为正确值,并执行更新
来到“持久化存储卷索取”菜单,我们会发现绑定的存储卷大小已经自动修正为正确大小了
2.7 验证容器挂载的磁盘空间是否变大了
进入容器 shell,执行 df -h 命令
我们发现,/dev/rbd4 块设备已经从原来的 20G 扩大到 40G 了,而且进入挂载目录,会发现数据未丢失,实现了平滑扩容