Os casos mais comuns são:
- Finalização a execução do processo principal do container (entrypoint), por falha ou por resultado do processo da aplicação mesmo;
- Tem probes configuradas no deployment (mais especificamente readiness e liveness) e a aplicação não responder ao kubernetes de forma que satisfaça as condições das probes (não responde com o código correto no endpoint e porta, ou não responde no tempo máximo configurado nas probes...); e
- Falta de recursos, CPU e memória, ou no nó que o pod esta rodando ou nas configurações de limites no deployment. Falta de recursos também podem causar as duas situações anteriores.
Se a API recebe quantidades de requisições diferentes em diferentes momentos do dia ou situações, é interessante sim utilizar HPA, pode ser que durante o pico, falte recursos. Caso seja constante a quantidade de requisições, o HPA não trará prejuízo, mas, se o problema for falta de recursos, a solução mais simples é aumentar o número de réplicas ou de recursos.
Um ponto importante sobre utilizar mais de uma réplica (que é o caso de uso que faz sentido usar HPA): a aplicação precisa ser capaz de funcionar com réplicas concorrentes!