En esta página, se muestra cómo determinar la cantidad de CPU y memoria disponible en un nodo para ejecutar tus cargas de trabajo en Google Distributed Cloud.
Recursos reservados
En cada nodo del clúster, Google Distributed Cloud reserva los siguientes recursos para los componentes del sistema operativo y los componentes principales de Kubernetes:
- 80 millicores + el 1% de la capacidad de CPU
- 330 MiB + el 5% de la capacidad de memoria
Por ejemplo, supongamos que un nodo tiene la capacidad predeterminada de 4 núcleos de CPU y 8 GiB de memoria. Luego, Google Distributed Cloud reserva lo siguiente:
- 80 millicores + el 1% de 4 núcleos = 120 millicores
- 330 MiB + el 5% de 8 GiB = 730 MiB
Los componentes del sistema operativo y los componentes principales de Kubernetes no se ejecutan como Pods, sino que se ejecutan como procesos comunes. Los recursos restantes, además de estos recursos reservados, están disponibles para los Pods.
Límite de expulsiones
A fin de determinar la cantidad de memoria disponible para los pods, también debes considerar el límite de expulsiones.
Google Distributed Cloud establece un umbral de expulsión de 100 MiB. Esto significa que si la memoria disponible en un nodo está por debajo del límite de 100 MiB, el kubelet
podría expulsar uno o más Pods.
Recursos asignables
Los recursos en un nodo que están disponibles para Pods se denominan recursos asignables. Calcula los recursos asignables de la siguiente manera:
Allocatable CPU = CPU Capacity - Reserved CPU
Allocatable Memory = Memory Capacity - Reserved Memory - Eviction Threshold
Por ejemplo, supongamos que un nodo tiene 8 GiB de capacidad de memoria, 680 MiB de memoria reservada y un límite de expulsiones de 100 MiB. Entonces, la memoria asignable es la siguiente:
8 GiB - 680 MiB - 100 MiB = 7220 MiB
Recursos disponibles para las cargas de trabajo
Los recursos asignables de un nodo son los recursos disponibles para los Pods. Esto incluye los Pods que ejecutan tus cargas de trabajo y los que ejecutan los complementos de Google Distributed Cloud. Los complementos incluyen el controlador y el servicio de entrada, el agente de Connect, los componentes de herramientas de redes, los componentes de registro y mucho más.
En un nodo determinado, a fin de determinar los recursos disponibles para tus cargas de trabajo, comienza con los recursos asignables y, luego, resta los recursos que usan los complementos.
El desafío es que los complementos no se distribuyen de manera uniforme entre los nodos de un clúster de Google Distributed Cloud. Un nodo puede tener tres complementos, y otro nodo puede tener diez complementos. Además, los distintos complementos requieren diferentes cantidades de CPU y memoria.
Como regla general, puedes calcular que los complementos que se ejecutan en un nodo requieren lo siguiente:
- 200 millicores de CPU
- 100 MiB de memoria
Ahora puedes calcular los recursos disponibles en un nodo para tus cargas de trabajo de la siguiente manera:
Allocatable CPU - 200 millicores
Allocatable memory - 100 MiB
Algunos nodos requieren más recursos para los complementos de los que indica la regla general anterior. Por ejemplo, un nodo puede ejecutar un complemento de Prometheus que requiere 2 GiB de memoria. Sin embargo, si tu clúster tiene más de unos pocos nodos, es razonable suponer que la regla general se aplica a la mayoría de los nodos.
¿Qué sigue?
Para obtener más información sobre el concepto de recursos asignables, consulta Recursos asignables en la documentación de GKE en Google Cloud.