Kubelet 使用的本地文件和路径

kubelet 主要是一个运行在 Kubernetes 节点 上的无状态进程。本文档概述了 kubelet 读取和写入的文件。

说明

本文档仅供参考,不描述任何保证的行为或 API。它列出了 kubelet 使用的资源,这些属于实现细节,可能会在任何版本中发生变化。

kubelet 通常使用 控制平面 作为关于节点上需要运行什么的单一事实来源,并使用 容器运行时 来检索容器的当前状态。只要您为 kubelet 提供 kubeconfig(API 客户端配置),kubelet 就会连接到您的控制平面;否则,节点将以 独立模式 (standalone mode) 运行。

在 Linux 节点上,kubelet 还依赖于读取 cgroups 和各种系统文件来收集指标。

在 Windows 节点上,kubelet 通过不依赖路径的其他机制收集指标。

还有一些其他文件也被 kubelet 使用,因为 kubelet 使用本地 Unix 域套接字进行通信。有些是 kubelet 监听的套接字,而对于其他套接字,kubelet 会发现它们并作为客户端连接。

说明

本页面将路径列为 Linux 路径,通过将根磁盘 C:\ 替换为 /(除非另有说明)即可映射到 Windows 路径。例如,/var/lib/kubelet/device-plugins 映射到 C:\var\lib\kubelet\device-plugins

配置

Kubelet 配置文件

kubelet 配置文件的路径可以使用命令行参数 --config 进行配置。kubelet 还支持 插入式配置文件 以增强配置。

证书

证书和私钥通常位于 /var/lib/kubelet/pki,但可以使用 --cert-dir kubelet 命令行参数进行配置。证书文件的名称也是可配置的。

清单 (Manifests)

静态 Pod 的清单通常位于 /etc/kubernetes/manifests。位置可以使用 staticPodPath kubelet 配置选项进行配置。

Systemd 单元设置

当 kubelet 作为 systemd 单元运行时,一些 kubelet 配置可以在 systemd 单元设置文件中声明。通常包括

状态

资源管理器的检查点文件

所有资源管理器都将 Pod 到已分配资源的映射保存在状态文件中。状态文件位于 kubelet 的基本目录中,也称为 根目录(但与节点根目录 / 不同)。您可以使用 kubelet 命令行参数 --root-dir 为 kubelet 配置基本目录。

文件名

设备管理器的检查点文件

设备管理器在带有套接字文件的同一目录中创建检查点:/var/lib/kubelet/device-plugins/。检查点文件的名称是 设备管理器kubelet_internal_checkpoint

Pod 资源检查点

特性状态: Kubernetes v1.35 [稳定](默认启用)

如果节点启用了 InPlacePodVerticalScaling 特性门控,kubelet 会存储一个 Pod 已分配 (allocated)已执行 (actuated) 资源的本地记录。有关如何使用这些记录的更多详细信息,请参阅 调整分配给容器的 CPU 和内存资源

文件名

  • allocated_pods_state 记录分配给在节点上运行的每个 Pod 的资源
  • actuated_pods_state 记录运行时已接受的、在节点上运行的每个 Pod 的资源

这些文件位于 kubelet 基本目录中(Linux 上默认为 /var/lib/kubelet;可使用 --root-dir 进行配置)。

容器运行时

Kubelet 使用通过配置参数配置的套接字与容器运行时进行通信

  • 用于运行时操作的 containerRuntimeEndpoint
  • 用于镜像管理操作的 imageServiceEndpoint

这些端点的实际值取决于所使用的容器运行时。

设备插件

kubelet 在 /var/lib/kubelet/device-plugins/kubelet.sock 路径下公开了一个套接字,供各种 设备插件注册 使用。

当设备插件注册自身时,它会提供其套接字路径供 kubelet 连接。

设备插件套接字应位于 kubelet 基本目录中的 device-plugins 目录中。在典型的 Linux 节点上,这意味着 /var/lib/kubelet/device-plugins

Pod 资源 API

Pod 资源 API 将在 /var/lib/kubelet/pod-resources 路径下公开。

DRA、CSI 和设备插件

kubelet 会查找由 DRA、设备管理器或存储插件管理的设备插件所创建的套接字文件,然后尝试连接到这些套接字。kubelet 查找的目录是 kubelet 基本目录中的 plugins_registry,因此在典型的 Linux 节点上,这意味着 /var/lib/kubelet/plugins_registry

注意,对于设备插件,有两种可选的注册机制。对于给定的插件,只能使用其中一种。

可以将套接字文件放置在该目录中的插件类型包括

  • CSI 插件
  • DRA 插件
  • 设备管理器插件

(通常为 /var/lib/kubelet/plugins_registry)。

优雅节点关闭

特性状态: Kubernetes v1.21 [beta](默认启用)

优雅节点关闭/var/lib/kubelet/graceful_node_shutdown_state 本地存储状态。

镜像拉取记录

特性状态: Kubernetes v1.35 [beta](默认启用)

kubelet 存储已尝试和成功拉取镜像的记录,并使用这些记录来验证镜像之前是否已使用相同的凭据成功拉取。

这些记录作为文件缓存在 kubelet 基本目录中的 image_registry 目录中。在典型的 Linux 节点上,这意味着 /var/lib/kubelet/image_managerimage_manager 有两个子目录

  • pulling - 存储关于 Kubelet 正在尝试拉取的镜像的记录。
  • pulled - 存储关于 Kubelet 成功拉取的镜像的记录,以及有关用于拉取的凭据的元数据。

有关详细信息,请参阅 确保镜像拉取凭据验证

安全配置文件和配置

Seccomp

从 Pod 引用的 Seccomp 配置文件应放置在 /var/lib/kubelet/seccomp 中。有关详细信息,请参阅 seccomp 参考

AppArmor

kubelet 不会通过 Kubernetes 特定的路径加载或引用 AppArmor 配置文件。AppArmor 配置文件是通过节点操作系统加载的,而不是通过其路径引用的。

锁定

特性状态: Kubernetes v1.2 [alpha]

kubelet 的锁定文件;通常为 /var/run/kubelet.lock。kubelet 使用它来确保两个不同的 kubelet 不会尝试相互冲突地运行。您可以使用 --lock-file kubelet 命令行参数配置锁定文件的路径。

如果同一节点上的两个 kubelet 为锁定文件路径使用了不同的值,当它们同时运行时,将无法检测到冲突。

接下来


上次修改时间为 2025 年 4 月 7 日上午 9:46 PST:更新 v1.33 beta 的 InPlacePodVerticalScaling 文档 (#50290) (c014f72fbb)