自定义节点池kubelet配置

更新时间: 2023-11-06 11:18:03

kubelet提供了一系列配置,用于调整节点行为。ACK集群支持修改节点池内节点的kubelet配置。修改完成后,节点池的节点会自动生效,节点池新增节点也会使用新的配置。本文介绍如何修改节点池内kubelet配置。

使用限制

kubelet自定义参数仅支持Kubernetes 1.20.4-aliyun.1版本及以上的ACK集群。如低于此版本,请升级ACK集群

注意事项

  • 如果未配置evictionHard、kubeReserved或systemReserved,系统则会使用默认值配置资源预留。默认值的计算方式,请参见节点资源预留策略

  • 资源预留配置的改变,可能会造成节点的可分配资源变少。对于资源水位较高的节点,可能会触发节点驱逐。

  • 不建议通过黑屏的方式修改kubelet自定义配置,自行修改的内容可能被节点管控任务覆盖。请您自行保证黑屏修改的kubelet自定义配置与节点管控任务的兼容性。

支持的kubelet参数

字段

含义

默认值

建议取值范围

allowedUnsafeSysctls

设置允许使用的非安全的sysctl或sysctl通配符(以*结尾的通配符模式)。是使用英文半角逗号(,)分隔的字符串序列。

重要

使用此参数前,请仔细评估相关风险并自行保证可用性。

不涉及

不涉及

containerLogMaxFiles

容器的日志文件个数上限。此值必须大于等于2,且容器运行时需为containerd。

5

[2, 10]

containerLogMaxSize

容器日志文件轮换生成新文件的最大阈值。容器运行时需为containerd。

10Mi

不涉及

eventRecordQPS

每秒可生成的事件数量。

5

[1, 50]

eventBurst

事件记录的个数的突发峰值上限。

10

[1, 100],且取值必须大于等于eventRecordQPS的值

featureGates

实验性特性的特性开关组。每个开关以key=value的形式表示。

重要

使用此参数前,请仔细评估相关风险并自行保证可用性。

不涉及

不涉及

kubeAPIQPS

与APIServer通信的每秒查询个数。

5

[1, 50]

kubeAPIBurst

每秒发送到APIServer的突发请求数量上限。

10

[1, 100],且取值必须大于等于kubeAPIQPS的值

registryPullQPS

镜像仓库的QPS上限。

5

[1, 50]

registryBurst

突发性镜像拉取的个数上限。

10

[1, 100],且取值必须大于等于registryPullQPS的值

serializeImagePulls

串行拉取镜像。

True

不涉及

cpuManagerPolicy

CPU管理器策略。

none

none或者static

evictionHard

触发Pod驱逐操作的一组硬性门限。

imagefs.available<15%,memory.available<300Mi,nodefs.available<10%,nodefs.inodesFree<5%

evictionSoft

设置一组驱逐阈值。

evictionSoftGracePeriod

设置一组驱逐宽限期。

说明

仅设置evictionSoft后才可以设置evictionSoftGracePeriod。

kubeReserved

Kubernetes系统预留的资源配置。

默认自动计算,详细信息请参见节点资源预留策略

不涉及

maxPods

Node能运行的Pod最大数量。

不涉及。取决于机器规格和容器网络规划等物理资源配置。

不涉及

systemReserved

系统预留的资源配置。

默认自动计算,详细信息请参见节点资源预留策略

不涉及

readOnlyPort

kubelet无鉴权只读端口。

  • 集群版本为1.26及以上时,默认值为0。

  • 集群版本为1.26以下时,默认值为10255。

0

关于开放kubelet容器监控只读端口(10255)的风险,请参见【产品变更】迁移低版本ACK集群监控端口至鉴权端口

操作步骤

  1. 登录容器服务管理控制台,在左侧导航栏选择集群

  2. 集群列表页面,单击目标集群名称,然后在左侧导航栏,选择节点管理 > 节点池

  3. 在节点池列表页面,单击目标节点池操作列下的更多> Kubelet配置

  4. 仔细阅读当前页面上的注意事项,单击自定义参数选择需要配置的参数,设置每批次的最大并行数,然后单击提交

    kubelet配置是分批次配置完成的,需要一定的执行时间。您可以在事件列表区域查看执行进度,并控制执行过程,例如暂停、继续、取消等

相关操作

在节点池kubelet自定义配置的下发过程中,您可以通过单击暂停对任务进行暂停。暂停时,正在配置中的Node会继续完成执行,还未执行的Node不会被执行自定义配置,直到任务继续。

说明

您可以使用暂停功能对已升级的节点进行验证,但建议您尽快完成自定义配置任务。处于暂停状态的任务会在7天后自动取消,相关的事件和日志信息也会被清理。

FAQ

自定义配置会被弃用吗?

随着Kubernetes版本的演进,可能会有部分参数或FeatureGate被标记弃用或者从代码移除。如果受容器服务 Kubernetes 版管理的自定义参数在新的版本不再适用时,相关配置会在集群升级期间被移除弃用。

如何启用配置文件的方式管理kubelet?

容器服务 Kubernetes 版会根据社区的最佳实践调整kubelet配置的管理方式。在1.20版本之后,逐步将已经被标记弃用的kubelet启动命令改为配置文件(/var/lib/kubelet/ack-managed-config.yaml)。

新增节点(新创建的节点和新添加的节点)会同时保留配置文件和/etc/kubernetes/kubelet-customized-args.conf,您可以通过触发自定义配置将节点统一成配置文件管理的方式。

如何自定义控制台不支持的参数?

不推荐黑屏操作的管理方式。如果您需要自定义额外的kubelet参数,您可以通过修改节点池Userdata的方式进行。Userdata修改完成后,新扩容的节点将会带有自定义的配置。

echo 'KUBELET_CUSTOMIZED_ARGS=""' > /etc/kubernetes/kubelet-customized-args.conf
systemctl daemon-reload
systemctl restart kubelet

如果您在控制台自定义配置页面和该文件中同时完成了同一配置项的自定义操作,该配置项的kubelet最终配置将以文件的配置为准。需要您自行保证该文件内容的正确性和兼容性,以避免因错误配置或者配置被新版本弃用导致节点不可用。

阿里云首页 容器服务 Kubernetes 版 ACK 相关技术圈