自定义Kubelet参数
更新时间:2024-06-20
Kubelet提供了一系列参数用于调整节点行为。本文介绍如何在创建节点时自定义Kubelet参数。
前提条件
- 已创建 CCE 集群,具体操作请参见创建CCE集群。
操作步骤
- 登录百度智能云管理控制台,进入产品服务>云原生>容器引擎 CCE,单击集群管理>集群列表,单击目标集群名称,进入"集群详情"页,在侧边栏单击节点管理>Worker。
-
在节点列表中单击添加节点操作,在高级设置中设置节点的自定义Kubelet参数,具体参数说明请见下方【支持的Kubelet参数】。
说明: kube-reserved和system-reserved为固定参数,且必须设置
- 单击确定,完成节点Kubelet参数配置。
支持的Kubelet参数
目前CCE支持自定义以下参数:
参数项 | 含义 | 默认值 | 建议取值范围 |
---|---|---|---|
kube-reserved | Kubernetes进程预留的资源配置 | cpu=50m,memory=100Mi | 详情请参见资源预留说明 |
system-reserved | 系统预留的资源配置 | cpu=50m,memory=100Mi | 详情请参见资源预留说明 |
registryPullQPS | 镜像仓库的QPS上限 | 5 | 1~50 |
registryBurst | 突发性镜像拉取的个数上限 | 10 | 1~100 |
podPidsLimit | 单pod最大进程数 | -1 | 取值根据用户实际情况来定,推荐默认值,-1表示无限制 |
eventRecordQPS | 每秒可生成的事件数量 | 50 | 1~50 |
eventBurst | 事件记录的个数的突发峰值上限 | 50 | 1~100 |
kubeAPIQPS | 与APIServer通信的每秒查询个数 | 500 | 1~500 |
kubeAPIBurst | 每秒发送到APIServer的突发请求数量上限 | 500 | 1~500 |
cpuManagerPolicy | CPU管理器策略 | none | none 或static |
topologyManagerPolicy | 拓扑管理器策略 | none | none 或 best-effort 或 restricted 或 single-numa-node |
topologyManagerScope | 拓扑管理器作用范围 | container | container 或 pod |
cpuCFSQuota | 为指定CPU限制的容器启用CPU CFS配额限制 | true | true 或 false |
maxPods | Kubelet 上可以运行的最大 Pod 数量 | 110 | 取值根据用户实际情况来定,推荐默认值 |
allowedUnsafeSysctls | 设置允许使用的非安全的sysctl或sysctl通配符(以结尾的通配符模式)。是使用英文半角逗号(,)分隔的字符串序列。 不安全的 sysctl 参数有“kernel.shm”、“kernel.msg”、“kernel.sem”、“fs.mqueue.”和“net.”。这些sysctl 参数都支持容器化,但是默认容器内不允许配置 注意:使用此参数前,请仔细评估相关风险并自行保证可用性。 |
无 | 无 |
containerLogMaxFiles | 容器的日志文件个数上限。此值必须大于等于2,且容器运行时需为containerd。 | 5 | [2, 10] |
containerLogMaxSize | 容器日志文件轮换生成新文件的最大阈值。容器运行时需为containerd。 | 无 | |
cpuCFSQuotaPeriod | 设置CPU CFS配额周期值。 需确保CustomCPUCFSQuotaPeriod特性门控已被启用 |
100毫秒 | 介于1毫秒和1秒之间,包含1毫秒和1秒。 |
evictionHard | 触发Pod驱逐操作的一组硬性门限。 | "imagefs.available": "15%", "memory.available": "100Mi", "nodefs.inodesFree": "5%",****"nodefs.available": "7%", |
无 |
evictionSoft | 设置一组驱逐阈值。 | 无 | 无 |
evictionSoftGracePeriod | 设置一组驱逐宽限期。 说明:需已设置evictionSoft。 |
无 | 无 |
featureGates | 实验性特性的特性开关组。 此字段可逐条更改文件 "k8s.io/kubernetes/pkg/features/kube_features.go" 中所给的内置默认值。每个开关以key=value的形式表示。更多信息,请参见Feature Gates。 重要: 使用此参数前,请仔细评估相关风险并自行保证可用性。 |
无 | 无 |
imageGCHighThresholdPercent | 配置镜像的磁盘用量百分比阈值,一旦镜像用量超过此阈值,镜像垃圾收集会一直运行。 配置时,此值需大于imageGCLowThresholdPercent取值。 |
85 | [60, 95] |
imageGCLowThresholdPercent | 配置镜像的磁盘用量百分比阈值,镜像用量低于此阈值时不会执行镜像垃圾收集操作。 配置时,此值需小于imageGCHighThresholdPercent取值。 |
80 | [30, 90] |
memoryManagerPolicy | 内存管理器需要使用的策略。 注意:此参数只支持Kubernetes 1.21及以上版本 |
None | 可选值: - None - Static 使用此策略时,需已完成以下操作: - MemoryManager特性门控已被启用。 - 已手动管理内存资源预留(systemReserved、kubeReserved、evictionHard、reservedMemory)并确保配置正确,即kube-reserved + system-reserved + eviction-hard = sum(reserved-memory),以避免节点不可用。 |
readOnlyPort | kubelet无鉴权只读端口。此端口上的服务不支持身份认证或鉴权。 注意:关于开放kubelet容器监控只读端口(10255)的风险 |
0 | 0 |
reservedMemory | NUMA节点内存预留列表。 注意:此参数只支持Kubernetes 1.21及以上版本 |
无 | 无 |
runtimerequesttimeout | 用来设置除长期运行的请求(pull、 logs、exec 和 attach)之外所有运行时请求的超时时长 | 300s | 无 |
serializeImagePulls | 串行拉取镜像。 | false | - false:以支持并行拉取镜像,提高Pod启动速度。 - True:支持串行拉取镜像。 |
resolv-conf | 容器内使用的DNS 解析配置文件 注意:如果此值设置为空字符串,则会覆盖 DNS 解析的默认配置, 本质上相当于禁用了 DNS 查询。 |
"/etc/resolv.conf" | 取值根据用户实际情况来定,推荐默认值 |