쿠버네티스 클러스터에 애플리케이션과 몇가지 애드온들을 배포해서 운영하고 있는데, DNS 질의에 실패해 간헐적으로 파드가 죽는 현상이 있었습니다.
AWS 환경에서도 비슷한 경험을 겪은 적이 있었는데, 자체적으로 DNS 서버를 운영하거나 DNS캐시를 활용해서 Route53 Resolver에 질의 부하를 유발하지 않도록 대응해야 한다는 것을 인지하고 있었습니다.
AWS 환경에 대해서 자세한 내용이 궁금하신 분들은 아래 링크를 참조하시면 도움이 많이 될 것 같습니다.
아무튼 그때 경험을 살려서 비슷한 것을 적용할 수 있는지 찾아보니 NodeLocal DNSCache를 활용해서 쿠버네티스 환경에서도 DNS 질의 부하를 줄일 수 있다는 것을 알게 되었습니다.
NodeLocal DNSCache 배포는 쿠버네티스 공식 문서를 참조해 쉽게 진행할 수 있는데, 클라우드 서비스의 관리형 쿠버네티스에서는 NodeLocal DNSCache를 애드온 형태로 적용할 수도 있는 것 같습니다.
먼저 CoreDNS의 로깅 레벨을 Debug로 변경해놓고, NodeLocal DNSCache를 배포하기 전과 후로 나누어 CoreDNS 파드로 인입되는 로그를 살펴봤습니다.
확실히 NodeLocal DNSCache를 배포하고 나서 CoreDNS로 인입되는 로그의 수가 줄었고 약 한 달간 모니터링을 했을 때 질의 실패와 관련한 문제는 발생하지 않았습니다.
저와 비슷한 문제가 있으신 분들은 NodeLocal DNSCache로 쉽게 해결해 보시고, 혹시라도 더 좋은 방법이 있다면 공유 부탁드리겠습니다~!🫡