Kubelet 使用的本地文件和路径

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

kubelet 通常使用控制平面作为节点上需要运行的内容的真实来源,并使用容器运行时来检索容器的当前状态。只要你向 kubelet 提供一个 *kubeconfig* (API 客户端配置),kubelet 就会连接到你的控制平面;否则,节点将在 *独立模式* 下运行。

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

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

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

配置

Kubelet 配置文件

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

证书

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

清单

静态 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.27 [alpha] (默认启用:false)

如果你的集群有
就地 Pod 垂直伸缩
已启用(特性门控
名称 InPlacePodVerticalScaling),则 kubelet 会存储分配的 Pod 资源的本地记录。

文件名是 kubelet 基本目录(在 Linux 上默认为 /var/lib/kubelet;可以使用 --root-dir 配置)中的 pod_status_manager_state

容器运行时

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)。

安全配置文件和配置

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 对锁定文件路径使用不同的值,则它们在都运行时将无法检测到冲突。

下一步

上次修改时间:2024年10月22日,太平洋标准时间下午12:25: 原地 Pod 调整大小 Beta 版 (6c3808ec10)