Amazon Elastic Kubernetes Service(Amazon EKS) 클러스터에서 CoreDNS를 사용하여 조건부 전달자를 구성하고 싶습니다.
간략한 설명
CoreDNS를 사용하여 사용자 정의 DNS 서버가 확인하는 도메인으로 전송되는 DNS 쿼리에 대한 조건부 전달자를 구성합니다. 자세한 내용은 Kubernetes 웹사이트에서 DNS 서비스 사용자 정의를 참조하세요.
중요: CoreDNS Amazon EKS 애드온을 구성 변경하기 전에 Amazon EKS가 관리하는 설정을 확인해야 합니다. 이 정보는 Amazon EKS 애드온 구성에서 찾을 수 있습니다. Amazon EKS가 관리하는 필드를 수정하면 Amazon EKS에서 애드온을 관리할 수 없습니다. Amazon EKS는 애드온이 업데이트될 때 변경 사항을 덮어쓸 수 있습니다.
해결 방법
다음 해결 방법은 CoreDNS 자체 관리형 및 Amazon EKS 애드온 구성에 적용됩니다.
자체 관리형 애드온 구성
다음 명령을 실행하여 CoreDNS ConfigMap을 수정하고 사용자 지정 DNS 조건부 전달자 구성을 추가합니다.
$ kubectl -n kube-system edit configmap coredns
다음과 같은 출력이 나타납니다.
apiVersion: v1
kind: ConfigMap
metadata:
annotations:
labels:
eks.amazonaws.com/component: coredns
k8s-app: kube-dns
name: coredns
namespace: kube-system
data:
Corefile: |
.:53 {
errors
health
kubernetes cluster.local in-addr.arpa ip6.arpa {
pods insecure
fallthrough in-addr.arpa ip6.arpa
}
prometheus :9153
forward . /etc/resolv.conf
cache 30
loop
reload
loadbalance
}
domain-name:53 {
errors
cache 30
forward . custom-dns-server
reload
}
참고: domain-name을 도메인 이름으로 바꾸고 custom-dns-server를 사용자 지정 DNS 서버 IP 주소로 바꿉니다.
Amazon EKS 애드온 구성
Amazon EKS 관리형 CoreDNS 애드온을 변경하려면 다음 단계를 완료합니다.
-
Amazon EKS 콘솔을 엽니다.
-
탐색 창에서 클러스터를 선택합니다.
-
클러스터의 이름을 선택합니다.
-
애드온 탭을 선택합니다.
-
CoreDNS 추가 기능을 선택한 다음 편집을 선택합니다.
-
편집 페이지에서 선택적 구성 설정 섹션을 선택합니다. 구성 값 섹션에서 사용자 지정 DNS 조건부 전달자 구성을 추가합니다.
corefile: |
.:53 {
errors
health
kubernetes cluster.local in-addr.arpa ip6.arpa {
pods insecure
fallthrough in-addr.arpa ip6.arpa
}
prometheus :9153
forward . /etc/resolv.conf
cache 30
loop
reload
loadbalance
}
domain-name:53 {
errors
cache 30
forward . custom-dns-server
reload
}
참고: domain-name을 도메인 이름으로 바꾸고 custom-dns-server를 사용자 지정 DNS 서버 IP 주소로 바꿉니다.
도메인 이름 확인
도메인 이름 확인이 제대로 작동하는지 확인하려면 다음 명령을 실행합니다.
$ kubectl run busybox --restart=Never --image=busybox:1.28 -- sleep 3600
$ kubectl exec busybox -- nslookup domain-name
참고: domain-name을 도메인 이름으로 바꿉니다.