文档中心>容器服务>TKE 标准集群>节点数据盘挂载与 /var/lib/container 路径说明

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

最近更新时间:2026-05-13 18:33:53

我的收藏

功能说明

在 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 下创建 kubeletcontainerd(或 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 登录节点执行 mountdf -h 命令,查看 bind mount 绑定关系。此时虽然实际数据存储在数据盘上,但 /var/lib/containerd 等路径仍然可以正常访问。
仅需修改运行时路径的场景:如果您只需要将容器运行时的数据存储到数据盘上,而不需要同时迁移 Kubelet 数据,可以将挂载路径设置为其他自定义路径(例如 /data),然后在高级设置中将容器目录指向该路径。
路径混淆排查:如果您在节点上执行 ls /var/lib/containerd 能看到容器数据,同时发现数据盘挂载在 /var/lib/container 目录下,这是 bind mount 的正常效果,两个路径指向的是同一份数据。