관리형 노드 모드에서는 노드가 아니라 파드가 요청한 양으로 과금됩니다. 그래서 요청량을 안 적으면 공짜가 아니라, 플랫폼이 정한 기본값이 청구됩니다.
무엇이 있었나
인증서 관리 도구를 클러스터에 올렸는데, 차트가 리소스 요청을 비워 둔 채로 배포되고 있었습니다.
이 모드는 요청이 없는 컨테이너에 CPU 500m / 메모리 2Gi 를 주입합니다. 파드가 셋이니 1.5 vCPU 와 6 GiB 가 잡힙니다. 아무도 그 숫자를 고른 적이 없는데 매달 그만큼 나가고 있었습니다.
실제로 얼마나 쓰는지 재 봤습니다. 세 파드 합쳐 CPU 1m, 메모리 10~28Mi. 요청량의 0.2% 입니다.
고치면서 알게 된 것
이 모드에는 파드당 최소 요청량이 있습니다. 그보다 낮게 적으면 조용히 올려 버리고, 저장소에 적힌 값과 실제가 어긋납니다. 최소치에 맞춰 적는 것이 가장 낮게 가는 방법입니다. 1.5 vCPU + 6 GiB 를 0.75 vCPU + 1.5 GiB 로 줄였습니다.
같은 문제가 다른 곳에도 있었습니다. 인증 프록시와 배포 도구 자체가 같은 이유로 계속 "설정과 다름" 상태였습니다. 주입된 값과 저장소의 값이 안 맞으니 당연했습니다.
반대 방향의 문제도 있었다
일반 노드 모드로 돌아가는 클러스터에서는 주입이 없어서 요청량이 0 이었습니다. 비용은 안 나갑니다. 대신 스케줄러가 그 파드에 아무것도 보장하지 않습니다. 노드가 붐비면 가장 먼저 밀려납니다.
여기도 실사용에 맞춰 적었습니다. 비용 때문이 아니라 밀려나지 않기 위해서 입니다.
무엇을 배웠나
리소스 요청을 비워 두는 것은 "알아서 해라"가 아니라 "모르겠으니 네가 정해라" 입니다. 그리고 플랫폼이 정하는 값은 안전하게 크게 잡힙니다.
차트 기본값이 비어 있는 건 흔합니다. 그 상태로 올리면 비용이든 안정성이든 한쪽이 손해입니다. 재 보고 적는 데 30 분이면 됩니다.