Information in this document may be out of date
This document has an older update date than the original, so the information it contains may be out of date. If you're able to read English, see the English version for the most up-to-date information: Set Kubelet Parameters Via A Configuration File
通过配置文件设置 kubelet 参数
通过保存在硬盘的配置文件设置 kubelet 的部分配置参数,这可以作为命令行参数的替代。
建议通过配置文件的方式提供参数,因为这样可以简化节点部署和配置管理。
创建配置文件
KubeletConfiguration
结构体定义了可以通过文件配置的 kubelet 配置子集,
配置文件必须是这个结构体中参数的 JSON 或 YAML 表现形式。 确保 kubelet 可以读取该文件。
下面是一个 kubelet 配置文件示例:
apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
address: "192.168.0.8"
port: 20250
serializeImagePulls: false
evictionHard:
memory.available: "100Mi"
nodefs.available: "10%"
nodefs.inodesFree: "5%"
imagefs.available: "15%"
在此示例中,kubelet 配置为以下设置:
address
:kubelet 将在192.168.0.8
IP 地址上提供服务。port
:kubelet 将在20250
端口上提供服务。serializeImagePulls
:并行拉取镜像。evictionHard
:kubelet 将在以下情况之一驱逐 Pod:- 当节点的可用内存降至 100MiB 以下时。
- 当节点主文件系统的已使用 inode 超过 95%。
- 当镜像文件系统的可用空间小于 15% 时。
- 当节点主文件系统的 inode 超过 95% 正在使用时。
在示例中,通过只更改 evictionHard 的一个参数的默认值, 其他参数的默认值将不会被继承,他们会被设置为零。如果要提供自定义值,你应该分别设置所有阈值。
imagefs
是一个可选的文件系统,容器运行时使用它来存储容器镜像和容器可写层。
启动通过配置文件配置的 kubelet 进程
如果你使用 kubeadm 初始化你的集群,在使用 kubeadm init
创建你的集群的时候请使用 kubelet-config。
更多细节请阅读使用 kubeadm 配置 kubelet
启动 kubelet 需要将 --config
参数设置为 kubelet 配置文件的路径。kubelet 将从此文件加载其配置。
请注意,命令行参数与配置文件有相同的值时,就会覆盖配置文件中的该值。 这有助于确保命令行 API 的向后兼容性。
请注意,kubelet 配置文件中的相对文件路径是相对于 kubelet 配置文件的位置解析的, 而命令行参数中的相对路径是相对于 kubelet 的当前工作目录解析的。
请注意,命令行参数和 kubelet 配置文件的某些默认值不同。
如果设置了 --config
,并且没有通过命令行指定值,则 KubeletConfiguration
版本的默认值生效。在上面的例子中,version 是 kubelet.config.k8s.io/v1beta1
。
kubelet 配置文件的插件目录
自 Kubernetes v1.28.0 起,kubelet 被扩展以支持一个插件配置目录。
该目录的位置可以使用 --config-dir
标志来指定,默认为 ""
,也就是被禁用状态。
只有在为 kubelet 进程设置环境变量 KUBELET_CONFIG_DROPIN_DIR_ALPHA
(该变量的值无关紧要)时才可以设置 --config-dir
。对于 Kubernetes v1.30,
如果你未设置该变量而指定了 --config-dir
,kubelet 将返回错误并且启动失败。
你不能使用 kubelet 配置文件指定插件配置目录;只能使用 CLI 参数 --config-dir
进行设置。
你可以以类似于 kubelet 配置文件的方式使用 kubelet 配置目录。
合法的 kubelet 插件配置文件的后缀必须为 .conf
。例如 99-kubelet-address.conf
。
例如,你可能想要为所有节点设置一个基准的 kubelet 配置,但你可能想要自定义 address
字段。
可以按如下方式操作:
kubelet 配置文件的主要内容如下:
apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
port: 20250
serializeImagePulls: false
evictionHard:
memory.available: "200Mi"
--config-dir
目录中某个文件的内容如下:
apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
address: "192.168.0.8"
在启动时,kubelet 会合并来自以下几部分的配置:
- 命令行参数(优先级最低)。
- kubelet 配置文件。
- 排序的插件配置文件。
- 在命令行中指定的特性门控(优先级最高)。
这将产生与之前示例中使用的单个配置文件相同的结果。
接下来
- 参阅
KubeletConfiguration
进一步学习 kubelet 的配置。