AWS EKS中External DNS对应Route 53记录循环删建问题排查求助
问题排查:EKS Ingress引发Route 53 DNS记录反复删建
问题背景
EKS集群中部署Ingress后,部署流程无异常,但Route 53对应的DNS记录持续被删除并重建,导致业务请求时而成功、时而出现DNS相关错误。CloudWatch日志量庞大,未找到有效排查线索。
关联Terraform Ingress代码
# Kubernetes Ingress 资源(关联AWS ALB) resource "kubernetes_ingress_v1" "ca_alb_service" { metadata { name = "ca-alb" annotations = { # 流量路由配置 "alb.ingress.kubernetes.io/load-balancer-name" = "ca-alb-${var.environment}" # Ingress核心设置 "alb.ingress.kubernetes.io/scheme" = "internet-facing" # 健康检查设置 "alb.ingress.kubernetes.io/healthcheck-protocol" = "HTTP" "alb.ingress.kubernetes.io/healthcheck-port" = "traffic-port" # 重要提示:若负载均衡器配置多目标,需在服务级别添加健康检查路径注解 "alb.ingress.kubernetes.io/healthcheck-interval-seconds" = 15 "alb.ingress.kubernetes.io/healthcheck-timeout-seconds" = 5 "alb.ingress.kubernetes.io/success-codes" = 200 "alb.ingress.kubernetes.io/healthy-threshold-count" = 2 "alb.ingress.kubernetes.io/unhealthy-threshold-count" = 2 "alb.ingress.kubernetes.io/healthcheck-path" = "/health" "alb.ingress.kubernetes.io/listen-ports" = jsonencode([{ "HTTPS" = 443 }, { "HTTP" = 80 }]) "alb.ingress.kubernetes.io/certificate-arn" = "${data.terraform_remote_state.hub.outputs.domain_certificate_arn}" # SSL重定向设置 "alb.ingress.kubernetes.io/ssl-redirect" = 443 # AWS资源标签 "service.beta.kubernetes.io/aws-load-balancer-additional-resource-tags" = "Environment=${var.environment},Team=dev,Name=caalb-${var.environment}" # 注意:此处语法错误,Terraform map键值对需用等号而非冒号 "external-dns.alpha.kubernetes.io/hostname" : "${lookup(var.subdomain_for_environment, var.environment)}.mydomain.io" } } spec { ingress_class_name = "ingress-controller-class" # Ingress类,集群默认配置,可省略 default_backend { service { name = kubernetes_service_v1.ca-as-np.metadata[0].name port { number = 3000 } } } } }
核心排查方向
- Terraform语法错误:代码中
external-dns.alpha.kubernetes.io/hostname注解使用了冒号:,但Terraform的map键值对必须用等号=。该错误会导致Terraform每次执行apply时都重新修改Ingress资源,触发External-DNS反复更新DNS记录。 - External-DNS实例冲突:检查集群中是否存在多个External-DNS实例运行,或同一域名被其他资源(如其他Ingress、Service的
external-dns注解)声明,导致External-DNS因资源归属冲突反复删改记录。 - ALB频繁重建:通过AWS EC2控制台查看ALB的事件历史,确认ALB是否出现反复创建/销毁的情况。若ALB地址频繁变化,External-DNS会自动更新DNS记录,引发业务请求的DNS波动。
- External-DNS日志分析:直接查看External-DNS Pod的日志(执行
kubectl logs -n <external-dns命名空间> <external-dns Pod名称>),日志中会明确记录DNS记录创建、删除的触发原因,比CloudWatch日志更精准。 - Ingress状态漂移:检查Ingress资源的
status.loadBalancer字段是否反复变化(执行kubectl get ingress ca-alb -o yaml)。若AWS Load Balancer Controller未稳定维护该字段的ALB地址,External-DNS会持续触发DNS更新。
内容的提问来源于stack exchange,提问作者wkhatch
相关产品推荐
相关产品推荐

