节点作为集群的重要部分,需要运行 Kubernetes 系统组件和资源。为了运行这些必要组件和资源,容器服务需要占用一定的节点资源,保证业务稳定性。因此,您的节点资源总量与集群中可分配资源之间会存在差异。节点的规格越大,在节点上部署的 Pod 数量越多,从而节点需要预留更多资源。
为了保证节点的稳定性,容器服务会根据节点对应的云服务器(ECS)规格,在节点上预留内存、CPU、进程 ID(PID)资源给 Kubernetes 的相关组件(kubelet、kube-proxy、containerd )使用。具体的内存、CPU、PID 资源预留策略如下所示。
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
内存总量 | 预留资源 |
---|---|
内存总量 <= 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
预留资源 | 预留值(个) |
---|---|
kube-reserved | 1000 |
system-reserved | 1000 |