Tous les produits
Search
Centre de documentation

Container Service for Kubernetes:Node Resource Reservation Policy

Dernière mise à jour :Aug 11, 2026

ACK réserve du CPU et de la mémoire sur les nœuds pour Kubernetes et les composants système. Cela crée un écart entre la capacité totale du nœud (Capacity) et les ressources planifiables (Allocatable). ACK applique une politique de réservation par défaut et prend également en charge les réservations personnalisées via la configuration de kubelet.

Limites

La réservation personnalisée des ressources nécessite Kubernetes 1.20 ou une version ultérieure. Pour mettre à niveau votre cluster, consultez la rubrique Mise à niveau manuelle d'un cluster.

Portée de l'impact

Portée de l'impact de la réservation personnalisée des ressources

Pour modifier les valeurs de réservation, configurez kubelet pour un pool de nœuds. Les modifications s'appliquent immédiatement aux nœuds existants. Les nouveaux nœuds, y compris ceux créés lors d'une mise à l'échelle automatique ou ajoutés via l'option Add Existing Node, utilisent également la configuration mise à jour.

Important
  • Ne modifiez pas manuellement le fichier de configuration de kubelet en ligne de commande. Cette opération risque de provoquer des conflits de configuration et un comportement inattendu lors des opérations et de la maintenance du pool de nœuds.

  • L'augmentation de la réservation des ressources réduit les ressources attribuables. Sur les nœuds dont l'utilisation des ressources est élevée, cela peut déclencher l'éviction des pods. Définissez les valeurs avec précaution.

Portée de l'impact de la réservation des ressources par défaut

ACK peut mettre à jour les valeurs de réservation par défaut au fil du temps. Les nouvelles valeurs s'appliquent automatiquement lorsque vous effectuez des modifications au niveau des nœuds, par exemple lors de la mise à niveau du cluster ou du pool de nœuds, ou lors de la modification des paramètres de kubelet. Sans de telles modifications, les nœuds existants conservent les valeurs précédentes pour garantir la stabilité.

Afficher les ressources attribuables d'un nœud

Affichez la capacité totale et les ressources attribuables d'un nœud :

kubectl describe node [NODE_NAME] | grep Allocatable -B 7 -A 6

Sortie attendue :

Capacity:
  cpu:                4                 # Total CPU cores on the node.
  ephemeral-storage:  123722704Ki       # Total ephemeral storage on the node, in KiB.
  hugepages-1Gi:      0
  hugepages-2Mi:      0
  memory:             7925980Ki         # Total memory on the node, in KiB.
  pods:               64
Allocatable:
  cpu:                3900m             # Allocatable CPU cores.
  ephemeral-storage:  114022843818      # Allocatable ephemeral storage, in bytes.
  hugepages-1Gi:      0
  hugepages-2Mi:      0
  memory:             5824732Ki         # Allocatable memory, in KiB.
  pods:               64

Calculer les ressources attribuables

Utilisez cette formule pour calculer les ressources attribuables :Allocatable = Capacity − Reserved − Eviction threshold

Détails de la formule :

Détails de la politique de réservation des ressources

Les ressources réservées dépendent de plusieurs facteurs :

  • Les instances ECS de spécifications plus élevées exécutent davantage de pods ; ACK réserve donc plus de ressources pour les composants Kubernetes.

  • Les nœuds Windows réservent plus de ressources que les nœuds Linux pour le système d'exploitation et les composants Windows Server. Consultez la rubrique Création et gestion de pools de nœuds Windows.

ACK calcule les ressources réservées en fonction des plages de CPU et de mémoire ; le total correspond à la somme de toutes les plages. Dans Kubernetes 1.28, ACK a optimisé l'algorithme afin de réduire les réservations. Consultez la rubrique Mise à niveau manuelle d'un cluster.

Les ressources réservées sont réparties équitablement entre les composants Kubernetes (kubeReserved) et les processus système (systemReserved). Sur un nœud à 4 cœurs, ACK réserve 80 millicœurs dans Kubernetes 1.28 et versions ultérieures (40 pour kubeReserved + 40 pour systemReserved), ou 100 millicœurs dans les versions 1.20 à 1.27 (50 + 50).

Politique de réservation des ressources CPU

Kubernetes 1.28 et versions ultérieures

Réservation totale du CPU pour les nœuds de calcul :

image

Pour un nœud à 32 cœurs, la réservation totale du CPU se calcule comme suit :

1000 × 6% + 1000 × 1% + 1000 × 2 × 0.5% + (32000 − 4000) × 0.25% = 150 millicores

Kubernetes 1.20 à 1.27

Réservation totale du CPU pour les nœuds de calcul :

image

Pour un nœud à 32 cœurs, la réservation totale du CPU se calcule comme suit :

100 + (32000 − 4000) × 2.5% = 800 millicores

Politique de réservation des ressources mémoire

Kubernetes 1.28 et versions ultérieures

Formule de réservation totale de la mémoire :

Total memory reservation = min(11 × ($max_num_pods) + 255, 25% × node memory). La valeur finale correspond au plus petit résultat entre 11 × ($max_num_pods) + 255 et 25% of node memory.

  • $max_num_pods : nombre maximal de pods pris en charge sur le nœud.

    Remarque

    Le nombre maximal de pods varie selon le plug-in réseau. Consultez la rubrique Nombre maximal de pods par nœud pour plus de détails.

    Connectez-vous à la Container Service Management Console et consultez le nombre maximal de pods sur la page Nodes .
    • Terway : Maximum pods per node = Maximum container-network pods + Host-network pods.

    • Flannel : défini par vous-même lors de la création du cluster.

  • Node memory : mémoire utilisable réelle, en MiB.

Par exemple, avec Terway (ENI partagée, plusieurs adresses IP) sur une instance ecs.g7.16xlarge (mémoire de 256 GiB) : nombre maximal de pods = (8 − 1) × 30 + 3 = 213. Réservation totale de la mémoire = min(11 × (210 + 3) + 255, 256 × 1024 × 25%) = 2598 MiB.

Kubernetes 1.20 à 1.27

Réservation totale de la mémoire pour un nœud de calcul :

image

Pour un nœud disposant de 256 GiB de mémoire, la réservation totale de la mémoire se calcule comme suit :

4 × 25% + (8 − 4) × 20% + (16 − 8) × 10% + (128 − 16) × 6% + (256 − 128) × 2% = 11.88 GiB

Exemple de réservations de ressources par défaut pour les nœuds ACK

Remarque

Consultez la rubrique Familles d'instances pour obtenir des détails sur les types d'instances ECS.

Ressources totales du nœud

Ressources réservées (Kubernetes 1.28 et versions ultérieures)

Ressources réservées (Kubernetes 1.20 à 1.27)

Type d'instance d'exemple

CPU (cœurs)

Mémoire

(GiB)

Nombre maximal de pods par nœud

(exemple avec le mode ENI partagée multi-IP de Terway)

CPU

(millicœur)

Mémoire

(MiB)

CPU (millicœurs)

Mémoire (MiB)

Types d'instance ECS c7

2

4

15

70

420

100

1024

4

8

48

80

783

100

1843

8

16

48

90

783

200

2662

16

32

213

110

2598

400

3645

32

64

213

150

2598

800

5611

64

128

213

230

2598

1600

9543

128

256

423

390

4908

2400

12164

Types d'instance ECS ebmc7a

256

512

453

710

5238

3040

17407

FAQ

Comment afficher le total des cœurs CPU et de la mémoire sur un nœud ?

CPU

Affichez le nombre total de cœurs CPU :

cat /proc/cpuinfo | grep processor

Sortie attendue :

processor       : 0
processor       : 1
processor       : 2
processor       : 3

Mémoire

Affichez la mémoire totale :

cat /proc/meminfo | grep MemTotal

Sortie attendue :

MemTotal:        7660952 kB

Pourquoi la mémoire disponible est-elle inférieure à la spécification du type d'instance ?

Les spécifications des types d'instance incluent la mémoire totale (y compris l'utilisation par le système d'exploitation) ; la mémoire disponible est donc toujours inférieure. Consultez la rubrique Pourquoi la mémoire affichée diffère-t-elle des spécifications du type d'instance après l'achat d'une instance ?.

Références

  • Personnalisez les réservations de ressources et les seuils d'éviction en configurant kubelet pour un pool de nœuds.

  • Le total des demandes de ressources des pods sur un nœud ne doit pas dépasser les ressources attribuables, sous peine d'échec de la planification des pods. Utilisez la fonctionnalité resource profiling d'ACK pour analyser l'utilisation historique et définir des demandes précises pour les charges de travail Kubernetes natives. Consultez la rubrique Création d'un déploiement.