首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >【TKE原生节点】自定义挂载路径 bind mount 容器数据目录

【TKE原生节点】自定义挂载路径 bind mount 容器数据目录

原创
作者头像
Jokey
发布2025-12-01 17:53:38
发布2025-12-01 17:53:38
1520
举报
文章被收录于专栏:云原生搬运工云原生搬运工

TKE 原生节点容器默认的数据目录有哪些?

代码语言:bash
复制
 /var/log/pods # kubelet 产生的pod 标准输出日志目录
/var/lib/kubelet # kubelet 数据目录
/var/lib/containerd # containerd 数据目录

TKE 原生节点默认挂载数据盘逻辑是什么?

Case1:

如果挂载数据盘路径为默认路径:/var/lib/container,会自动 bind mount 容器默认的数据目录使用挂载的数据盘,即会有如下挂载:

代码语言:bash
复制
[root@VM-45-16-tlinux ~]# mount | grep vdb
/dev/vdb on /var/lib/container type ext4 (rw,relatime)
/dev/vdb on /var/log/pods type ext4 (rw,relatime)
/dev/vdb on /var/lib/kubelet type ext4 (rw,relatime)
/dev/vdb on /var/lib/containerd type ext4 (rw,relatime)
默认路径的 Bind 示意图
默认路径的 Bind 示意图

Case2:

如果挂载数据盘路径为其他路径时,如 /mnt/paas, 默认不会 bind mount 上述容器目录,但不设置【高级设置】中的容器目录为挂载路径时, 仅作为普通数据盘使用场景。

case3:

如果挂载数据盘路径为其他路径时,如 /mnt/paas, 并设置【高级设置】中的容器目录为挂载路径时, 这种情况下仅将 containerd 默认的数据目录/var/lib/containerd 设置成 /mnt/paas,其他目录仍使用的是系统盘。

设置容器目录为数据盘挂载目录
设置容器目录为数据盘挂载目录

如何自定义其他挂载路径时也 bind mount 到默认容器数据目录?

如果想实现非 /var/lib/container 的目录也实现 bind mount(同上述 Case1 效果), 存量节点没有好的办法,增量可以尝试使用以下方法来实现(以/mnt/paas目录为例)。

1. 购买挂载数据盘为 /mnt/paas:

设置数据盘挂载目录为其他路径
设置数据盘挂载目录为其他路径

2. 使用【高级设置】前置自定义脚本 bind mount 数据目录到默认的容器目录,如下:

自定义脚本挂载
自定义脚本挂载

前置脚本内容如下:

代码语言:bash
复制
#!/bin/sh
mkdir -p /mnt/paas/log /mnt/paas/kubelet /mnt/paas/containerd /var/log/pods   /var/lib/kubelet /var/lib/containerd  

cat << EOF >> /etc/fstab
/mnt/paas/log                  /var/log/pods                   none      defaults,bind  0 0
/mnt/paas/kubelet              /var/lib/kubelet                none      defaults,bind,slave,shared  0 0
/mnt/paas/containerd               /var/lib/containerd             none      defaults,bind  0 0
EOF

mount -a

前置脚本逻辑说明如下:

代码语言:txt
复制
#!/bin/sh
mkdir -p <替换实际数据目录>/log <替换实际数据目录>/kubelet <替换实际数据目录>/containerd  /var/log/pods /var/lib/kubelet /var/lib/containerd

cat << EOF >> /etc/fstab
<替换实际数据目录>/log                  /var/log/pods                   none      defaults,bind  0 0
<替换实际数据目录>/kubelet              /var/lib/kubelet                none      defaults,bind,slave,shared  0 0
<替换实际数据目录>/containerd               /var/lib/containerd             none      defaults,bind  0 0
EOF
mount -a

3. 检查是否生效,登陆节点查看如下图所示说明脚本配置成功:

登陆节点查看
登陆节点查看

4. 测试数据落盘是否在数据盘。

代码语言:bash
复制
#生成大文件测试命令
dd if=/dev/zero of=test.txt count=10 bs=512M 
测试使用数据盘
测试使用数据盘

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • TKE 原生节点容器默认的数据目录有哪些?
  • TKE 原生节点默认挂载数据盘逻辑是什么?
    • Case1:
    • Case2:
    • case3:
  • 如何自定义其他挂载路径时也 bind mount 到默认容器数据目录?
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档