Garantir ResourceQuota em um Namespace

Garantir ResourceQuota em um Namespace

Estou executando um cluster compartilhado entre equipes e gostaria de garantir a cada equipe uma quantidade mínima de recursos, principalmente memória.

Seguindo oinstruçõesEu tentei usar o seguinte em seu namespace:

apiVersion: v1
kind: ResourceQuota
metadata:
  name: mem-quota
spec:
  hard:
    requests.memory: 8Gb

No entanto, ao ler mais documentos, isso não garante que eles tenham 8 Gb de memória para seus pods. Significa apenas que a soma do requests.memoryvalor dos pods não pode exceder 8 Gb. É possível que eles tenham 8 Gb configurados como acima, usem apenas 4 Gb e não consigam criar um novo pod se o cluster estiver no máximo em outro lugar e o novo pod não puder ser agendado.

Também por exemplo, posso criar um ResourceQuotacom requests.memoryvalor de 16Gi em um cluster com apenas 8Gi de memória total.

Existe alguma maneira de garantir a uma equipe uma quantidade fixa de memória apenas para uso deles?

Responder1

Significa apenas que a soma de suas solicitações de pods. O valor da memória não pode exceder 8 Gb

Sim, esta é a lógica do ResourceQuota. DeCompreendendo as cotas de recursos:

As cotas de recursos funcionam assim:

  • Os usuários colocam solicitações de recursos de computação em seus pods.A soma de todas as solicitações de recursos em todos os pods no mesmo namespace não deve exceder nenhum limite de recursos rígidos em qualquer documento de cota de recursos para o namespace.Observe que costumávamos verificar a cota de recursos calculando a soma dos limites de recursos dos pods, mas isso foi alterado para usar solicitações de recursos. A compatibilidade com versões anteriores para os pods criados anteriormente é preservada porque os pods que especificam apenas um limite de recursos têm suas solicitações de recursos padronizadas para corresponder aos limites definidos. O usuário só é cobrado pelos recursos solicitados na Cota de Recursos versus seus limites porque a solicitação é a quantidade mínima de recurso garantida pelo cluster durante o agendamento. Para obter mais informações sobre confirmação excessiva, consulte recursos de computação.

  • Se a criação de um pod fizer com que o namespace exceda qualquer um dos limites especificados na cota de recursos para esse namespace, a solicitação falhará com o código de status HTTP 403 FORBIDDEN.

  • Se a cota estiver habilitada em um namespace e o usuário não especificar solicitações no pod para cada um dos recursos para os quais a cota está habilitada, o POST do pod falhará com o código de status HTTP 403 FORBIDDEN. Dica: Use o controlador de admissão LimitRange para forçar os valores padrão dos limites (então as solicitações de recursos seriam iguais aos limites por padrão, consulte controlador de admissão) antes que a cota seja verificada para evitar esse problema.


No entanto, o artigo se expandirá um pouco nos casos em que você precisa dividir os recursos separadamente. E isso não é algo já implementado.

Cota e capacidade do cluster: Às vezes, podem ser desejadas políticas mais complexas, tais como:

  • dividir proporcionalmente os recursos totais do cluster entre várias equipes.
  • permitir que cada locatário aumente o uso de recursos conforme necessário, mas tenha um limite generoso para evitar o esgotamento acidental de recursos.
  • detecte a demanda de um namespace, adicione nós e aumente a cota.

Tais políticas poderiam ser implementadas usando ResourceQuota como um bloco de construção, escrevendo um 'controlador' que monitora o uso da cota e ajusta os limites rígidos da cota de cada namespace de acordo com outros sinais.


Espero que você precise escrever uma lógica personalizada no próprio controlador.

Por favor, dê uma olhada também emComo forçar namespaces do Kubernetes a terem ResourceQuotas usando OPA

informação relacionada