TKE 需要占用节点一定的资源来运行相关组件(例如:kubelet、kube-proxy、Runtime 等),因此会造成节点资源总数与集群中可分配资源数存在差异。本文介绍 TKE 集群中的节点资源预留策略和注意事项,以便在部署应用时合理设置 Pod 的请求资源量和限制资源量。
ALLOCATABLE = CAPACITY - RESERVED - EVICTION - THRESHOLD
节点 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 替换为您要检查的节点的名称。输出结果包含Capacity
和Allocatable
字段,并提供了针对 CPU、内存和临时存储的测量结果。
kubectl describe node NODE_NAME | grep Allocatable -B 7 -A 6
本页内容是否解决了您的问题?