如何增大K3s默认存储空间(RHEL 8、非Docker环境)
解决RHEL 8上K3s+Containerd存储扩容问题
先定位核心存储路径
K3s默认使用的Containerd存储根目录是/var/lib/rancher/k3s/agent/containerd,你看到的5G挂载点就是这个目录所在的分区。先确认具体挂载信息:
# 查看Containerd根目录 crictl info | grep -A5 "rootDir" # 确认该目录所在分区 df -h /var/lib/rancher/k3s/agent/containerd
方案一:扩容现有存储分区(适用于分区所在磁盘有未分配空间)
如果该分区是LVM逻辑卷(RHEL8默认配置),按以下步骤操作:
- 检查卷组剩余可用空间:
vgs
- 扩展逻辑卷(替换
[vg-name]和[lv-name]为实际卷组、逻辑卷名,比如rhel-root):
lvextend -L +10G /dev/mapper/[vg-name]-[lv-name]
- 扩容XFS文件系统(RHEL8默认文件系统):
xfs_growfs /dev/mapper/[vg-name]-[lv-name]
如果是普通分区,需先通过fdisk工具调整分区大小(操作前务必备份数据),再用xfs_growfs或resize2fs(ext系列)扩容文件系统。
方案二:迁移Containerd存储到更大磁盘(适用于现有磁盘无扩容空间)
- 停止K3s服务:
# Server节点 systemctl stop k3s # Agent节点 systemctl stop k3s-agent
- 准备新磁盘:格式化并挂载(替换
/dev/sdX1为实际磁盘分区):
mkfs.xfs /dev/sdX1 mkdir /mnt/new-containerd-storage mount /dev/sdX1 /mnt/new-containerd-storage
- 复制现有Containerd数据到新目录:
rsync -avz /var/lib/rancher/k3s/agent/containerd/ /mnt/new-containerd-storage/
- 修改K3s启动参数指定新存储路径:
编辑K3s的systemd服务文件(/etc/systemd/system/k3s.service或k3s-agent.service),在ExecStart行末尾添加--containerd-root /mnt/new-containerd-storage,例如:
ExecStart=/usr/local/bin/k3s server --containerd-root /mnt/new-containerd-storage
- 重载systemd配置并启动服务:
systemctl daemon-reload systemctl start k3s
- 验证配置生效:
crictl info | grep rootDir
确认路径已更新后,尝试拉取大镜像,无问题即可删除原备份目录:
rm -rf /var/lib/rancher/k3s/agent/containerd.bak
内容的提问来源于stack exchange,提问作者Landon Alexander
相关产品推荐
相关产品推荐

