容器服务 节点数据盘挂载与 /var/lib/container 路径说明

在 TKE 集群中添加节点或创建节点池时,可以以选择挂载数据盘作为容器及镜像的存储目录。挂载数据盘时,系统会提供默认路径 /var/lib/container。这篇将详细介绍该路径的特殊性、底层实现原理以及常。

相关产品
容器服务 产品页,含版本规格、价格与购买入口。

一、什么是 /var/lib/container

/var/lib/container 是 TKE 节点数据盘挂载的默认特殊路径。当你将数据盘的挂载路径设置为 /var/lib/container 时,系统会自动将以下关键目录统一挂载到该数据盘上:

目录 挂载点 用途
/var/lib/kubelet /var/lib/container/kubelet Kubelet 工作目录,存储 Pod 元数据和挂载信息
/var/lib/containerd /var/lib/container/containerd 容器运行时数据目录,存储容器镜像和运行时数据
/var/log/pods /var/lib/container/log Pod 日志目录,存储各 Pod 的标准输出和标准错误日志
/var/lib/docker /var/lib/container/docker Docker 运行时数据目录(使用 Docker 运行时的集群)

注意:说明:

注意:/var/lib/container 不是 /var/lib/containerd 的缩写或拼写错误,二者是不同的路径。/var/lib/container 是 TKE 定义的一个统一存储路径,用于同时承载 Kubelet 和容器运行时的全部数据。

二、Bind Mount 机制

当你配置数据盘挂载路径为 /var/lib/container 时,TKE 节点初始化脚本执行以下操作:

1. 格式化数据盘:将数据盘格式化为指定的文件系统(如 ext4)。

2. 挂载到 /var/lib/container:将格式化后的数据盘挂载到 /var/lib/container 目录。

3. 创建子目录:在 /var/lib/container 下创建 kubelet、containerd(或 docker)、log 等子目录。

4. Bind Mount 绑定挂载:通过 Linux bind mount 将各子目录绑定到对应的系统路径。例如:

·/var/lib/container/kubelet → /var/lib/kubelet

·/var/lib/container/containerd → /var/lib/containerd

·/var/lib/container/log → /var/log/pods

·/var/lib/container/docker → /var/lib/docker

注意:说明:

注意:Bind mount 是一种 Linux 内核机制,它将一个目录挂载到另一个路径上,使得两个路径访问的是同一份数据。通过 bind mount,Kubelet 和容器运行时的配置文件无需修改默认路径,即可将数据实际存储到数据盘上。

三、为什么不直接修改配置文件

TKE 选择使用 bind mount 而不是直接修改 Kubelet 或容器运行时的配置文件路径,原因如下:

·兼容性:无需修改 Kubelet 和容器运行时的默认配置,避免因配置路径变更导致的兼容问题。

·统一管理:通过单一数据盘路径同时管理 Kubelet 和容器运行时的数据。

·运维一致性:操作系统层面的路径保持标准一致,便于统一运维和排障。

四、高级设置中“容器目录”配置的变化

当你在数据盘挂载路径中填写 /var/lib/container 后,高级设置中的容器目录配置项将自动隐藏。这是正常行为,不是系统异常。

原因说明:/var/lib/container 路径已经包含了容器目录的挂载逻辑。系统会自动将容器运行时的数据目录(/var/lib/containerd 或 /var/lib/docker)通过 bind mount 挂载到 /var/lib/container 下,因此不再需要单独配置容器目录。

五、注意事项

·路径验证:配置数据盘挂载路径为 /var/lib/container 后,你可以通过 SSH 登录节点执行 mount 或 df -h 命令,查看 bind mount 绑定关系。此时虽然实际数据存储在数据盘上,但 /var/lib/containerd 等路径仍然可以正常访问。

·仅需修改运行时路径的场景:如果你只需要将容器运行时的数据存储到数据盘上,而不需要同时迁移 Kubelet 数据,可以将挂载路径设置为其他自定义路径(例如 /data),然后在高级设置中将容器目录指向该路径。

·路径混淆排查:如果你在节点上执行 ls /var/lib/containerd 能看到容器数据,同时发现数据盘挂载在 /var/lib/container 目录下,这是 bind mount 的正常效果,两个路径指向的是同一份数据。

赞 (0)
上一篇 4天前
下一篇 4天前