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

如何通过ExternalDNS EKS插件创建Route53指向ALB的双栈别名?

解决ExternalDNS生成Route53双栈A记录的问题

核心问题拆解

你添加alb.ingress.kubernetes.io/ip-address-type: dualstack注解后仅生成AAA记录,根源在于两点:

  • ALB的IP类型创建后无法直接修改,旧的IPv4单栈ALB不会自动切换为双栈,必须重建
  • ExternalDNS默认优先选择IPv4的ALB端点,不会主动指向双栈地址

具体解决步骤

1. 重建双栈模式的ALB

先确认Ingress配置已添加双栈注解,然后删除旧Ingress触发ALB重建:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: s1-automation-dev-{{.Chart.Name}}
  annotations:
    alb.ingress.kubernetes.io/scheme: internal
    alb.ingress.kubernetes.io/target-type: ip
    kubernetes.io/ingress.class: alb
    alb.ingress.kubernetes.io/ip-address-type: dualstack  # 明确指定双栈类型
    alb.ingress.kubernetes.io/load-balancer-name: 's1-{{.Chart.Name}}'
    external-dns.alpha.kubernetes.io/hostname: ui-dataexplorer.mydomain.com
spec:
  rules:
    - http:
        paths:
        - path: /*
          pathType: ImplementationSpecific
          backend:
            service:
              name: {{.Chart.Name}}
              port:
                number: {{ .Values.service.port }}

执行重建命令:

kubectl delete ingress s1-automation-dev-{{.Chart.Name}}
kubectl apply -f your-ingress-config.yaml

重建后可以通过AWS控制台或CLI确认ALB的IP地址类型已变为dualstack。

2. 配置ExternalDNS优先使用双栈端点

修改ExternalDNS的Deployment,添加--aws-prefer-dualstack参数,让它优先选择双栈ALB地址作为A记录的别名目标:

containers:
- name: external-dns
  image: k8s.gcr.io/external-dns/external-dns:v0.13.4  # 替换为你使用的镜像版本
  args:
  - --source=ingress
  - --provider=aws
  - --aws-prefer-dualstack  # 新增该参数,强制优先双栈端点
  - --registry=txt
  - --txt-owner-id=your-cluster-unique-id  # 替换为你的集群唯一标识

更新Deployment:

kubectl apply -f external-dns-deployment.yaml

3. 验证结果

等待ExternalDNS同步完成后,查看Route53记录:

  • A记录的别名目标会变成dualstack.xxx.elb.amazonaws.com格式的双栈ALB地址
  • AAA记录会对应ALB的IPv6地址
    此时你的域名即可同时通过IPv4和IPv6访问双栈ALB

内容的提问来源于stack exchange,提问作者Georgi Koemdzhiev

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 14:02:45