Você está vendo a documentação do Kubernetes versão: v1.23
Kubernetes v1.23 a documentação não é mais mantida ativamente. A versão que você está visualizando no momento é uma cópia estática. Para obter a documentação atualizada, consulte última versão.
Intervalos de limite
Por padrão, os cointêineres são executados com recursos computacionais ilimitados em um cluster Kubernetes. Com cotas de recursos, os administradores de cluster podem restringir o consumo e a criação de recursos baseado no namespace. Dentro de um namespace, pod ou contêiner pode haver o consumo de quantidade de CPU e memória definidos de acordo com a cota de recursos do namespace. Existe a preocupação de que um Pod ou contêiner possa monopolizar todos os recursos disponíveis, justamente por conta disso existe o conceito de Limit Range, ou intervalos de limite, que pode ser definido como uma política utilizada para a restrição de alocação de recursos (para pods ou contêineres) em um namespace.
Um LimitRange fornece restrições que podem:
- Aplicar o uso mínimo e máximo de recursos computacionais por pod ou contêiner em um namespace.
- Impor a solicitação de armazenamento mínimo e máximo por PersistentVolumeClaim em um namespace.
- Impor a proporção entre solicitação e limite para um recurso em um namespace.
- Definir a solicitação/limite padrão para recursos computacionais em um namespace e utilizá-los automaticamente nos contêineres em tempo de execução.
Ativando o LimitRange
O suporte ao LimitRange foi ativado por padrão desde o Kubernetes 1.10.
Um LimitRange é aplicado em um namespace específico quando há um objeto LimitRange nesse namespace.
O nome de um objeto LimitRange deve ser um nome de subdomínio DNS válido.
Visão geral do Limit Range
- O administrador cria um LimitRange em um namespace.
- Os usuários criam recursos como pods, contêineres e PersistentVolumeClaims no namespace.
- O controlador de admissão
LimitRanger
impõe padrões e limites para todos os pods e contêineres que não definem os requisitos de recursos computacionais e rastreia o uso para garantir que não exceda o mínimo, o máximo e a proporção de recursos definidos em qualquer LimitRange presente no namespace. - Se estiver criando ou atualizando um recurso (Pod, Container, PersistentVolumeClaim) que viola uma restrição LimitRange, a solicitação ao servidor da API falhará com um código de status HTTP
403 FORBIDDEN
e uma mensagem explicando a restrição violada. - Se um LimitRange for ativado em um namespace para recursos computacionais como
cpu
ememória
, os usuários deverão especificar solicitações ou limites para esses valores. Caso contrário, o sistema pode rejeitar a criação do pod. - As validações de LimitRange ocorrem apenas no estágio de Admissão de Pod, não em Pods em Execução.
Alguns exemplos de políticas que podem ser criadas utilizando os intervalos de limite são:
- Em um cluster de 2 nós com capacidade de 8 GiB de RAM e 16 núcleos, restrinja os Pods em um namespace para solicitar 100m de CPU com um limite máximo de 500m para CPU e solicitar 200Mi para memória com um limite máximo de 600Mi para memória.
- Defina o limite e a solicitação de CPU padrão para 150m e a solicitação padrão de memória para 300Mi para contêineres iniciados sem solicitações de CPU e memória em suas especificações.
Caso os limites totais do namespace sejam menores que a soma dos limites dos Pods/Contêineres, pode haver contenção por recursos. Nesse caso, os contêineres ou Pods não serão criados.
Nem a contenção nem as alterações em um LimitRange afetarão os recursos já criados.
Próximos passos
Consulte o documento de design LimitRanger para obter mais informações.
Para exemplos de uso de limites, leia:
- Como configurar restrições mínimas e máximas de CPU por namespace.
- Como configurar restrições de memória mínima e máxima por namespace.
- como configurar solicitações e limites de CPU padrão por namespace.
- como configurar solicitações e limites de memória padrão por namespace.
- como configurar o consumo mínimo e máximo de armazenamento por namespace.
- Um exemplo detalhado de configuração de cota por namespace.