Amazon EKS 클러스터에서 DNS용 CoreDNS 관리
Amazon EKS 클러스터에서 DNS용 CoreDNS 관리
팁
Amazon EKS Auto Mode에서는 네트워킹 추가 기능을 설치하거나 업그레이드할 필요가 없습니다. Auto Mode에는 Pod 네트워킹과 로드 밸런싱 기능이 포함됩니다. 자세한 내용은 EKS Auto Mode로 클러스터 인프라 자동화를 참조하세요.
CoreDNS는 Kubernetes 클러스터 DNS 역할을 할 수 있는 유연하고 확장 가능한 DNS 서버입니다. 노드를 하나 이상 포함해 Amazon EKS 클러스터를 시작하면 클러스터에 배포된 노드 수와 관계없이 CoreDNS 이미지의 복제본 두 개가 기본적으로 배포됩니다. CoreDNS Pod는 클러스터의 모든 Pod에 이름 확인을 제공합니다. 클러스터에 CoreDNS deployment의 네임스페이스와 일치하는 네임스페이스가 있는 Fargate Profile이 포함되어 있다면 CoreDNS Pod는 Fargate 노드에 배포될 수 있습니다. CoreDNS에 대한 자세한 내용은 Kubernetes 문서의 Using CoreDNS for Service Discovery를 참조하세요.
출처: 문서
본문
CoreDNS 버전
다음 표는 각 Kubernetes 버전에 대한 Amazon EKS 추가 기능 유형의 최신 버전을 나열합니다.
| Kubernetes 버전 | CoreDNS 버전 |
|---|---|
| 1.36 | v1.14.3-eksbuild.16 |
| 1.35 | v1.14.3-eksbuild.16 |
| 1.34 | v1.13.2-eksbuild.24 |
| 1.33 | v1.12.4-eksbuild.31 |
| 1.32 | v1.11.4-eksbuild.53 |
| 1.31 | v1.11.4-eksbuild.53 |
중요
이 추가 기능을 self-managed로 운영한다면 표의 버전이 사용 가능한 self-managed 버전과 같지 않을 수 있습니다. 이 추가 기능의 self-managed 유형을 업데이트하는 방법은 CoreDNS Amazon EKS self-managed 추가 기능 업데이트를 참조하세요.
중요한 CoreDNS 업그레이드 고려 사항
- CoreDNS 업데이트는 업데이트 과정에서 DNS 서비스 가용성을 유지하는 데 도움이 되도록 PodDisruptionBudget을 활용합니다.
- CoreDNS Deployment의 안정성과 가용성을 개선하기 위해 버전
v1.9.3-eksbuild.6이상과v1.10.1-eksbuild.3은PodDisruptionBudget과 함께 배포됩니다. 기존PodDisruptionBudget을 배포했다면 이 버전으로의 업그레이드가 실패할 수 있습니다. 업그레이드가 실패하면 다음 작업 중 하나를 완료하면 문제가 해결될 것입니다.- Amazon EKS 추가 기능 업그레이드 시 충돌 해결 옵션으로 기존 설정 덮어쓰기를 선택합니다. Deployment에 다른 사용자 지정 설정을 했다면 업그레이드 전에 설정을 백업해서 업그레이드 후 다른 사용자 지정 설정을 다시 적용할 수 있도록 하세요.
- 기존
PodDisruptionBudget을 제거하고 업그레이드를 다시 시도합니다.
- EKS 추가 기능 버전
v1.9.3-eksbuild.3이상과v1.10.1-eksbuild.6이상에서 CoreDNS Deployment는readinessProbe가/ready엔드포인트를 사용하도록 설정합니다. 이 엔드포인트는 CoreDNS용Corefile구성 파일에서 활성화됩니다. - 사용자 지정
Corefile을 사용한다면 프로브가 사용할/ready엔드포인트가 CoreDNS에서 활성화되도록 구성에ready플러그인을 추가해야 합니다. - EKS 추가 기능 버전
v1.9.3-eksbuild.7이상과v1.10.1-eksbuild.4이상에서PodDisruptionBudget을 변경할 수 있습니다. 추가 기능을 편집하고 다음 예시의 필드를 사용해 Optional configuration settings에서 이러한 설정을 변경할 수 있습니다. 이 예시는 기본PodDisruptionBudget을 보여 줍니다.{ "podDisruptionBudget": { "enabled": true, "maxUnavailable": 1 } }maxUnavailable또는minAvailable을 설정할 수 있지만 단일PodDisruptionBudget에서 둘 다 설정할 수는 없습니다.PodDisruptionBudgets에 대한 자세한 내용은 Kubernetes 문서의 Specifying a PodDisruptionBudget을 참조하세요. enabled를false로 설정해도PodDisruptionBudget이 제거되지는 않습니다. 이 필드를false로 설정한 뒤PodDisruptionBudget객체를 삭제해야 합니다. 마찬가지로,PodDisruptionBudget이 있는 버전으로 업그레이드한 뒤 추가 기능을 편집해 이전 버전의 추가 기능을 사용(다운그레이드)해도PodDisruptionBudget은 제거되지 않습니다.PodDisruptionBudget을 삭제하려면 다음 명령을 실행할 수 있습니다.kubectl delete poddisruptionbudget coredns -n kube-system- EKS 추가 기능 버전
v1.10.1-eksbuild.5이상에서 기본 toleration을node-role.kubernetes.io/master:NoSchedule에서node-role.kubernetes.io/control-plane:NoSchedule로 변경하여 KEP 2067을 준수합니다. KEP 2067에 대한 자세한 내용은 GitHub의 Kubernetes Enhancement Proposals(KEPs)에서 KEP-2067: kubeadm "master" 레이블 및 테인트 이름 바꾸기를 참조하세요. - EKS 추가 기능 버전
v1.8.7-eksbuild.8이상과v1.9.3-eksbuild.9이상에서 두 toleration 모두 모든 Kubernetes 버전과 호환되도록 설정되어 있습니다. - EKS 추가 기능 버전
v1.9.3-eksbuild.11과v1.10.1-eksbuild.7이상에서 CoreDNS Deployment는topologySpreadConstraints의 기본값을 설정합니다. 기본값은 여러 가용 영역에 노드가 있으면 CoreDNS Pod가 가용 영역에 분산되도록 보장합니다. 기본값 대신 사용할 사용자 지정 값을 설정할 수 있습니다. 기본값은 다음과 같습니다.topologySpreadConstraints: - maxSkew: 1 topologyKey: topology.kubernetes.io/zone whenUnsatisfiable: ScheduleAnyway labelSelector: matchLabels: k8s-app: kube-dns - 사용자 지정 Corefile 구성 및 추가 기능 업데이트 – Amazon EKS 추가 기능은 CoreDNS ConfigMap(
data.Corefile)을 완전히 관리합니다.Corefile을 직접 수정하면(예: 온프레미스 DNS 확인용 조건부 포워더 추가) 추가 기능이 다음 업데이트에서 변경 사항을 덮어씁니다. 추가 기능 업데이트에서 사용자 지정Corefile구성을 보존하려면 추가 기능의configurationValues매개변수에서corefile키를 사용하세요. 자세한 내용은 Amazon EKS 추가 기능에서 사용자 지정할 수 있는 필드 확인을 참조하세요.
CoreDNS v1.11 업그레이드 고려 사항
EKS 추가 기능 버전 v1.11.1-eksbuild.4 이상에서 컨테이너 이미지는 Amazon EKS Distro가 유지 관리하는 최소 기본 이미지를 기반으로 하며, 최소 패키지를 포함하고 셸이 없습니다. 자세한 내용은 Amazon EKS Distro를 참조하세요. CoreDNS 이미지의 사용 및 트러블슈팅은 동일하게 유지됩니다.