自定义节点组 Kubelet 配置
更新时间:2025-03-18
当 Kubelet 参数默认配置无法满足业务需求、您希望对集群节点进行个性化调整时,您可以在节点组维度自定义节点的 Kubelet 参数配置,调整节点行为。例如,您可以调整集群资源预留以调配资源用量、自定义节点压力驱逐阈值以缓解集群资源不足等。CCE 支持通过控制台配置节点的 kubelet 参数。本文介绍如何配置节点的 Kubelet 参数。
前提条件
使用限制
- 已经放开自定义配置的 Kubelet 参数和集群版本相关,请参考支持的 Kubelet 参数。
- 升级集群后,已配置的 Kubelet 自定义参数不会变更。
注意事项
- 自定义 Kubelet 参数按批次变更节点配置,节点组中已有节点将即时生效,新增节点也会使用新配置。生效时,Kubelet进程将重启,可能会对节点运行和工作负载运行产生一定影响。请在业务低峰期操作。
- 如果未配置 evictionHard、kubeReserved 或 systemReserved,系统则会使用默认值配置资源预留。请参见CCE节点资源预留策略 。
- 资源预留配置的改变,可能会造成节点的可分配资源变少。对于资源水位较高的节点,可能会触发节点驱逐。
- 更新 Kubelet 参数过程中不支持对节点组进行操作。
支持的 Kubelet 参数
目前支持配置如下表所示的 Kubelet 自定义参数。
注意
修改 topologyManagerPolicy、topologyManagerScope 和特性门控(featurGates)中的 QoSResourceManager 参数会重启 Kubelet,并且以更改后的策略重新计算容器实例的资源分配,因此可能会导致已经运行的容器实例重启,甚至无法进行资源分配。请谨慎操作。 随着 Kubernetes 版本的演进,可能会有部分参数或 featureGates 被标记弃用或者从代码移除。如果受容器服务 Kubernetes 版管理的自定义参数在新的版本不再适用时,相关配置会在集群升级期间被移除弃用。
字段 | 说明 | 默认值 | 建议取值范围 |
---|---|---|---|
kubeReserved | kubernetes 系统预留的资源配置。 | 根据节点规格自动设置。 | 详情请参见CCE资源预留说明。 |
systemReserved | 系统预留的资源配置。 | 根据节点规格自动设置 | 详情请参见CCE资源预留说明。 |
allowedUnsafeSysctls | 设置允许使用的非安全的sysctl或sysctl通配符(以*结尾的通配符模式)。是使用英文半角逗号(,)分隔的字符串序列。 |
不涉及 | 支持下述前缀的 sysctl 配置: |
containerLogMaxFiles | 容器的日志文件个数上限。此值必须大于等于2,且容器运行时需为containerd。 | 5 | 2~10 |
containerLogMaxSize | 容器日志文件轮换生成新文件的最大阈值。容器运行时需为containerd。 | 10Mi | 不涉及 |
cpuCFSQuota | 允许为设置了 CPU 限制的容器实施CPU CFS 配额约束。 | true | 可选值 |
cpuCFSQuotaPeriod | 设置 CPU CFS 配额周期值。 需确保CustomCPUCFSQuotaPeriod特性门控已被启用。 |
100ms | 介于1毫秒和1秒之间,包含1毫秒和1秒。 |
cpuManagerPolicy | 指定节点的CPU 管理器策略。 | none | 可选值 |
eventBurst | 事件记录的个数的突发峰值上限。在遵从 event-qps 阈值约束的前提下临时允许事件记录达到此数目。仅在 event-qps 大于 0 时使用。 | 50 | 1~100 |
eventRecordQPS | 每秒可生成的事件数量。 | 50 | 1~50 |
evictionHard | 触发Pod驱逐操作的一组硬性门限。 | memory.available: "300Mi",nodefs.available: "10%", nodefs.inodesFree: "5%",imagefs.available: "15%" | 不涉及 |
evictionSoft | 设置一组驱逐阈值。 | 无 | 不涉及 |
evictionSoftGracePeriod | 设置一组驱逐宽限期。 |
"5m" | 不涉及 |
featureGates | 实验性特性的特性开关组。每个开关以key=value的形式表示。更多信息,请参见Feature Gates。 |
不涉及 | 不涉及 |
ImageGCHighThresholdPercent | 配置镜像的磁盘用量百分比阈值,一旦镜像用量超过此阈值,镜像垃圾收集会一直运行。配置时,此值需大于imageGCLowThresholdPercent取值。 | 85 | 60~95 |
ImageGCLowThresholdPercent | 配置镜像的磁盘用量百分比阈值,镜像用量低于此阈值时不会执行镜像垃圾收集操作。配置时,此值需小于imageGCHighThresholdPercent取值。 | 80 | 30~90 |
kubeAPIBurst | 每秒发送到APIServer的突发请求数量上限。 | 500 | 1~500 |
kubeAPIQPS | 与APIServer通信的每秒查询个数。 | 500 | 1~500 |
maxPods | Kubelet 上可以运行的最大 Pod 数量。 | 110 | 不涉及,取决于机器规格和容器网络规划等物理资源配置。 |
memoryManagerPolicy | 内存管理器需要使用的策略。 |
None | 可选值:
|
podPidsLimit | 单pod最大进程数。 | -1 | 取值根据用户实际情况来定,推荐默认值,-1表示无限制。 |
readOnlyPort | kubelet无鉴权只读端口。此端口上的服务不支持身份认证或鉴权。 注意:关于开放kubelet容器监控只读端口(10255)的风险。 |
0 | 0 |
registryPullQPS | 镜像仓库的QPS上限。如果 --registry-qps 大于 0,用来限制镜像仓库的 QPS 上限。设置为 0,表示不受限制。 | 5 | 1~50 |
registryBurst | 突发性镜像拉取的个数上限。在不超过 registration-qps 设置值的前提下暂时允许此参数所给的镜像拉取个数。仅在 --registry-qps 大于 0(默认值为 10)时使用 | 10 | 1~100 |
reservedMemory | NUMA节点内存预留列表。 |
不涉及 | 不涉及 |
resolvConf | 容器内使用的DNS 解析配置文件。 |
/etc/resolv.conf | 不涉及 |
runtimerequesttimeout | 用来设置除长期运行的请求(pull、 logs、exec 和 attach)之外所有运行时请求的超时时长。 | 120s | 不涉及 |
serializeImagePulls | 串行拉取镜像。建议不要在 docker 守护进程版本低于 1.9 或启用了 Aufs 存储后端的节点上更改默认值。 | true | 可选值: |
topologyManagerPolicy | 拓扑管理器策略。借助NUMA架构,数据可以被分配到相同的NUMA节点,以减少跨节点访问,提高系统性能。拓扑管理器可以作出与拓扑结构相对应的资源分配决定。更多信息,请参见控制节点上的拓扑管理策略。 | none | 可选值 |
topologyManagerScope | 拓扑管理器作用范围。 | container | 可选值 |
通过控制台自定义节点组 Kubelet 参数
自定义 Kubelet 参数生效时会重启 Kubelet 进程,可能会对业务产生一定影响。请在业务低峰期进行操作。
- 登录容器引擎控制台。
- 在左侧导航栏,选择集群列表。
- 在集群列表页面单击目标集群,进入集群管理页面。
- 在集群管理页面左侧导航栏中选择节点管理 > 节点组。
- 在节点组列表页面,单击目标节点组操作列下的更多>配置 Kubelet
- 仔细阅读当前页面上的注意事项,单击自定义参数选择需要配置的参数,设置每批次的最大并行数,然后单击提交,按照页面指引完成操作。
配置每批次的最大并行数后(推荐设置为10),Kubelet 配置将按批次对节点生效。执行需要一定时间,您可以在事件列表区域查看执行进度,并控制执行过程,例如暂停、继续、取消等。
您可以使用暂停功能对已升级的节点进行验证。执行暂停操作时,正在配置中的节点会继续完成执行;尚未执行的节点在任务继续前不会被执行自定义配置。
注意
建议尽快完成自定义配置任务。处于暂停状态的任务将在7天后自动取消,相关的事件和日志信息也会被清理。