Kubelet 使用的本地文件和路径
kubelet 主要是在 Kubernetes 节点上运行的无状态进程。本文档概述了 kubelet 读取和写入的文件。
注意
本文档仅供参考,不描述任何保证的行为或 API。它列出了 kubelet 使用的资源,这是一个实现细节,并且在任何版本中都可能会更改。kubelet 通常使用控制平面作为节点上需要运行的内容的真实来源,并使用容器运行时来检索容器的当前状态。只要你向 kubelet 提供一个 *kubeconfig* (API 客户端配置),kubelet 就会连接到你的控制平面;否则,节点将在 *独立模式* 下运行。
在 Linux 节点上,kubelet 还依赖于读取 cgroup 和各种系统文件来收集指标。
在 Windows 节点上,kubelet 通过不依赖于路径的不同机制收集指标。
kubelet 还会使用其他一些文件,kubelet 还使用本地 Unix 域套接字进行通信。一些是 kubelet 监听的套接字,对于其他套接字,kubelet 会发现它们,然后作为客户端连接。
注意
此页面将路径列为 Linux 路径,它通过将根磁盘C:\
替换为 /
来映射到 Windows 路径(除非另有说明)。例如,/var/lib/kubelet/device-plugins
映射到 C:\var\lib\kubelet\device-plugins
。配置
Kubelet 配置文件
可以使用命令行参数 --config
配置 kubelet 配置文件的路径。kubelet 还支持插入式配置文件来增强配置。
证书
证书和私钥通常位于 /var/lib/kubelet/pki
,但可以使用 --cert-dir
kubelet 命令行参数进行配置。证书文件的名称也是可配置的。
清单
静态 Pod 的清单通常位于 /etc/kubernetes/manifests
中。可以使用 staticPodPath
kubelet 配置选项配置位置。
Systemd 单元设置
当 kubelet 作为 systemd 单元运行时,一些 kubelet 配置可以在 systemd 单元设置文件中声明。通常包括
- 用于运行 kubelet 的命令行参数
- kubelet 使用的环境变量或配置 golang 运行时
状态
资源管理器的检查点文件
所有资源管理器都将 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 对锁定文件路径使用不同的值,则它们在都运行时将无法检测到冲突。
下一步
- 了解有关 kubelet 命令行参数的信息。
- 查看Kubelet 配置 (v1beta1) 参考