本页面介绍了如何确定节点上有多少 CPU 和内存可用于在 Google Distributed Cloud 上运行工作负载。
预留资源
在每个集群节点上,Google Distributed Cloud 会为操作系统组件和核心 Kubernetes 组件预留以下资源:
- 80 个毫核 (millicore) + 1% 的 CPU 容量
- 330 MiB + 5% 的内存容量
例如,假设节点的默认容量为 4 个 CPU 核心和 8 GiB 内存。然后,Google Distributed Cloud 会预留:
- 80 个毫核 + 4 个核心的 1% = 120 个毫核
- 330 MiB + 8 GiB 的 5% = 730 MiB
操作系统和核心 Kubernetes 组件不会作为 pod 运行;它们会作为普通进程运行。除预留资源以外,剩余资源仍可供 pod 使用。
逐出阈值
如需确定 Pod 的可用内存量,您还必须考虑逐出阈值。Google Distributed Cloud 会将逐出阈值设置为 100 MiB。这意味着如果节点上的可用内存低于 100 MiB,则 kubelet
可能逐出一个或多个 pod。
可分配的资源
节点上可供 pod 使用的资源称为可分配资源。按如下方式计算可分配的资源:
Allocatable CPU = CPU Capacity - Reserved CPU
Allocatable Memory = Memory Capacity - Reserved Memory - Eviction Threshold
例如,假设节点具有 8 GiB 的内存容量,680 MiB 的预留内存和 100 MiB 的逐出阈值。则可分配的内存为:
8 GiB - 680 MiB - 100 MiB = 7220 MiB
可供您的工作负载使用的资源
节点的可分配资源是可供 pod 使用的资源。这包括运行工作负载的 Pod 和运行 Google Distributed Cloud 插件的 Pod。插件包括 Ingress 控制器、Ingress 服务、Connect Agent、网络组件、日志记录组件等。
若要确定给定节点上可用于工作负载的资源,请先从可分配的资源开始,然后减去插件所使用的资源。
挑战是插件无法在 Google Distributed Cloud 集群的节点之间均匀分布。一个节点可能具有三个插件,另一个节点可能具有十个插件。此外,各种插件需要不同数量的 CPU 和内存。
一般来说,您可以确定在节点上运行的插件需要:
- 200 个毫核的 CPU
- 100 MiB 内存
现在,您可以按如下方式计算节点上可用于工作负载的资源:
Allocatable CPU - 200 millicores
Allocatable memory - 100 MiB
某些节点要求为插件提供的资源数量多于上述一般规则所指示的数量。例如,一个节点运行一个 Prometheus 插件可能需要 2 GiB 的内存。但是,如果您的集群具有一些节点,则合理的做法是假设一般规则适用于大多数节点。
后续步骤
如需详细了解可分配资源的概念,请参阅在 Google Cloud 上运行 GKE 文档中的可分配资源。