Descripción de los recursos de nodos reservados
Algunos de los recursos del nodo necesitan ejecutar algunos componentes y recursos necesarios del sistema de Kubernetes para que el nodo forme parte de su clúster. Por lo tanto, el número total de recursos de nodo y el número de recursos de nodo asignables en Kubernetes son diferentes. Cuanto más grandes sean las especificaciones del nodo, más se desplegará los contenedores en el nodo. Por lo tanto, es necesario reservar más recursos de nodo para ejecutar los componentes de Kubernetes.
Para garantizar la estabilidad del nodo, se reservará una cierta cantidad de recursos de nodo de CCE para los componentes de Kubernetes (como kubelet, kube-proxy y docker) en función de las especificaciones del nodo.
CCE calcula los recursos que se pueden asignar a los nodos de usuario de la siguiente manera:
Recursos asignables = Importe total - Importe reservado - Umbral de desalojo
El umbral de desahucio de memoria se fija en 100 MB.
Cuando aumenta la memoria consumida por todos los pods de un nodo, pueden producirse los siguientes comportamientos:
- Cuando la memoria disponible del nodo es menor que el umbral de desalojo, kubelet se activa para desalojar el pod. Para obtener más información sobre el umbral de desalojo en Kubernetes, consulte Desalojo de presión de nodo.
- Si un nodo activa un evento de insuficiencia de memoria del sistema operativo (OOM) antes de que el kubelet recupere la memoria, el sistema termina el contenedor. Sin embargo, a diferencia del desalojo del pod, kubelet reinicia el contenedor basado en el RestartPolicy del pod.
Reglas para la reserva de memoria de nodo (v1)
Para grupos de v1.21.4-r0, v1.23.3-r0 o posteriores, el modelo de reserva de memoria de nodo se optimiza a V2. Para obtener más información, véase Reglas para reservar memoria de nodo (v2).
Puede utilizar la siguiente fórmula para calcular cuánta memoria debe reservar para ejecutar contenedores en un nodo:
Cantidad total reservada = memoria reservada para componentes del sistema + memoria reservada para kubelet para gestionar pods
Memoria total (TM) |
Memoria reservada para componentes del sistema |
---|---|
TM ≤ 8 GB |
0 MB |
8 GB < TM ≤ 16 GB |
[(TM – 8 GB) x 1024 x 10%] MB |
16 GB < TM ≤ 128 GB |
[8 GB x 1024 x 10% + (TM – 16 GB) x 1024 x 6%] MB |
TM > 128 GB |
(8 GB x 1024 x 10% + 112 GB x 1024 x 6% + (TM – 128 GB) x 1024 x 2%) MB |
Memoria total (TM) |
Número de pods |
Memoria reservada para kubelet |
---|---|---|
TM ≤ 2 GB |
- |
TM x 25% |
TM > 2 GB |
0 < Máx. pods en un nodo ≤ 16 |
700 MB |
16 < Máx. pods en un nodo ≤ 32 |
[700 + (máx. pods en un nodo – 16) x 18.75] MB |
|
32 < Máx. pods en un nodo ≤ 64 |
[1024 + (máx. pods en un nodo - 32) x 6.25] MB |
|
64 < Máx. pods en un nodo ≤ 128 |
[1230 + (máx. pods en un nodo - 64) x 7.80] MB |
|
Máx. pods en un nodo > 128 |
[1740 + (máx. pods en un nodo - 128) x 11.20] MB |
Para un nodo de pequeña capacidad, ajuste el número máximo de instancias en función de los requisitos del sitio. Como alternativa, al crear un nodo en la consola de CCE, puede ajustar el número máximo de instancias para el nodo en función de las especificaciones del nodo.
Reglas para reservar memoria de nodo (v2)
Para grupos de v1.21.4-r0, v1.23.3-r0 o posteriores, el modelo de reserva de memoria de nodo se optimiza a V2 y se puede ajustar dinámicamente usando los parámetros de grupo de nodos kube-reserved-mem y system-reserved-mem. Para obtener más información, véase Gestión de un grupo de nodos.
La memoria de nodo reservado total del modelo V2 es igual a la suma de la reservada para el SO y la reservada para que CCE gestione los pods.
La memoria reservada incluye las partes básicas y flotantes. Para el sistema operativo, la memoria flotante depende de las especificaciones del nodo. Para CCE, la memoria flotante depende del número de pods en un nodo.
Reservado para |
Básico/flotante |
Reserva |
Utilizada por |
---|---|---|---|
SO |
Básicos |
400 MB (fijo) |
Componentes de servicio del sistema operativo como sshd y systemd-journald. |
Flotante (dependiendo de la memoria del nodo) |
25MB/GB |
Kernel |
|
CCE |
Básicos |
500 MB (fijo) |
Componentes del motor de contenedores, como kubelet y kube-proxy, cuando el nodo está descargado |
Flotante (dependiendo del número de pods en el nodo) |
Docker: 20 MB/pod containerd: 5 MB/pod |
Componentes del motor de contenedores cuando aumenta el número de pods
NOTA:
Cuando el modelo v2 reserva memoria para un nodo de forma predeterminada, el número máximo predeterminado de pods se estima en función de la memoria. Para obtener más información, véase Número máximo predeterminado de pods en un nodo. |
Reglas para reservar CPU de nodo
Núcleos totales de la CPU (Total) |
Núcleos de CPU reservados |
---|---|
Total ≤ 1 núcleo |
Total x 6% |
1 núcleo < Total ≤ 2 núcleos |
1 núcleo x 6% + (Total - 1 núcleo) x 1% |
2 núcleos < Total ≤ 4 núcleos |
1 núcleo x 6% + 1 núcleo x 1% + (Total - 2 núcleos) x 0.5% |
Total > 4 núcleos |
1 núcleo x 6% + 1 núcleo x 1% + 2 núcleos x 0.5% + (Total - 4 núcleos) x 0.25% |