Question


Amazon EKS 클러스터에서 CoreDNS를 사용하는 애플리케이션 또는 포드가 내부 또는 외부 DNS 이름 확인에 실패합니다.

이러한 Amazon EKS 관련 DNS 오류를 해결하려면 어떻게 해야 하나요?




Answer


간략한 설명


Amazon EKS 클러스터 내에서 실행 중인 포드가 CoreDNS 서비스의 클러스터 IP를 내부 및 외부 DNS 레코드를 쿼리하기 위한 기본 이름 서버로 사용합니다.

CoreDNS 포드, 서비스 구성 또는 연결에 문제가 있는 경우 애플리케이션이 DNS 확인에 실패할 수 있습니다.


CoreDNS 포드는 kube-dns라는 서비스 객체에 의해 추상화됩니다.

CoreDNS 포드 관련 문제를 해결하려면 kube-dns 서비스의 모든 구성 요소가 작동하는지 확인해야 합니다.


이러한 구성 요소는 서비스 엔드포인트 옵션과 iptables 규칙이 포함되지만 이에 국한되지는 않습니다.




해결 방법


다음 해결 방법은 CoreDNS ClusterIP 10.100.0.10에 적용됩니다.


1. CoreDNS 서비스의 ClusterIP를 가져오려면 다음 명령을 실행합니다.

kubectl get service kube-dns -n kube-system



2. DNS 엔드포인트가 노출되고 CoreDNS 포드를 가리키는지 확인하려면 다음 명령을 실행합니다.

kubectl -n kube-system get endpoints kube-dns


다음과 유사한 출력이 표시됩니다.

NAME       ENDPOINTS                                                       AGE  
kube-dns   192.168.2.218:53,192.168.3.117:53,192.168.2.218:53 + 1 more...  90d


참고: 엔드포인트 목록이 비어 있는 경우 CoreDNS 포드의 포드 상태를 확인하십시오.



3. CoreDNS와 통신할 때 보안 그룹 또는 네트워크 ACL(액세스 제어 목록)에 의해 포드가 차단되지 않았는지 확인합니다.




이 외에도 

kube-proxy 포드가 작동하는지 확인

애플리케이션 포드에 연결하여 DNS 문제 해결

디버깅을 위해 coreDNS 포드에서 더 자세한 로그 가져오기

검색 및 ndots 조합

VPC 해석기(AmazonProvidedDNS) 제한에 유의에 대한 내용은 아래 AWS 문서를 참고하여 주시기 바랍니다.




# Amazon EKS 관련 DNS 오류를 해결하려면 어떻게 해야 합니까? -

https://aws.amazon.com/ko/premiumsupport/knowledge-center/eks-dns-failure/





위 내용 관련하여 궁금증이 해결되지 않으셨거나,

추가 문의 사항이 있으시면 저희 고객 지원 포털에 문의 남겨주시기 바랍니다.