DEV Community

Camila Figueira
Camila Figueira

Posted on • Updated on

#DevOps para noobs - Requests x limits no Kubernetes

No universo do Kubernetes, é essencial não apenas implantar suas aplicações, mas também gerenciar eficientemente os recursos que elas consomem.

Para isso, o Kubernetes oferece recursos como limits (limites) e requests (requisições), que permitem especificar tanto o mínimo quanto o máximo de recursos que uma aplicação pode utilizar. Vamos explorar esses conceitos neste artigo.

O que são Limits e Requests?

Em termos simples, os limits representam a quantidade máxima de recursos, como CPU e memória, que um container pode consumir. Por outro lado, as requests indicam a quantidade mínima de recursos que devem ser reservados para o container.

Image description

No YAML de um Pod, podemos definir esses valores da seguinte forma:

apiVersion: v1
kind: Pod
metadata:
  name: frontend
spec:
  containers:
  - name: app
    image: images.my-company.example/app:v4
   ** resources:
      requests:
        memory: "64Mi"
        cpu: "250m"
      limits:
        memory: "128Mi"
        cpu: "500m"**

Enter fullscreen mode Exit fullscreen mode

Neste exemplo, especificamos que nossa aplicação requer no mínimo 64 megabytes de memória e 250 milicores de CPU, enquanto o limite máximo é de 128 megabytes de memória e 500 milicores de CPU, ou seja no limit deixamos uma "brecha" caso ultrapassemos a quantidade de consumo definida no request.

Por que são importantes?

Ao definir esses valores, estamos dando informações valiosas ao Kubernetes Scheduler, que utiliza esses dados para decidir em qual nó do cluster a aplicação será implantada. Isso garante que a aplicação tenha os recursos necessários para funcionar adequadamente.

Kubernetes Scheduler

Sua função principal é selecionar os nós (nodes) do cluster nos quais os pods serão implantados. Isso é feito com base nos requisitos de recursos dos pods, como CPU e memória.

Image description

Gerenciando Recursos Excedentes

Mas e se nossa aplicação exceder os limites definidos?

  1. Throttling (Estrangulamento):
    O Kubernetes pode limitar a quantidade de recursos disponíveis para o container, o que pode resultar em um desempenho reduzido ou mais lento para a aplicação.

  2. Termino do Container: Em situações extremas, se uma aplicação consistentemente consome mais recursos do que o especificado em seus limites, o Kubernetes pode decidir terminar ou reiniciar o container. Isso é feito para proteger a integridade do cluster e garantir que outras aplicações tenham acesso aos recursos necessários.

Conclusão

Estabelecer limites e requisitos adequados para suas aplicações Kubernetes é crucial para garantir um desempenho eficiente e estável do cluster. Ao entender e utilizar corretamente esses recursos, você pode maximizar a utilização dos recursos disponíveis e garantir uma operação tranquila das suas aplicações no Kubernetes.

Referências:

  1. Memory, requests and limits in Kubernetes
  2. Documentação do Kubernetes

Top comments (15)

Collapse
 
jonathino2590 profile image
Jonathan Lopez Torres
Collapse
 
camilacodes profile image
Camila Figueira

massa! obrigada

Collapse
 
canhassi profile image
Canhassi

Muito bom, arrasou! Gostei muito do conteudo!

Collapse
 
camilacodes profile image
Camila Figueira

valeu primo <3

Collapse
 
phenriquesousa profile image
Pedro Henrique

Obrigado por compartilhar, prima <3

Collapse
 
camilacodes profile image
Camila Figueira

valeu primo <3

Collapse
 
clintonrocha98 profile image
Clinton Rocha

Ótimo conteúdo, parabéns!

Collapse
 
camilacodes profile image
Camila Figueira

valeu primo <3

Collapse
 
eduardofpaula profile image
Eduardo Farias de Paula

Vim pela H4art
Muito top, parabens pelo artigo!!

Collapse
 
camilacodes profile image
Camila Figueira

valeu primo <3

Collapse
 
reenatoteixeira profile image
Renato Teixeira

explicação massa demais! valeu por compartilhar 😄

Collapse
 
elziolima profile image
Elzio Lima

Vim pelo he4rt devs. tmj

Collapse
 
camilacodes profile image
Camila Figueira

valeu primo <3

Collapse
 
jeffmachado profile image
Jefferson Machado

Muuuuuito bom Camila! Obrigado por compartilhar :D

Collapse
 
camilacodes profile image
Camila Figueira

valeu Jeff!