更新时间:2024-11-12 GMT+08:00

存储扩容

CCE节点可进行扩容的存储类型如下:

表1 不同类型的扩容方法

类型

名称

用途

扩容方法

节点磁盘

系统盘

系统盘用于安装操作系统。

系统盘扩容

数据盘

节点上的第一块数据盘供容器引擎和Kubelet组件使用。

容器存储

Pod容器空间

即容器的basesize设置,每个Pod 占用的磁盘空间设置上限(包含容器镜像占用的空间)。

Pod容器空间(basesize)扩容

PVC

容器中挂载的存储资源。

PVC扩容

系统盘扩容

以“EulerOS 2.9”操作系统为例,系统盘“/dev/vda”原有容量50GB,只有一个分区“/dev/vda1”。将系统盘容量扩大至100GB,本示例将新增的50GB划分至已有的“/dev/vda1”分区内。

  1. 在EVS控制台对系统盘进行扩容。详情请参见扩容云硬盘容量

    在EVS控制台扩容成功后,仅扩大了云硬盘的存储容量,还需要执行后续步骤扩容分区和文件系统。

  2. 登录节点,执行命令growpart,检查当前系统是否已安装growpart扩容工具。

    若回显为工具使用介绍,则表示已安装,无需重复安装。若未安装growpart扩容工具,可执行以下命令安装。

    yum install cloud-utils-growpart

  3. 执行以下命令,查看系统盘“/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

  4. 执行以下命令,查看系统盘分区“/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
    ...

  5. 执行以下命令,指定系统盘待扩容的分区,通过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

  6. 执行以下命令,扩展磁盘分区文件系统的大小。

    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.

  7. 执行以下命令,查看扩容后系统盘分区“/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
    ...

  8. 登录CCE控制台,进入集群,在左侧选择“节点管理”,单击节点后的“同步云服务器”

数据盘扩容

CCE节点使用的第一块数据盘默认分为容器引擎空间和Kubelet空间。如果其中一个磁盘空间不足,您可以根据需求选择其中一部分进行扩容。

在v1.21.10-r0、v1.23.8-r0、v1.25.3-r0及之后版本的集群中,CCE使用的第一块数据盘可以选择使用容器引擎和Kubelet共享磁盘空间的方式,即不再划分容器引擎 (Docker/Containerd) 和Kubelet组件的空间。如果共享磁盘空间不足,您可以对其进行扩容。

容器引擎空间的剩余容量将会影响镜像下载和容器的启动及运行。下面将以containerd为例,进行容器引擎空间扩容。

  1. 在EVS控制台扩容数据盘。详情请参见扩容云硬盘容量

    在EVS控制台扩容成功后,仅扩大了云硬盘的存储容量,还需要执行后续步骤扩容逻辑卷和文件系统。

  2. 登录CCE控制台,进入集群,在左侧选择“节点管理”,单击节点后的“同步云服务器”
  3. 登录目标节点。
  4. 使用lsblk命令查看节点块设备信息。

    这里存在两种情况,根据容器存储Rootfs而不同。

Kubelet空间供Kubelet组件和EmptyDir临时存储使用,您可参考以下步骤进行Kubelet空间扩容。

  1. 在EVS控制台扩容数据盘。详情请参见扩容云硬盘容量

    在EVS控制台扩容成功后,仅扩大了云硬盘的存储容量,还需要执行后续步骤扩容逻辑卷和文件系统。

  2. 登录CCE控制台,进入集群,在左侧选择“节点管理”,单击节点后的“同步云服务器”
  3. 登录目标节点。
  4. 使用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

  5. 然后在节点上执行如下命令, 将新增的磁盘容量加到Kubelet空间上。

    1. 扩容物理卷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
    2. 将空闲容量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.
    3. 调整文件系统的大小。其中/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.

  6. 使用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共享磁盘空间。

  1. 在EVS控制台扩容数据盘。详情请参见扩容云硬盘容量

    在EVS控制台扩容成功后,仅扩大了云硬盘的存储容量,还需要执行后续步骤扩容逻辑卷和文件系统。

  2. 登录CCE控制台,进入集群,在左侧选择“节点管理”,单击节点后的“同步云服务器”
  3. 登录目标节点。
  4. 使用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组件共用的空间

  5. 然后在节点上执行如下命令, 将新增的磁盘容量加到共享盘上。

    1. 扩容物理卷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
    2. 将空闲容量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.
    3. 调整文件系统的大小。其中/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.

  6. 使用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)扩容

  1. 登录CCE控制台,单击集群列表中的集群名称。
  2. 在左侧导航栏中选择“节点管理”
  3. 切换至“节点”页签,选择集群中的节点,单击操作列中的“更多 > 重置节点”。

    重置节点操作可能导致与节点有绑定关系的资源(本地存储,指定调度节点的负载等)无法正常使用。请谨慎操作,避免对运行中的业务造成影响。

  4. 重新配置节点参数。

    如需对容器存储空间进行调整,请重点关注以下配置。

    存储配置:单击数据盘后方的“展开高级设置”可进行如下设置:

    Pod容器空间分配:即容器的basesize设置,每个工作负载下的容器组 Pod 占用的磁盘空间设置上限(包含容器镜像占用的空间)。合理的配置可避免容器组无节制使用磁盘空间导致业务异常。建议此值不超过容器引擎空间的 80%。该参数与节点操作系统和容器存储Rootfs相关,部分场景下不支持设置。

    更多关于容器存储空间分配的内容,请参考数据盘空间分配说明

  5. 重置节点后登录该节点,查看容器容量是否已扩容。容器存储Rootfs不同回显结果也不同,具体如下。

    • Overlayfs:没有单独划分thinpool,在dockersys空间下统一存储镜像相关数据。执行以下代码,查看容器容量是否扩容成功。

      docker exec -it container_id /bin/shkubectl 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/shkubectl 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
      ...

PVC扩容

对于云存储:

  • 对象存储及文件存储SFS:无存储限制,无需扩容。
  • 云硬盘:
    • 对于自动创建的按需收费实例,可以通过控制台直接进行扩容。参考步骤如下:
      1. 在左侧导航栏选择“存储”,在右侧选择“存储卷声明”页签。单击PVC操作列的“更多 > 扩容”。
      2. 输入新增容量,并单击“确定”。
    • 对于包周期收费的实例,需要先在EVS控制台扩容,然后再修改PVC中容量大小。
  • 极速文件存储SFS Turbo:需要先在SFS控制台扩容,然后再修改PVC中容量大小。