Este conteúdo foi traduzido por máquina para sua conveniência e a Huawei Cloud não pode garantir que o conteúdo foi traduzido com precisão. Para exibir o conteúdo original, use o link no canto superior direito para mudar para a página em inglês.
Atualizado em 2024-11-28 GMT+08:00

Configuração de especificações do contêiner

Cenário

O CCE permite que você defina requisitos e limites de recursos, como CPU e RAM, para contêineres adicionados durante a criação da carga de trabalho. O Kubernetes também permite o uso do YAML para definir requisitos de outros tipos de recursos.

Solicitação e limite

Para CPU e Memory, os significados de Request e Limit são os seguintes:
  • Request: o sistema programa um pod para o nó que atende aos requisitos de implementação de carga de trabalho com base no valor da solicitação.
  • Limit: o sistema limita os recursos utilizados pela carga de trabalho com base no valor de limite.

Se um nó tiver recursos suficientes, o pod nesse nó poderá usar mais recursos do que o solicitado, mas não mais do que limitado.

Por exemplo, se você definir a solicitação de memória de um contêiner para 1 GiB e o valor de limite para 2 GiB, um pod será programado para um nó com CPUs de 8 GiB sem nenhum outro pod em execução. Nesse caso, o pod pode usar mais de 1 GiB de memória quando a carga é pesada, mas o uso da memória não pode exceder 2 GiB. Se um processo em um contêiner tentar usar mais de 2 GiB de recursos, o kernel do sistema tentará encerrar o processo. Como resultado, ocorre um erro de falta de memória (OOM).

Ao criar uma carga de trabalho, é aconselhável definir os limites superior e inferior dos recursos de CPU e memória. Se os limites de recursos superior e inferior não estiverem definidos para uma carga de trabalho, um vazamento de recursos dessa carga de trabalho tornará os recursos indisponíveis para outras cargas de trabalho implementadas no mesmo nó. Além disso, as cargas de trabalho que não possuem limites de recursos superiores e inferiores não podem ser monitoradas com precisão.

Descrição da configuração

Em cenários do mundo real, a proporção recomendada de Request para Limit é de cerca de 1:1,5. Para alguns serviços sensíveis, a proporção recomendada é de 1:1. Se a Request for muito pequena e o Limit for muito grande, os recursos de nó serão inscritos em excesso. Durante os picos de serviço, a memória ou a CPU de um nó podem ser usadas. Como resultado, o nó está indisponível.

  • CPU quota: a unidade de recursos da CPU é o núcleo, que pode ser expresso por quantidade ou um inteiro com sufixo com a unidade (m). Por exemplo, 0,1 núcleo na expressão de quantidade é equivalente a 100m na expressão. No entanto, o Kubernetes não permite recursos de CPU cuja precisão seja inferior a 1m.
    Tabela 1 Descrição das cotas de CPU

    Parâmetro

    Descrição

    CPU request

    Número mínimo de núcleos de CPU exigidos por um contêiner. Os recursos são agendados para o contêiner com base nesse valor. O contêiner pode ser programado para esse nó somente quando a CPU total disponível no nó for maior ou igual ao número de aplicações de CPU em contêiner.

    CPU limit

    Número máximo de núcleos de CPU disponíveis para um contêiner.

    Configuração recomendada

    CPU atual disponível de um nó ≥ soma dos limites de CPU de todos os contêineres no nó atual ≥ soma das solicitações de CPU de todos os contêineres no nó atual. Você pode ver as CPUs disponíveis reais de um nó no console do CCE (Resource Management > Nodes > Allocatable).

  • Memory quota: a unidade padrão de recursos de memória é byte. Você também pode usar um inteiro com o sufixo unitário, por exemplo, 100 Mi. Observe que a unidade faz distinção entre maiúsculas e minúsculas.
    Tabela 2 Descrição das cotas de memória

    Parâmetro

    Descrição

    Memory request

    Quantidade mínima de memória exigida por um contêiner. Os recursos são agendados para o contêiner com base nesse valor. O contêiner pode ser agendado para esse nó somente quando a memória total disponível no nó for maior ou igual ao número de aplicativos de memória em contêiner.

    Memory Limit

    Quantidade máxima de memória disponível para um contêiner. Quando o uso de memória excede o limite de memória configurado, a instância pode ser reiniciada, o que afeta o uso normal da carga de trabalho.

    Configuração recomendada

    Memória disponível real de um nó ≥ soma dos limites de memória de todos os contêineres no nó atual ≥ soma das solicitações de memória de todos os contêineres no nó atual. Você pode ver a memória disponível real de um nó no console do CCE (Resource Management > Nodes > Allocatable).

Os recursos alocáveis são calculados com base no valor da solicitação de recurso (Request), que indica o limite superior de recursos que podem ser solicitados por pods neste nó, mas não indica os recursos reais disponíveis do nó (para obter detalhes, consulte Exemplo de uso de cota de CPU e memória). A fórmula de cálculo é a seguinte:

  • CPU alocável = CPU total – CPU solicitada de todos os pods – CPU reservada para outros recursos
  • Memória alocável = memória total – memória solicitada de todos os pods – memória reservada para outros recursos

Exemplo de uso de cota de CPU e memória

Suponha que um cluster contém um nó com 4 núcleos de CPU e 8 GiB de memória. Dois pods (pod 1 e pod 2) foram implementados no cluster. O pod 1 com excesso de assinaturas de recursos (ou seja, Limit > Request). As especificações dos dois pods são as seguintes.

Pod

Solicitação de CPU

Limite de CPU

Solicitação de memória

Limite de memória

Pod 1

1 núcleo

2 núcleos

1 GiB

4 GiB

Pod 2

2 núcleos

2 núcleos

2 GiB

2 GiB

O uso de CPU e memória do nó é o seguinte:

  • CPUs alocáveis = 4 núcleos – (1 núcleo solicitado pelo pod 1 + 2 núcleos solicitados pelo pod 2) = 1 núcleo
  • Memória alocável = 8 GiB – (1 GiB solicitado pelo pod 1 + 2 GiB solicitado pelo pod 2) = 5 GiB

Nesse caso, o 1 núcleo restante de 5 GiB pode ser usado pelo próximo novo pod.

Se o pod 1 estiver sob carga pesada durante as horas de pico, ele usará mais CPUs e memória dentro do limite. Portanto, os recursos reais alocáveis são menos de 1 núcleo de 5 GiB.