云容器引擎需要占用一定的节点资源来运行相关组件(例如kubelet、kube-proxy、calico、Container Runtime等),从而使节点作为集群的一部分来运行。这会造成节点的资源总数与容器集群中可分配的资源数之间存在差异。本文介绍容器的节点资源预留策略、相关注意事项,以便在部署应用时合理设置Pod的请求资源量和限制资源量。
查询节点可分配资源
执行以下命令,查看节点的资源总量和可分配资源。
`kubectl describe node [NODE_NAME] | grep Allocatable -B 7 -A 6`
预期输出:
Capacity:
cpu: 4 #节点的CPU总核数。
ephemeral-storage:
123722704Ki #节点的临时存储总量,单位KiB。
hugepages-1Gi: 0
hugepages-2Mi: 0
memory: 7925980Ki #节点的内存总量,单位KiB。
pods: 64
Allocatable:
cpu: 3900m #节点可分配的CPU核数。
ephemeral-storage:
114022843818 #节点可分配的临时存储,单位KiB。
hugepages-1Gi: 0
hugepages-2Mi: 0
memory: 5824732Ki #节点可分配的内存,单位KiB。
pods: 64
计算节点可分配资源
可分配资源的计算公式:可分配资源(Allocatable) = 总资源(Capacity)-预留资源(Reserved)-驱逐阈值(Eviction-Threshold)