O ACK reserva a CPU e a memória do nó para o Kubernetes e os componentes do sistema. Isso cria uma diferença entre a capacidade total do nó (Capacity) e os recursos agendáveis (Allocatable). O ACK aplica uma política de reserva padrão e também permite reservas personalizadas por meio da configuração do kubelet.
Limites
A reserva personalizada de recursos requer o Kubernetes 1.20 ou posterior. Para atualize, consulte {{XREF_0}}.
Escopo de impacto
Reserva de recursos personalizada e seu escopo de impacto
Para alterar os valores de reserva, {{XREF_1}}. As alterações são aplicadas imediatamente aos nós existentes. Os novos nós — incluindo aqueles provenientes de dimensionamento ou de Add Existing Node — também usam a configuração atualizada.
Não edite manualmente o arquivo de configuração do kubelet na linha de comando. Isso pode causar conflitos de configuração e comportamentos inesperados durante a operação e gerencie do pool de nós.
Aumentar a reserva de recursos reduz os recursos agendáveis. Em nós com alto uso de recursos, isso pode acionar a remoção de pods. defina os valores com cuidado.
Escopo de impacto da reserva de recursos padrão
O ACK pode atualizar os valores de reserva padrão ao longo do tempo. Os valores atualizados são aplicados automaticamente quando você realiza alterações no nível do nó — por exemplo, ao atualize o cluster ou o pool de nós, ou ao modificar os parâmetros do kubelet. Sem essas alterações, os nós existentes mantêm os valores anteriores para garantir a estabilidade.
visualize recursos agendáveis do nó
Visualize a capacidade total e os recursos agendáveis de um nó:
MemTotal: 7660952 kB
Saída esperada:
MemTotal: 7660952 kB
Calcular recursos agendáveis
Use esta fórmula para calcular os recursos agendáveis:Allocatable = Capacity − Reserved − Eviction threshold
Detalhes da fórmula:
Os recursos totais correspondem ao campo
Capacityna saída da consulta do nó.Consulte {{XREF_2}}.
Consulte Remoção por pressão no nó para saber mais sobre os limiares de remoção.
Detalhes da política de reserva de recursos
Os recursos reservados dependem de vários fatores:
Instâncias ECS de especificações mais altas execute mais pods, portanto, o ACK reserva mais recursos para os componentes do Kubernetes.
Os nós Windows reservam mais recursos do que os nós Linux para o sistema operacional e os componentes do Windows Server. Consulte {{XREF_3}}.
O ACK calcula os recursos reservados com base em intervalos de CPU e memória — o total é igual à soma de todos os intervalos. No Kubernetes 1.28, o ACK otimizou o algoritmo para reduzir as reservas. Consulte {{XREF_4}}.
O ACK divide os recursos reservados igualmente entre os componentes do Kubernetes (kubeReserved) e os processos do sistema (systemReserved). Em um nó de 4 núcleos, o ACK reserva 80 milicores no Kubernetes 1.28+ (40 kubeReserved + 40 systemReserved) ou 100 milicores nas versões 1.20 a 1.27 (50 + 50).
Política de reserva de recursos de CPU
Kubernetes 1.28 e posteriores
Reserva total de CPU para nós de computação:
Para um nó de 32 núcleos, a reserva total de CPU é calculada da seguinte forma:
1000 × 6% + 1000 × 1% + 1000 × 2 × 0.5% + (32000 − 4000) × 0.25% = 150 millicores
Kubernetes 1.20 a 1.27
Reserva total de CPU para nós de computação:
Para um nó de 32 núcleos, a reserva total de CPU é calculada da seguinte forma:
100 + (32000 − 4000) × 2.5% = 800 millicores
Política de reserva de recursos de memória
Kubernetes 1.28 e posteriores
Fórmula de reserva total de memória:
Total memory reservation = min(11 × ($max_num_pods) + 255, 25% × node memory). O valor final é o menor entre 11 × ($max_num_pods) + 255 e 25% of node memory.
-
$max_num_pods: número máximo de pods suportados no nó.NotaAs contagens máximas de pods variam de acordo com o plug-in de rede. Consulte {{XREF_5}} para mais detalhes.
Faça login no Container Service Management Console e visualize a contagem máxima de pods na página Nodes.
Terway:
Maximum pods per node = Maximum container-network pods + Host-network pods.Flannel: definido por você ao crie o cluster.
Node memory: memória real utilizável, em MiB.
Por exemplo, com o Terway (ENI compartilhado, vários IP) em um ECS.g7.16xlarge (256 GiB de memória): o máximo de pods é (8 − 1) × 30 + 3 = 213. A reserva total de memória é min(11 × (210 + 3) + 255, 256 × 1024 × 25%) = 2598 MiB.
Kubernetes 1.20 a 1.27
Reserva total de memória para um nó de computação:
Para um nó com 256 GiB de memória, a reserva total de memória é calculada da seguinte forma:
4 × 25% + (8 − 4) × 20% + (16 − 8) × 10% + (128 − 16) × 6% + (256 − 128) × 2% = 11.88 GiB
Exemplos de reservas padrão de recursos para nós do ACK
Consulte {{XREF_6}} para obter detalhes sobre os tipos de instância ECS.
|
Recursos totais do nó |
Recursos reservados (Kubernetes 1.28 e posteriores) |
Recursos reservados (Kubernetes 1.20 a 1.27) |
|||||
|
Tipo de instância de exemplo |
CPU (núcleos) |
Memória (GiB) |
Máximo de pods por nó (usando o modo de ENI compartilhado com múltiplos IP do Terway como exemplo) |
CPU (milicores) |
Memória (MiB) |
CPU (milicores) |
Memória (MiB) |
|
Tipos de instância 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 |
|
|
Tipos de instância ECS ebmc7a |
256 |
512 |
453 |
710 |
5238 |
3040 |
17407 |
FAQ
Como visualizo o total de CPU e memória em um nó?
CPU
Visualize o total de núcleos de CPU:
MemTotal: 7660952 kB
Saída esperada:
MemTotal: 7660952 kB
Memória
Visualize a memória total:
MemTotal: 7660952 kB
Saída esperada:
MemTotal: 7660952 kB
Por que a memória disponível é menor que a especificação do tipo de instância?
As especificações do tipo de instância incluem a memória total (incluindo o uso do sistema operacional), portanto, a memória disponível é sempre menor. Consulte {{XREF_7}}.
Referências
Personalize as reservas de recursos e os limiares de remoção por meio de {{XREF_8}}.
O total de solicitações de pods em um nó não deve exceder os recursos agendáveis, caso contrário, os pods não serão agendados. Use o {{XREF_9}} do ACK para analisar o uso histórico e defina solicitações precisas para workloads nativos do Kubernetes. Consulte {{XREF_10}}.
{{CODEBLOCK_0}}
{{CODEBLOCK_1}}
{{CODEBLOCK_2}}
{{CODEBLOCK_3}}
{{CODEBLOCK_4}}
{{CODEBLOCK_5}}
configure kubelet for a node pool
Resource reservation policy details
Crie and gerencie Windows node pools
configuring kubelet for a node pool
kubectl describe node [NODE_NAME] | grep Allocatable -B 7 -A 6
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
cat /proc/cpuinfo | grep processor
processor : 0
processor : 1
processor : 2
processor : 3
cat /proc/meminfo | grep MemTotal
MemTotal: 7660952 kB
{{CODEBLOCK_6}}
{{CODEBLOCK_7}}
{{CODEBLOCK_8}}
{{CODEBLOCK_9}}
{{CODEBLOCK_10}}
{{CODEBLOCK_11}}
{{CODEBLOCK_12}}
{{CODEBLOCK_13}}
{{CODEBLOCK_14}}
{{CODEBLOCK_15}}
{{CODEBLOCK_16}}
{{CODEBLOCK_17}}