Kubernetes kubelet配置

2023-12-15 91

Kubernetes 集群中的kubelet 是负责管理容器运行的组件。通过保存在硬盘上的配置文件,可以设置 kubelet 的部分配置参数,以便更好地满足特定的需求和优化性能。本文将介绍如何通过保存在硬盘上的配置文件来设置 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 配置为以下设置:

1、address:kubelet 将在 192.168.0.8 IP 地址上提供服务。

2、port:kubelet 将在 20250 端口上提供服务。

3、serializeImagePulls:并行拉取镜像。

4、evictionHard:kubelet 将在以下情况之一驱逐 Pod:

  • 当节点的可用内存降至 100MiB 以下时;
  • 当节点主文件系统的已使用 inode 超过 95%;
  • 当镜像文件系统的可用空间小于 15% 时;
  • 当节点主文件系统的 inode 超过 95% 正在使用时。

在示例中,通过只更改 evictionHard 的一个参数的默认值, 其他参数的默认值将不会被继承,他们会被设置为零。如果要提供自定义值,应该分别设置所有阈值。

imagefs 是一个可选的文件系统,容器运行时使用它来存储容器镜像和容器可写层。

二、启动kubelet进程

如果使用 kubeadm 初始化集群,在使用 kubeadm init 创建集群的时候请使用 kubelet-config。 启动 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.29, 如果未设置该变量而指定了 –config-dir,kubelet 将返回错误并且启动失败。 不能使用 kubelet 配置文件指定插件配置目录;只能使用 CLI 参数 –config-dir 进行设置。可以以类似于 kubelet 配置文件的方式使用 kubelet 配置目录。

合法的 kubelet 插件配置文件的后缀必须为 .conf。例如 99-kubelet-address.conf。

例如,可能想要为所有节点设置一个基准的 kubelet 配置,但可能想要自定义 address 字段。 可以按如下方式操作:

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 配置文件;
  • 排序的插件配置文件;
  • 在命令行中指定的特性门控(优先级最高)。

这将产生与之前示例中使用的单个配置文件相同的结果。

  • 广告合作

  • QQ群号:707632017

温馨提示:
1、本网站发布的内容(图片、视频和文字)以原创、转载和分享网络内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。邮箱:2942802716#qq.com(#改为@)。 2、本站原创内容未经允许不得转裁,转载请注明出处“站长百科”和原文地址。