K8s em Exemplos: Requests e Limits de Recursos
| Requests definem o mínimo de recursos que um Pod precisa. Limits definem o máximo que pode usar. O scheduler usa requests para alocar Pods em nodes. |
| pod-resources.yaml | |
| Resources são definidos por container. | |
| pod-resources-safe.yaml | |
| CPU é compressível: exceder limit causa throttling. Memória é incompressível: exceder limit causa OOMKill. Defina limits de memória igual a requests para evitar surpresas de OOMKill. | |
| resource-units.yaml | |
| Unidades de CPU: | |
| qos-classes.yaml | |
| Classes QoS são atribuídas baseadas em requests e limits. | |
| limit-range.yaml | |
| LimitRange define recursos default, min e max por namespace. Aplicado automaticamente a Pods sem recursos explícitos. Previne consumo descontrolado de recursos. | |
| terminal | |
| Node allocatable é capacidade menos reservado do sistema. Scheduler só considera allocatable ao alocar Pods. Soma de requests dos Pods deve ser menor que allocatable do node. | |
| terminal | |
| Eviction acontece quando recursos do node ficam baixos. Kubelet evicta Pods baseado em classe QoS e uso de recursos. BestEffort primeiro, depois Burstable excedendo requests, finalmente Guaranteed. | |
| terminal | |
| Debug problemas de recursos verificando uso real vs requests. Requer metrics-server. Containers OOMKilled mostram exit code 137. Alto throttling de CPU significa limit muito baixo. | |