external-dns

External Dns Docker 镜像

ExternalDNS是一款用于同步Kubernetes集群中的Services和Ingresses资源与DNS提供商(如阿里云DNS、AWS Route53等)的工具,让K8s资源可通过公共DNS服务发现。

下载次数: 0状态:社区镜像维护者:cmaster11仓库类型:镜像最近更新:
下载命令
点击查看

ExternalDNS

镜像概述

ExternalDNS是Kubernetes生态工具,用于将集群中暴露的Services和Ingresses资源与公共DNS提供商同步,使K8s资源可通过公共DNS服务发现。它不直接提供DNS服务,而是配置外部DNS提供商(如阿里云DNS、AWS Route53等),支持多平台统一管理。

核心功能

  1. 多DNS提供商支持:覆盖阿里云DNS、AWS Route53、Google CloudDNS、AzureDNS、CloudFlare等主流平台;
  2. K8s资源同步:支持Services(Load***类型)、Ingresses资源的DNS记录同步;
  3. 记录所有权管理:通过--registry=txt标记自身管理的记录,支持非空托管区;
  4. 自定义TTL:通过注解external-dns.alpha.kubernetes.io/ttl设置DNS记录生存时间;
  5. 环境变量兼容:所有命令行参数可通过环境变量替换(如EXTERNAL_DNS_DRY_RUN=1替代--dry-run)。

使用场景

  • 自动管理K8s集群的公共DNS记录,避免手动配置;
  • 多云环境下统一同步DNS记录,跨平台兼容;
  • 动态更新:当Service/Ingress的IP或域名变更时自动同步DNS记录。

配置说明

资源注解

  • 设置域名:kubectl annotate service nginx "external-dns.alpha.kubernetes.io/hostname=nginx.example.org.";
  • 设置TTL:kubectl annotate service nginx "external-dns.alpha.kubernetes.io/ttl=10"。

关键参数

  • --registry txt:启用TTL记录管理所有权;
  • --txt-owner-id:集群唯一标识,区分不同集群的记录;
  • --provider:指定DNS提供商(如alibabacloud、aws);
  • --dry-run:仅输出变更不执行实际操作;
  • --source:同步的资源类型(service/ingress)。

部署示例

集群部署(阿里云)

yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: external-dns
spec:
  replicas: 1
  selector:
    matchLabels:
      app: external-dns
  template:
    metadata:
      labels:
        app: external-dns
    spec:
      serviceAccountName: external-dns
      containers:
      - name: external-dns
        image: docker.xuanyuan.run/cmaster11/external-dns:latest
        args:
        - --source=service
        - --source=ingress
        - --provider=alibabacloud
        - --registry=txt
        - --txt-owner-id=my-cluster-id
        env:
        - name: ALICLOUD_ACCESS_KEY
          valueFrom:
            secretKeyRef:
              name: alicloud-secret
              key: access-key
        - name: ALICLOUD_SECRET_KEY
          valueFrom:
            secretKeyRef:
              name: alicloud-secret
              key: secret-key

本地测试运行

console
# 构建工具
git clone https://github.com/kubernetes-incubator/external-dns.git && cd external-dns
dep ensure -vendor-only && make

# 测试同步(Google CloudDNS示例)
./build/external-dns --registry txt --txt-owner-id my-cluster-id --provider google --google-project example-project --source service --once --dry-run

镜像拉取方式

您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。

轩辕镜像加速拉取命令点我查看更多 external-dns 镜像标签

docker pull docker.xuanyuan.run/cmaster11/external-dns:<标签>

DockerHub 原生拉取命令

docker pull cmaster11/external-dns:<标签>
专业版 · 高速稳定拉取镜像
50GB 仅 ¥8/年
高速镜像下载在线技术支持专业版保障服务可用付费会员免广告