最近更新时间:2024-01-05 09:58:04
节点的部分资源需要运行一些必要的Kubernetes系统组件和Kubernetes系统资源,使该节点可作为您的集群的一部分。 为了运行这些必要组件和资源,容器服务需要占用一定的节点资源,保证业务稳定性。因此,您的节点资源总量(Capacity)与节点在Kubernetes中的可分配资源数量(Allocatable)之间会存在差异。节点的规格越大,在节点上部署的容器可能会越多,所以Kubernetes自身需预留更多的资源。
为了保证节点的稳定性,KCE集群节点上会根据节点的规格预留内存、CPU、进程 ID(PID)资源给Kubernetes的相关组件(Kubelet、Kube-proxy、Containerd以及Docker等)。
说明:
当节点上所有Pod消耗的内存上涨时,可能存在下列两种行为:
当节点可用内存低于驱逐阈值时,将会触发Kubelet驱逐Pod。关于Kubernetes中驱逐阈值的相关信息,请参见节点压力驱逐。
如果节点在Kubelet回收内存之前触发操作系统内存不足事件(OOM),系统会终止容器,但是与Pod驱逐不同,Kubelet会根据Pod的RestartPolicy重新启动它。
用户集群节点资源预留的计算规则为:
Allocatable = Capacity - Reserved - Eviction Threshold
即,节点资源可分配量=总量-预留值-驱逐阈值。
注意:
Allocatable :节点上可分配给pod的资源。
Capacity :Node的硬件资源总量。
Reserved :节点上预留给系统组件的资源。
Eviction Threshold:节点的驱逐阈值。
公式说明:
内存总量 | 预留资源 |
内存总量 <= 4 GiB | 内存总量 * 25% |
4 GiB < 内存总量 <= 8 GiB | 4 GiB 25% + (内存总量 - 4) GiB 20% |
8 GiB < 内存总量 <= 16 GiB | 4 GiB 25% + (8-4) GiB 20% + (内存总量 - 8) GiB * 10% |
16 GiB < 内存总量 <= 128 GiB | 4 GiB 25% + (8-4) GiB 20% + (16-8) GiB 10% + (内存总量 - 16) GiB 6% |
内存总量 > 128 GiB | 4 GiB 25% + (8-4) GiB 20% + (16-8) GiB 10% + (128-16) GiB 6% + (内存总量 - 128) GiB * 2% |
示例:
以 ecs.g2i.28xlarge 规格的节点为例,该节点内存为 448 GiB,则内存预留资源计算结果为:4 × 25% + (8-4) × 20% + (16-8) × 10% + (128-16) × 6% + (448-128) × 2% = 15.72 GiB
CPU 总量 | 预留资源 |
CPU 总量 <= 4 Core | 100 milliCore = 0.1 Core |
4 Core < CPU 总量 <= 64 Core | 0.1 Core + (CPU 总量–4) Core * 2.5% |
64 Core < CPU 总量 <= 128 Core | 0.1 Core + (64-4) Core 2.5% + (CPU 总量–64) Core 1.25% |
CPU 总量 > 128 Core | 0.1 Core + (64-4) Core 2.5% + (128-64) Core 1.25% + (CPU 总量–128) Core * 0.5% |
示例:
以 ecs.g2i.28xlarge 规格的节点为例,该节点 CPU 为 112 Core,则 CPU 预留资源计算结果为:0.1 + (64-4) × 2.5% + (112-64) × 1.25% = 2.2 Core
预留资源 | 预留值(个) |
Kube-reserved | 1000 |
System-reserved | 1000 |
KCE对每个节点预留了额外的100Mi给Kubelet驱逐所用,常见配置的资源预留列表如下:
CPU:
节点总量/单位:核 | 2 | 4 | 8 | 16 | 32 |
节点预留量/单位:核 | 0.07 | 0.08 | 0.09 | 0.11 | 0.15 |
Memory:
节点总量/单位:Gib | 4 | 8 | 16 | 32 | 64 |
节点预留量/单位:Mib | 1024 | 1843 | 2662 | 3645 | 5611 |
用户可以通过自定义 Kubelet 参数的方式来修改 kube-reserved
以达到修改节点预留资源的目的,建议给节点组件预留充足的 CPU 和内存资源来保证节点的稳定性。
纯净模式