CoreDNS 문제 해결하기

이언철·2024년 4월 16일
0

DevOps

목록 보기
7/9

CoreDNS를 사용하며 겪은 문제들과 이를 해결하기 위한 Actions


Trouble

  1. 급변하는 트래픽 환경에서 CoreDNS의 부하 발생으로 인해 네트워크 문제 및 Latancy 급증하는 문제 발생하여 HPA에 의해 파드가 증가하면서 데이터베이스 커넥션 급증 등 전체 서비스에 영향이 전파됨

  2. 요청이 발생하면 동작하는 Task성 파드들이 유연함을 가진 노드형태를 띄고 있어서 적은 CoreDNS의 개수가 이를 커버하지 못해 간헐적으로 네트워크가 끊겨 파드가 정상 동작하지 못하는 문제

Actions?

CoreDNS가 처리할 수 있는 용량

Pods당 요구되는 리소스양이 존재하여 CoreDNS가 감당할 수 있는 수준에 따라 Avg Latency, QPS(Query per seconds)가 차이날 수 있음

이와 관련해 고가용성과 리소스 활용도가 중요한 경우 CoreDNS 구성을 조정하는 것이 유용할 수 있음

  1. CPA(Cluster Propotional Autoscaler)
    1. 클러스터의 전체 크기를 고려하여 CPA를 설정
    2. 사용중인 인스턴스 타입을 파악하고 가장 적절한 nodesPerReplica와 coresPerReplica를 설정
    3. 지속적인 모니터링을 통해 replica의 min, max 수치를 조정하고 perReplica를 최적화
  2. Advanced Configuration - TopologySpreadConstraints
    1. 토폴로지 확산 제약 조건을 사용하여 가용성 영역, 노드 및 기타 사용자 정의 토폴로지 도메인과 같은 장애 도메인 사이에서 Amazon EKS 클러스터 전체에 Pod가 분산되는 방식을 제어
    2. 이는 고가용성과 효율적인 리소스 활용을 달성하는 데 도움이 될 수 있음
    3. 또한 토폴로지 조건을 설정하여 Karpenter의 Scale에 영향을 끼치지 않도록 함
      1. 이 설정을 통해 Consolidation, Drift 등 CoreDNS의 영향 없이 Deprovisioning 과정을 수행할 수 있음
  3. Alert Conditions
    1. CoreDNS Error Rate, Panics, Request Duration, Request Rate의 Thresholds를 설정하여 즉각 대응 가능한 구조를 구성
    2. NewRelic 사용 시 Prometheus Agent를 설정하여 kube-dns를 integration하고 Agent 상태 대시보드를 구성
profile
Soomgo, DevOps

0개의 댓글