Quando você coloca uma aplicação em produção no Kubernetes, uma das decisões mais importantes é como especificar os recursos que seus pods precisam. Essa escolha determina qual classe de Quality of Service (QoS) seu pod recebe — e isso impacta diretamente na sua estabilidade e custo. Neste post, vou explicar em detalhe os três níveis de QoS: Guaranteed, Burstable e BestEffort.
O que é QoS no Kubernetes?
QoS (Quality of Service) é um mecanismo que o Kubernetes usa para classificar e priorizar seus pods em relação ao uso de recursos. Quando o nó está sem memória ou CPU disponível, o Kubernetes usa a classe QoS para decidir qual pod será removido (evicted) ou compactado.
O Kubernetes define três classes de QoS:
- BestEffort — mínima prioridade, primeira a ser removida
- Burstable — prioridade média, removida após Guaranteed
- Guaranteed — máxima prioridade, última a ser removida
Qual classe seu pod recebe depende de como você especifica os requests e limits de CPU e memória.
QoS BestEffort: Máxima Flexibilidade, Sem Garantias
Um pod é classificado como BestEffort quando:
- Você não define requests nem limits de CPU ou memória
- É a situação padrão quando você simplesmente não especifica nada