容器服务 节点资源预留说明

TKE 需要占用节点一定的资源来运行相关组件(例如:kubelet、kube-proxy、Runtime 等),因此会造成节点资源总数与集群中可分配资源数存在差异。这里说明 TKE 集群中的节点资源预留策略和注意事项,以便在部署应用时合理设置 Pod 的请求资源量和限制资源量。

相关产品
容器服务 产品页,含版本规格、价格与购买入口。

注意:说明:

注意:本节节点资源预留的计算策略仅针对普通节点和原生节点生效。

一、计算公式

ALLOCATABLE = CAPACITY – RESERVED – EVICTION – THRESHOLD

默认情况下,除 RESERVED 外为100MiB,即 ALLOCATABLE = CAPACITY – RESERVED – 100MiB。

RESERVED 部分通过 kubelet 的参数 kube-reserved 指定,规则如下:

二、节点 CPU 预留规则

节点 CPU 预留规则 说明
1c ≤ CPU ≤ 4c 固定预留 0.1c –
4c < CPU ≤ 64c 4c 以下预留 0.1c,超过 4c 部分预留 2.5% 例如:CPU = 32c预留资源 = 0.1 + (32 – 4) * 2.5% = 0.8c
64c < CPU ≤ 128c 4c 以下预留 0.1c,4c~64c 预留 2.5%,超过 64c 部分预留 1.25% 例如:CPU = 96c预留资源 = 0.1 + (64 – 4) * 2.5% + (96 – 64) * 1.25% = 2c
CPU > 128c 4c 以下预留 0.1c,4c~64c 预留 2.5%,64c~128c 预留 1.25%,超过 128c 部分预留 0.5% 例如:CPU = 196c预留资源 = 0.1 + (64 – 4) * 2.5% + (128 – 64) * 1.25% + (196 – 128) * 0.5%= 2.74c

三、节点内存预留规则

节点内存 预留规则 说明
1G ≤ 内存 ≤ 4G 固定预留 25% 例如:内存 = 2G预留资源 = 2 * 25% = 512MB
4G < 内存 ≤ 8G 4G 以下预留 25%,超过 4G 部分预留 20% 例如:内存 = 8G预留资源 = 4 * 25% + (8 – 4) * 20% = 1843MB
8G < 内存 ≤ 16G 4G 以下预留 25%,4G~8G 预留 20%,超过 8G 部分预留 10% 例如:内存 = 12G预留资源 = 4 * 25% + (8 – 4) * 20% + (12 – 8) * 10%= 2252MB
16G < 内存 ≤ 128G 4G 以下预留 25%,4G~8G 预留 20%,8G~16G 预留 10%,超过 16G 部分预留 6% 例如:内存 = 32G预留资源 = 4 * 25% + (8 – 4) * 20% + (16 – 8) * 10% + (32 – 16) * 6% = 3645MB
内存 > 128G 4G 以下预留 25%,4G~8G 预留 20%,8G~16G 预留 10%,16G~128G 预留 6%,超过 128G 部分预留 2% 例如:内存 = 320G预留资源 = 4 * 25% + (8 – 4) * 20% + (16 – 8) * 10% + (128 – 16) * 6% + (320 – 128) * 2% = 13475MB

注意:说明:

注意:用户可以通过自定义 kubelet 参数的方式来修改 kube-reserved 以达到修改节点预留资源的目的,建议给节点组件预留充足的 CPU 和内存资源来保证节点的稳定性。

四、查看节点可分配资源

检查集群中可用的节点可分配资源,请执行以下命令,并将 NODE_NAME 替换为你要检查的节点的 IP 地址。输出结果包含Capacity和Allocatable字段,并提供了针对 CPU、内存和临时存储的测量结果。

kubectl describe node NODE_NAME | grep Allocatable -B 7 -A 6

五、节点弹性伸缩组件(cluster-autoscaler)资源预留说明

cluster-autoscaler 在弹性扩容节点时,为避免扩容出来的节点实际无法调度,也会考虑节点的资源预留,在满足预留后仍可调度的情况下才会扩容。

注意:说明:

注意:尽管可以通过给节点设置自定义 kubelet 参数kube-reserved的方式来修改节点创建后预留量,但 cluster-autoscaler 会忽略此配置,仍在上述规则基础上进行计算。

CPU 资源部分,预留策略和上述规则保持一致。

内存资源部分,在上述规则基础上,会额外考虑操作系统本身对内存资源的预留,规则如下:

节点内存 预留规则 说明
1800M ≤ 内存 ≤ 64G 固定预留 256M 例如:内存 = 2G,额外预留资源 = 256M
64G < 内存 ≤ 128G 固定预留 512M 例如:内存 = 128G,额外预留资源 = 512MB
内存 > 128G 固定预留 768M 例如:内存 = 256G,额外预留资源 = 768M

六、注意事项

·该预留策略针对 K8s 1.16及以上版本、2022年6月24日后创建的新增节点自动生效,无需手动配置。

·为保证业务稳定性,该预留策略不会对已有节点自动生效。因为该资源预留的计算方式可能会造成节点的可分配资源变少,对于资源水位较高的节点,可能会触发节点驱逐。

·若你希望对已有节点应用该资源预留策略,你可以通过 容器服务控制台 将该节点在不直接销毁的情况下移出集群,然后添加已有节点,新添加的节点会默认执行该资源预留策略。

赞 (0)
上一篇 4天前
下一篇 4天前