存储扩容
CCE节点可进行扩容的存储类型如下:
类型 |
名称 |
用途 |
扩容方法 |
---|---|---|---|
节点磁盘 |
系统盘 |
系统盘用于安装操作系统。 |
|
数据盘 |
节点上的第一块数据盘供容器引擎和Kubelet组件使用。 |
||
容器存储 |
Pod容器空间 |
即容器的basesize设置,每个Pod 占用的磁盘空间设置上限(包含容器镜像占用的空间)。 |
|
PVC |
容器中挂载的存储资源。 |
系统盘扩容
以“EulerOS 2.9”操作系统为例,系统盘“/dev/vda”原有容量50GB,只有一个分区“/dev/vda1”。将系统盘容量扩大至100GB,本示例将新增的50GB划分至已有的“/dev/vda1”分区内。
- 在EVS控制台对系统盘进行扩容。详情请参见扩容云硬盘容量。
在EVS控制台扩容成功后,仅扩大了云硬盘的存储容量,还需要执行后续步骤扩容分区和文件系统。
- 登录节点,执行命令growpart,检查当前系统是否已安装growpart扩容工具。
若回显为工具使用介绍,则表示已安装,无需重复安装。若未安装growpart扩容工具,可执行以下命令安装。
yum install cloud-utils-growpart
- 执行以下命令,查看系统盘“/dev/vda”的总容量。
fdisk -l
回显信息如下,系统盘“/dev/vda”的总容量为100GiB:
[root@test-48162 ~]# fdisk -l Disk /dev/vda: 100 GiB, 107374182400 bytes, 209715200 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0x78d88f0b Device Boot Start End Sectors Size Id Type /dev/vda1 * 2048 104857566 104855519 50G 83 Linux Disk /dev/vdb: 100 GiB, 107374182400 bytes, 209715200 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk /dev/mapper/vgpaas-dockersys: 90 GiB, 96632569856 bytes, 188735488 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk /dev/mapper/vgpaas-kubernetes: 10 GiB, 10733223936 bytes, 20963328 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes
- 执行以下命令,查看系统盘分区“/dev/vda1”的容量。
df -TH
回显信息如下:
[root@test-48162 ~]# df -TH Filesystem Type Size Used Avail Use% Mounted on devtmpfs devtmpfs 1.8G 0 1.8G 0% /dev tmpfs tmpfs 1.8G 0 1.8G 0% /dev/shm tmpfs tmpfs 1.8G 13M 1.8G 1% /run tmpfs tmpfs 1.8G 0 1.8G 0% /sys/fs/cgroup /dev/vda1 ext4 53G 3.3G 47G 7% / tmpfs tmpfs 1.8G 75M 1.8G 5% /tmp /dev/mapper/vgpaas-dockersys ext4 95G 1.3G 89G 2% /var/lib/docker /dev/mapper/vgpaas-kubernetes ext4 11G 39M 10G 1% /mnt/paas/kubernetes/kubelet ...
- 执行以下命令,指定系统盘待扩容的分区,通过growpart进行扩容。
growpart 系统盘 分区编号
命令示例(系统盘只有1个分区“/dev/vda1”,因此分区编号为1):
growpart /dev/vda 1
回显信息如下:
CHANGED: partition=1 start=2048 old: size=104855519 end=104857567 new: size=209713119 end=209715167
- 执行以下命令,扩展磁盘分区文件系统的大小。
resize2fs 磁盘分区
命令示例:
resize2fs /dev/vda1
回显信息如下:
resize2fs 1.45.6 (20-Mar-2020) Filesystem at /dev/vda1 is mounted on /; on-line resizing required old_desc_blocks = 7, new_desc_blocks = 13 The filesystem on /dev/vda1 is now 26214139 (4k) blocks long.
- 执行以下命令,查看扩容后系统盘分区“/dev/vda1”的容量。
df -TH
回显类似如下信息:
[root@test-48162 ~]# df -TH Filesystem Type Size Used Avail Use% Mounted on devtmpfs devtmpfs 1.8G 0 1.8G 0% /dev tmpfs tmpfs 1.8G 0 1.8G 0% /dev/shm tmpfs tmpfs 1.8G 13M 1.8G 1% /run tmpfs tmpfs 1.8G 0 1.8G 0% /sys/fs/cgroup /dev/vda1 ext4 106G 3.3G 98G 4% / tmpfs tmpfs 1.8G 75M 1.8G 5% /tmp /dev/mapper/vgpaas-dockersys ext4 95G 1.3G 89G 2% /var/lib/docker /dev/mapper/vgpaas-kubernetes ext4 11G 39M 10G 1% /mnt/paas/kubernetes/kubelet ...
- 登录CCE控制台,进入集群,在左侧选择“节点管理”,单击节点后的“同步云服务器”。
数据盘扩容
CCE节点使用的第一块数据盘默认分为容器引擎空间和Kubelet空间。如果其中一个磁盘空间不足,您可以根据需求选择其中一部分进行扩容。
在v1.21.10-r0、v1.23.8-r0、v1.25.3-r0及之后版本的集群中,CCE使用的第一块数据盘可以选择使用容器引擎和Kubelet共享磁盘空间的方式,即不再划分容器引擎 (Docker/Containerd) 和Kubelet组件的空间。如果共享磁盘空间不足,您可以对其进行扩容。
容器引擎空间的剩余容量将会影响镜像下载和容器的启动及运行。下面将以containerd为例,进行容器引擎空间扩容。
- 在EVS控制台扩容数据盘。详情请参见扩容云硬盘容量。
在EVS控制台扩容成功后,仅扩大了云硬盘的存储容量,还需要执行后续步骤扩容逻辑卷和文件系统。
- 登录CCE控制台,进入集群,在左侧选择“节点管理”,单击节点后的“同步云服务器”。
- 登录目标节点。
- 使用lsblk命令查看节点块设备信息。
这里存在两种情况,根据容器存储Rootfs而不同。
Kubelet空间供Kubelet组件和EmptyDir临时存储使用,您可参考以下步骤进行Kubelet空间扩容。
- 在EVS控制台扩容数据盘。详情请参见扩容云硬盘容量。
在EVS控制台扩容成功后,仅扩大了云硬盘的存储容量,还需要执行后续步骤扩容逻辑卷和文件系统。
- 登录CCE控制台,进入集群,在左侧选择“节点管理”,单击节点后的“同步云服务器”。
- 登录目标节点。
- 使用lsblk命令查看节点块设备信息。
# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 50G 0 disk └─sda1 8:1 0 50G 0 part / sdb 8:16 0 200G 0 disk #数据盘已扩容至200G,存在50G空间仍未分配 ├─vgpaas-dockersys 253:0 0 140G 0 lvm /var/lib/containerd └─vgpaas-kubernetes 253:1 0 10G 0 lvm /mnt/paas/kubernetes/kubelet
- 然后在节点上执行如下命令, 将新增的磁盘容量加到Kubelet空间上。
- 扩容物理卷PV,让LVM识别EVS新增的容量。其中/dev/sdb为Kubelet逻辑卷所在的物理卷。
pvresize /dev/sdb
回显如下:
Physical volume "/dev/sdb" changed 1 physical volume(s) resized or updated / 0 physical volume(s) not resized
- 将空闲容量100%扩容到逻辑卷LV。其中vgpaas/kubernetes为Kubelet使用的逻辑卷。
lvextend -l+100%FREE -n vgpaas/kubernetes
回显如下:
Size of logical volume vgpaas/kubernetes changed from <10.00 GiB (2559 extents) to <60.00 GiB (15359 extents). Logical volume vgpaas/kubernetes successfully resized.
- 调整文件系统的大小。其中/dev/vgpaas/kubernetes为容器引擎的文件系统路径。
resize2fs /dev/vgpaas/kubernetes
回显如下:
Filesystem at /dev/vgpaas/kubernetes is mounted on /mnt/paas/kubernetes/kubelet; on-line resizing required old_desc_blocks = 2, new_desc_blocks = 8 The filesystem on /dev/vgpaas/kubernetes is now 15727616 blocks long.
- 扩容物理卷PV,让LVM识别EVS新增的容量。其中/dev/sdb为Kubelet逻辑卷所在的物理卷。
- 使用lsblk命令查看节点块设备信息。
# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 50G 0 disk └─sda1 8:1 0 50G 0 part / sdb 8:16 0 200G 0 disk ├─vgpaas-dockersys 253:0 0 140G 0 lvm /var/lib/containerd └─vgpaas-kubernetes 253:1 0 60G 0 lvm /mnt/paas/kubernetes/kubelet #新增磁盘分配至kubelet空间
您可参考以下步骤扩容容器引擎和Kubelet共享磁盘空间。
- 在EVS控制台扩容数据盘。详情请参见扩容云硬盘容量。
在EVS控制台扩容成功后,仅扩大了云硬盘的存储容量,还需要执行后续步骤扩容逻辑卷和文件系统。
- 登录CCE控制台,进入集群,在左侧选择“节点管理”,单击节点后的“同步云服务器”。
- 登录目标节点。
- 使用lsblk命令查看节点块设备信息。
# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 50G 0 disk └─sda1 8:1 0 50G 0 part / sdb 8:16 0 120G 0 disk # 数据盘已扩容至120G,存在20G空间仍未分配 └─vgpaas-share 253:0 0 100G 0 lvm /mnt/paas # 容器引擎和Kubelet组件共用的空间
- 然后在节点上执行如下命令, 将新增的磁盘容量加到共享盘上。
- 扩容物理卷PV,让LVM识别EVS新增的容量。其中/dev/sdb为共享盘所在的物理卷。
pvresize /dev/sdb
回显如下:
Physical volume "/dev/sdb" changed 1 physical volume(s) resized or updated / 0 physical volume(s) not resized
- 将空闲容量100%扩容到逻辑卷LV。其中vgpaas/share为容器引擎和Kubelet组件共同使用的逻辑卷。
lvextend -l+100%FREE -n vgpaas/share
回显如下:
Size of logical volume vgpaas/share changed from <100.00 GiB (25599 extents) to <120.00 GiB (30719 extents). Logical volume vgpaas/share successfully resized.
- 调整文件系统的大小。其中/dev/vgpaas/share为共享盘的文件系统路径。
resize2fs /dev/vgpaas/share
回显如下:
Filesystem at /dev/vgpaas/share is mounted on /mnt/paas; on-line resizing required old_desc_blocks = 13, new_desc_blocks = 15 The filesystem on /dev/vgpaas/share is now 31456256 blocks long.
- 扩容物理卷PV,让LVM识别EVS新增的容量。其中/dev/sdb为共享盘所在的物理卷。
- 使用lsblk命令查看节点块设备信息。
# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 50G 0 disk └─sda1 8:1 0 50G 0 part / sdb 8:16 0 120G 0 disk └─vgpaas-share 253:0 0 120G 0 lvm /mnt/paas #新增磁盘分配至容器引擎和Kubelet组件共用的空间
Pod容器空间(basesize)扩容
- 登录CCE控制台,单击集群列表中的集群名称。
- 在左侧导航栏中选择“节点管理”。
- 切换至“节点”页签,选择集群中的节点,单击操作列中的“更多 > 重置节点”。
重置节点操作可能导致与节点有绑定关系的资源(本地存储,指定调度节点的负载等)无法正常使用。请谨慎操作,避免对运行中的业务造成影响。
- 重新配置节点参数。
如需对容器存储空间进行调整,请重点关注以下配置。
存储配置:单击数据盘后方的“展开高级设置”可进行如下设置:
Pod容器空间分配:即容器的basesize设置,每个工作负载下的容器组 Pod 占用的磁盘空间设置上限(包含容器镜像占用的空间)。合理的配置可避免容器组无节制使用磁盘空间导致业务异常。建议此值不超过容器引擎空间的 80%。该参数与节点操作系统和容器存储Rootfs相关,部分场景下不支持设置。
更多关于容器存储空间分配的内容,请参考数据盘空间分配说明。
- 重置节点后登录该节点,查看容器容量是否已扩容。容器存储Rootfs不同回显结果也不同,具体如下。
- Overlayfs:没有单独划分thinpool,在dockersys空间下统一存储镜像相关数据。执行以下代码,查看容器容量是否扩容成功。
docker exec -it container_id /bin/sh或kubectl exec -it container_id -- /bin/sh
df -h
回显如下,可以看到overlay容量从10G扩容到15G,说明扩容成功。
Filesystem Size Used Avail Use% Mounted on overlay 15G 104K 15G 1% / tmpfs 64M 0 64M 0% /dev tmpfs 3.6G 0 3.6G 0% /sys/fs/cgroup /dev/mapper/vgpaas-share 98G 4.0G 89G 5% /etc/hosts ...
- Devicemapper:单独划分了thinpool存储镜像相关数据。执行以下代码,查看容器容量是否扩容成功。
docker exec -it container_id /bin/sh或kubectl exec -it container_id -- /bin/sh
df -h
回显如下,可以看到thinpool容量从10G扩容到15G,说明扩容成功。
Filesystem Size Used Avail Use% Mounted on /dev/mapper/vgpaas-thinpool-snap-84 15G 232M 15G 2% / tmpfs 64M 0 64M 0% /dev tmpfs 3.6G 0 3.6G 0% /sys/fs/cgroup /dev/mapper/vgpaas-kubernetes 11G 41M 11G 1% /etc/hosts /dev/mapper/vgpaas-dockersys 20G 1.1G 18G 6% /etc/hostname ...
- Overlayfs:没有单独划分thinpool,在dockersys空间下统一存储镜像相关数据。执行以下代码,查看容器容量是否扩容成功。