Sobes.tech
Middle

O que são limites e solicitações no Kubernetes?

sobes.tech IA

Resposta da IA

Os limites (limits) e as solicitações (requests) no Kubernetes determinam o consumo de recursos (CPU e memória) para os contêineres.

  • requests: A quantidade mínima garantida de recursos que o contêiner tentará usar. O planejador do Kubernetes considera as solicitações ao distribuir os pods pelos nós para garantir a disponibilidade dos recursos declarados.
  • limits: A quantidade máxima de recursos que o contêiner pode usar. Se o contêiner tentar exceder o limite de memória, será finalizado (OOMKilled). Exceder o limite de CPU limita seu desempenho, mas não causa sua finalização.

Exemplo na especificação do pod:

# Especificação do contêiner
containers:
  - name: my-app
    image: my-image
    resources:
      requests:
        memory: "64Mi" # Solicita 64 megabytes de memória
        cpu: "250m"   # Solicita 0,25 núcleo de CPU (250 millicores)
      limits:
        memory: "128Mi" # Limite de 128 megabytes de memória
        cpu: "500m"   # Limite de 0,5 núcleo de CPU (500 millicores)

Unidades de medida:

  • CPU: Em millicores (m). 1000m = 1 núcleo.
  • Memória: Em bytes (B, kB, MB, GB, Ti, Pi...), preferencialmente usando potências de dois (Ki, Mi, Gi, Ti, Pi...).

Importância:

  • Planeamento: Requests ajudam o Kubernetes a distribuir eficientemente os pods pelos nós, evitando sobrecarga.
  • Estabilidade: Limits evitam a monopolização de recursos por um único pod, aumentando a estabilidade do cluster.
  • Gestão de custos: Permitem estimar e controlar o consumo de recursos, influenciando os custos na nuvem.

Sem a definição de limites e solicitações, os contêineres podem obter recursos ilimitados, o que pode levar à instabilidade dos nós e de todo o cluster sob cargas elevadas.