You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 07:31:31