介绍
目前容器服务 Kubernetes 集群在创建的时候, 可以让客户选择是否挂载 Worker 节点的数据盘, 并配置其容量; 这里的数据盘会保存 docker 容器, 镜像, kubelet 等相关数据;
这里的数据盘与客户应用使用的云盘区别:
这里的数据盘: 是用来保存 docker,kubelet 等容器系统服务数据的;
应用挂载云盘: 是您的应用来保存数据的, 可以通过 pv,pvc 挂载;
云盘扩容方案: https://yq.aliyun.com/articles/629008
如上图, 创建集群的时候为 worker 节点添加数据盘, 会默认挂载在 worker 的 / dev/vdb 设备;
- # ls /dev | grep vdb
- vdb
- vdb1
- # df -h | grep vdb
- /dev/vdb1 58G 1.1G 54G 2% /var/lib/docker
- # mount | grep vdb
- /dev/vdb1 on /var/lib/container type ext4 (rw,relatime,data=ordered)
- /dev/vdb1 on /var/lib/kubelet type ext4 (rw,relatime,data=ordered)
- /dev/vdb1 on /var/lib/docker type ext4 (rw,relatime,data=ordered)
- /dev/vdb1 on /var/lib/docker/plugins type ext4 (rw,relatime,data=ordered)
- /dev/vdb1 on /var/lib/container/docker/plugins type ext4 (rw,relatime,data=ordered)
- /dev/vdb1 on /var/lib/docker/overlay2 type ext4 (rw,relatime,data=ordered)
- /dev/vdb1 on /var/lib/container/docker/overlay2 type ext4 (rw,relatime,data=ordered)
以下各个步骤介绍如何在 Kubernetes 环境下为数据盘 (/dev/vdb) 扩容;
假设需要升级的数据盘在节点 Worker1 上:
1. 暂停节点服务
登陆 worker1, 停止 docker,kubelet 服务:
- # service kubelet stop
- # service docker stop
关闭 docker,kubelet 开启启动:
- # systemctl disable kubelet
- # systemctl disable docker
2. 打快照(已备升级失败时恢复)
从容器集群列表找到 worker1 节点:
) 从节点列表点击节点进入 ecs 控制台:
) 点击本实例磁盘页面, 点击对应数据盘的 "创建快照" 按钮;
) 点击左侧栏的 "本实例快照", 可以看到快照的创建进度;
创建快照完成, 进行下一步;
3. 扩容磁盘
在 ecs 控制台找到要扩容数据盘, 设置扩容后容量, 点击扩容. 扩容成功后, 控制台磁盘列表里即显示扩容后的容量.
重启节点: ecs 控制台上找到 worker1, 重启节点;
4. 扩容文件系统
登陆 worker1 节点:
4.1. Umount 挂载目录:
把所有挂载 / dev/vdb1 设备的目录进行 umount:
查看有哪些挂载目录:
- # mount | grep vdb
- /dev/vdb1 on /var/lib/container type ext4 (rw,relatime,data=ordered)
- /dev/vdb1 on /var/lib/kubelet type ext4 (rw,relatime,data=ordered)
- /dev/vdb1 on /var/lib/docker type ext4 (rw,relatime,data=ordered)
执行卸载目录:
- # umount /var/lib/kubelet/
- # umount /var/lib/docker
- # umount /var/lib/container/
检查卸载完成:
# mount | grep vdb
4.2. 重置磁盘:
执行以下命令, 为磁盘重新分配分区大小:
- # fdisk /dev/vdb
- (依次输入以下选项: 都是默认值)
:d 回车 n 回车 p 回车 1 回车 回车 回车 wq 回车
具体说明参考: https://help.aliyun.com/document_detail/25452.html
执行完成检查是否分区扩容成功,/dev/vdb1 的大小为 83885056(大约 80G, 最后一行).
# fdisk -l /dev/vdb
磁盘 /dev/vdb:85.9 GB, 85899345920 字节, 167772160 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑 / 物理):512 字节 / 512 字节
I/O 大小(最小 / 最佳):512 字节 / 512 字节
磁盘标签类型: dos
磁盘标识符: 0x0bd82aa9
设备 Boot Start End Blocks Id System
/dev/vdb1 2048 167772159 83885056 83 Linux
4.3. 扩容文件系统:
再次检查 vdb 是否被挂载(由于配置了自动挂载)
- # mount | grep vdb
- /dev/vdb1 on /var/lib/container type ext4 (rw,relatime,data=ordered)
执行 Umount:
# umount /var/lib/container
执行以下文件系统扩容命令:
- ## 检查文件系统, 如果被挂载会报错;
- # e2fsck -f /dev/vdb1
- e2fsck 1.42.9 (28-Dec-2013)
第一步: 检查 inode, 块, 和大小
第二步: 检查目录结构
第 3 步: 检查目录连接性
Pass 4: Checking reference counts
第 5 步: 检查簇概要信息
- /dev/vdb1: 32120/7864320 files (0.1% non-contiguous), 797997/15728384 blocks
- ## 变更文件系统大小;
- # resize2fs /dev/vdb1
- resize2fs 1.42.9 (28-Dec-2013)
- Resizing the filesystem on /dev/vdb1 to 20971264 (4k) blocks.
- The filesystem on /dev/vdb1 is now 20971264 blocks long.
5. 重启节点
Enable 开机启动服务:
- # systemctl enable kubelet
- # systemctl enable docker
执行 reboot 或者 到控制台重启 woker1 节点;
6. 验证扩容
节点重启后登陆 worker1 节点:
- ## vdb 数据盘已经变成 78G(配置的 80G);
- # df -h | grep vdb
- /dev/vdb1 78G 1.1G 73G 2% /var/lib/docker
检查磁盘数据是否完整:
# docker images 比较扩容前后的镜像数据;
检查 kubelet,docker 服务运行是否正常;
来源: https://yq.aliyun.com/articles/646184