当前位置: 首页 > article >正文

ExternalDNS自动化DNS管理实践:实现Kubernetes服务自动注册

ExternalDNS自动化DNS管理实践实现Kubernetes服务自动注册一、ExternalDNS概述ExternalDNS是一个Kubernetes控制器能够自动同步Kubernetes资源如Service和Ingress到外部DNS服务商。它消除了手动管理DNS记录的繁琐工作实现了DNS记录的自动化管理。ExternalDNS支持的DNS服务商AWS Route 53Google Cloud DNSAzure DNSCloudflareDigitalOceanCoreDNSInfobloxNS1二、ExternalDNS安装与配置2.1 使用Helm安装# 添加ExternalDNS Helm仓库 helm repo add external-dns https://kubernetes-sigs.github.io/external-dns/ # 创建命名空间 kubectl create namespace external-dns # 安装ExternalDNS以AWS为例 helm install external-dns external-dns/external-dns \ --namespace external-dns \ --version 1.13.0 \ --set provideraws \ --set aws.regionus-west-2 \ --set domainFilters{example.com}2.2 配置RBAC权限apiVersion: v1 kind: ServiceAccount metadata: name: external-dns namespace: external-dns --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: external-dns rules: - apiGroups: [] resources: [services, endpoints, pods] verbs: [get, watch, list] - apiGroups: [extensions, networking.k8s.io] resources: [ingresses] verbs: [get, watch, list] - apiGroups: [] resources: [nodes] verbs: [list, watch] --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: external-dns-viewer roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: external-dns subjects: - kind: ServiceAccount name: external-dns namespace: external-dns2.3 验证安装# 检查ExternalDNS Pod状态 kubectl get pods -n external-dns # 查看日志 kubectl logs -n external-dns deployment/external-dns三、配置DNS Provider3.1 AWS Route 53配置apiVersion: v1 kind: Secret metadata: name: aws-credentials namespace: external-dns data: credentials: | [default] aws_access_key_id YOUR_ACCESS_KEY aws_secret_access_key YOUR_SECRET_KEYhelm install external-dns external-dns/external-dns \ --namespace external-dns \ --set provideraws \ --set aws.regionus-west-2 \ --set aws.secretNameaws-credentials \ --set domainFilters{example.com}3.2 Cloudflare配置apiVersion: v1 kind: Secret metadata: name: cloudflare-api-token namespace: external-dns data: api-token: YOUR_CLOUDFLARE_API_TOKENhelm install external-dns external-dns/external-dns \ --namespace external-dns \ --set providercloudflare \ --set cloudflare.secretNamecloudflare-api-token \ --set domainFilters{example.com}3.3 Google Cloud DNS配置# 创建服务账号密钥文件 gcloud iam service-accounts create external-dns gcloud projects add-iam-policy-binding my-project \ --member serviceAccount:external-dnsmy-project.iam.gserviceaccount.com \ --role roles/dns.admin gcloud iam service-accounts keys create key.json \ --iam-account external-dnsmy-project.iam.gserviceaccount.com # 创建Secret kubectl create secret generic gcp-key \ --namespace external-dns \ --from-filekey.json./key.json # 安装ExternalDNS helm install external-dns external-dns/external-dns \ --namespace external-dns \ --set providergoogle \ --set google.projectmy-project \ --set google.secretNamegcp-key \ --set domainFilters{example.com}四、使用ExternalDNS4.1 Service配置apiVersion: v1 kind: Service metadata: name: my-service annotations: external-dns.alpha.kubernetes.io/hostname: my-service.example.com. external-dns.alpha.kubernetes.io/ttl: 60 spec: type: LoadBalancer selector: app: my-app ports: - port: 80 targetPort: 80804.2 Ingress配置apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: my-ingress annotations: external-dns.alpha.kubernetes.io/hostname: app.example.com. external-dns.alpha.kubernetes.io/target: my-loadbalancer-123456.us-west-2.elb.amazonaws.com spec: rules: - host: app.example.com http: paths: - path: / pathType: Prefix backend: service: name: my-service port: number: 804.3 多域名配置apiVersion: v1 kind: Service metadata: name: multi-domain-service annotations: external-dns.alpha.kubernetes.io/hostname: | service1.example.com. service2.example.com. service3.example.com. spec: type: LoadBalancer selector: app: my-app ports: - port: 80五、高级配置5.1 同步策略helm install external-dns external-dns/external-dns \ --namespace external-dns \ --set provideraws \ --set policyupsert-only \ --set registrytxt \ --set txtOwnerIdmy-cluster-id支持的策略sync完全同步删除不存在的记录upsert-only只添加/更新记录不删除create-only只创建新记录5.2 过滤配置helm install external-dns external-dns/external-dns \ --namespace external-dns \ --set provideraws \ --set domainFilters{example.com,api.example.com} \ --set excludeDomains{internal.example.com} \ --set annotationFilterexternal-dns\.alpha\.kubernetes\.io/enabledtrue5.3 自定义TTLapiVersion: v1 kind: Service metadata: name: my-service annotations: external-dns.alpha.kubernetes.io/hostname: my-service.example.com. external-dns.alpha.kubernetes.io/ttl: 300 spec: type: LoadBalancer selector: app: my-app六、监控与日志6.1 Prometheus指标apiVersion: v1 kind: Service metadata: name: external-dns-metrics namespace: external-dns spec: selector: app.kubernetes.io/name: external-dns ports: - name: metrics port: 7979 targetPort: metrics6.2 配置ServiceMonitorapiVersion: monitoring.coreos.com/v1 kind: ServiceMonitor metadata: name: external-dns-monitor namespace: monitoring spec: selector: matchLabels: app.kubernetes.io/name: external-dns endpoints: - port: metrics interval: 30s七、最佳实践7.1 权限最小化apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: external-dns-limited namespace: external-dns rules: - apiGroups: [] resources: [services, endpoints] verbs: [get, watch, list] - apiGroups: [networking.k8s.io] resources: [ingresses] verbs: [get, watch, list]7.2 多集群场景helm install external-dns external-dns/external-dns \ --namespace external-dns \ --set provideraws \ --set txtOwnerIdcluster-a \ --set domainFilters{cluster-a.example.com}7.3 测试模式helm install external-dns external-dns/external-dns \ --namespace external-dns \ --set provideraws \ --set dryRuntrue八、故障排除8.1 常见问题# 查看详细日志 kubectl logs -n external-dns deployment/external-dns -f # 检查配置错误 kubectl describe deployment external-dns -n external-dns # 验证DNS记录 dig my-service.example.com8.2 调试技巧# 启用详细日志 helm upgrade external-dns external-dns/external-dns \ --namespace external-dns \ --set logLeveldebug # 手动触发同步 kubectl delete pod -n external-dns -l app.kubernetes.io/nameexternal-dns九、总结ExternalDNS为Kubernetes提供了强大的DNS自动化管理能力消除了手动管理DNS记录的繁琐工作。通过本文的实践指南您可以快速部署和配置ExternalDNS实现服务的自动DNS注册。建议根据实际需求选择合适的DNS服务商和配置策略。参考资料ExternalDNS官方文档ExternalDNS GitHubKubernetes Service文档

相关文章:

ExternalDNS自动化DNS管理实践:实现Kubernetes服务自动注册

ExternalDNS自动化DNS管理实践:实现Kubernetes服务自动注册 一、ExternalDNS概述 ExternalDNS是一个Kubernetes控制器,能够自动同步Kubernetes资源(如Service和Ingress)到外部DNS服务商。它消除了手动管理DNS记录的繁琐工作&…...

Longhorn分布式存储实践:构建高可用Kubernetes存储方案

Longhorn分布式存储实践:构建高可用Kubernetes存储方案 一、Longhorn概述 Longhorn是一个开源的分布式块存储系统,专为Kubernetes设计。它提供持久化存储解决方案,支持高可用性、数据冗余和自动故障转移。 Longhorn的核心特性:…...

KubeVirt虚拟化实践:在Kubernetes上运行虚拟机

KubeVirt虚拟化实践:在Kubernetes上运行虚拟机 一、KubeVirt概述 KubeVirt是一个开源项目,允许在Kubernetes集群上运行和管理虚拟机(VM)。它将Kubernetes的编排能力与传统虚拟化技术相结合,实现了容器与虚拟机的统一管理。 KubeVirt的核心…...

Kubernetes故障排查与问题定位:实战指南

Kubernetes故障排查与问题定位:实战指南 一、故障排查概述 Kubernetes故障排查是运维工作中的重要环节。常见的故障类型包括: Pod故障:Pod无法启动、崩溃、重启网络故障:Pod之间无法通信、服务不可访问存储故障:持久…...

4.7 Spark SQL函数分类与应用

本次实战涵盖了三大核心内容:内置函数、自定义函数(UDF)和开窗函数。 内置函数是数据处理的基础,包括字符串、日期、数学、聚合等10大类,可通过DataFrame API或SQL语句两种方式调用,满足多样化的数据转换需…...

智改数转:制造企业绕不开的必答题

近几年,"智改数转"这个词频繁出现在各地政策文件和行业论坛里。对很多制造企业来说,它已经从"可选项"变成了"必答题"。但真正落地的时候,问题远比口号复杂。先说句实话:多数企业的数字化还停留在表…...

Layerdivider:用AI智能解构插画,让PSD图层分离变得轻而易举

Layerdivider:用AI智能解构插画,让PSD图层分离变得轻而易举 【免费下载链接】layerdivider A tool to divide a single illustration into a layered structure. 项目地址: https://gitcode.com/gh_mirrors/la/layerdivider 在数字艺术创作中&…...

Irony Mod Manager:终极Paradox游戏模组冲突解决方案完全指南

Irony Mod Manager:终极Paradox游戏模组冲突解决方案完全指南 【免费下载链接】IronyModManager Mod Manager for Paradox Games. Official Discord: https://discord.gg/t9JmY8KFrV 项目地址: https://gitcode.com/gh_mirrors/ir/IronyModManager 你是否曾经…...

2026实测|5款AI论文写作软件深度对比(含降重/AIGC检测/价格)

根据2026年最新的实测数据,我为你整理了一份好用的AI论文写作软件清单,按适用场景分类,你可以根据自己的需求快速匹配。 📊 核心工具速览对比 工具名称核心优势最佳适用场景价格参考推荐指数PaperRed中文全流程、降重合规、文献真…...

3分钟搞定Windows苹果USB驱动安装:终极免费解决方案

3分钟搞定Windows苹果USB驱动安装:终极免费解决方案 【免费下载链接】Apple-Mobile-Drivers-Installer Powershell script to easily install Apple USB and Mobile Device Ethernet (USB Tethering) drivers on Windows! 项目地址: https://gitcode.com/gh_mirro…...

如何快速上手OOMAO:MATLAB自适应光学仿真终极指南

如何快速上手OOMAO:MATLAB自适应光学仿真终极指南 【免费下载链接】OOMAO Object-Oriented, Matlab & Adaptive Optics 项目地址: https://gitcode.com/gh_mirrors/oo/OOMAO OOMAO(Object-Oriented, Matlab & Adaptive Optics&#xff09…...

对比直接使用厂商API,Taotoken在用量观测与账单管理上的便利性

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 对比直接使用厂商API,Taotoken在用量观测与账单管理上的便利性 当开发者或团队同时接入多个大模型厂商的原生API时&…...

抖音内容保存技术方案:开源下载工具深度解析与应用实践

抖音内容保存技术方案:开源下载工具深度解析与应用实践 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback supp…...

CircuitJS1 Desktop Mod终极指南:开启离线电路仿真新纪元

CircuitJS1 Desktop Mod终极指南:开启离线电路仿真新纪元 【免费下载链接】circuitjs1 Standalone (offline) version of the Circuit Simulator with small modifications based on modified NW.js. 项目地址: https://gitcode.com/gh_mirrors/circ/circuitjs1 …...

动物森友会存档编辑神器:NHSE新手完全入门指南

动物森友会存档编辑神器:NHSE新手完全入门指南 【免费下载链接】NHSE Animal Crossing: New Horizons save editor 项目地址: https://gitcode.com/gh_mirrors/nh/NHSE 你是否曾经梦想过在《集合啦!动物森友会》中拥有无限铃钱、稀有家具&#xf…...

显卡驱动清理终极指南:为什么你的系统需要Display Driver Uninstaller深度清理?

显卡驱动清理终极指南:为什么你的系统需要Display Driver Uninstaller深度清理? 【免费下载链接】display-drivers-uninstaller Display Driver Uninstaller (DDU) a driver removal utility / cleaner utility 项目地址: https://gitcode.com/gh_mirr…...

3大核心技术:解密QMC音频文件的最优方案

3大核心技术:解密QMC音频文件的最优方案 【免费下载链接】qmc-decoder Fastest & best convert qmc 2 mp3 | flac tools 项目地址: https://gitcode.com/gh_mirrors/qm/qmc-decoder 在数字音乐版权保护日益严格的今天,QQ音乐采用的QMC加密格式…...

如何在10分钟内搭建个人游戏串流服务器:Sunshine跨平台游戏流媒体完全指南

如何在10分钟内搭建个人游戏串流服务器:Sunshine跨平台游戏流媒体完全指南 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine 你是否梦想过在任何设备上畅玩PC游戏&#x…...

快速导出微信聊天记录:WeChatExporter让你轻松备份珍贵对话

快速导出微信聊天记录:WeChatExporter让你轻松备份珍贵对话 【免费下载链接】WeChatExporter 一个可以快速导出、查看你的微信聊天记录的工具 项目地址: https://gitcode.com/gh_mirrors/wec/WeChatExporter 你是否曾担心手机丢失或更换设备时,那…...

Claude Code、Cursor、Codex到底是什么?法律人AI开发工具全解析

一、AI IDE是什么?从代码编辑器到智能助理AI IDE AI 集成开发环境(IDE)。传统IDE如VS Code、IntelliJ,开发者需要手动编写每一行代码、查阅文档、编写测试用例。AI IDE则让开发者用自然语言下达指令,AI理解整个项目结…...

Barlow字体:54种样式打造专业级设计效果,提升你的视觉表达力

Barlow字体:54种样式打造专业级设计效果,提升你的视觉表达力 【免费下载链接】barlow Barlow: a straight-sided sans-serif superfamily 项目地址: https://gitcode.com/gh_mirrors/ba/barlow Barlow是一款源自加州公共视觉美学的专业字体家族&a…...

终极指南:3分钟学会用Awoo Installer免费安装Switch游戏

终极指南:3分钟学会用Awoo Installer免费安装Switch游戏 【免费下载链接】Awoo-Installer A No-Bullshit NSP, NSZ, XCI, and XCZ Installer for Nintendo Switch 项目地址: https://gitcode.com/gh_mirrors/aw/Awoo-Installer 还在为Switch游戏安装而烦恼吗…...

终极显卡风扇控制指南:用FanControl彻底解决NVIDIA风扇异常

终极显卡风扇控制指南:用FanControl彻底解决NVIDIA风扇异常 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trendi…...

车联网TBOX开发实战六,CAN特性

接上篇芯片及系统方案基础,本篇想写个远程控制,但想想整个交互链路较长,涉及到的基础很多,决定先从最基础的介绍一下,CAN,就是与车辆交互的核心总线本篇不做CAN基础的全面讲解,网络上有大篇幅的…...

独立开发者如何借助Taotoken模型广场快速选型与对比测试

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 独立开发者如何借助Taotoken模型广场快速选型与对比测试 对于独立开发者或小型创业团队而言,项目初期选择合适的大模型…...

保姆级教程✅ 从零学InVEST/SolVES模型,附QGIS/PostgreSQL/R语言实操+数据预处理全流程

本内容将讲述用于评估生态系统服务价值的当量因子法、InVEST模型、SolVES模型及其原理,通过本课程的学习,您将学会三种模型的原理与运行方法:如何获取与制备模型数据;如何进行当量因子转换;如何利用InVEST模型进行生态…...

Dism++:Windows系统维护的终极免费工具,一键解决卡顿和更新问题

Dism:Windows系统维护的终极免费工具,一键解决卡顿和更新问题 【免费下载链接】Dism-Multi-language Dism Multi-language Support & BUG Report 项目地址: https://gitcode.com/gh_mirrors/di/Dism-Multi-language 你是否曾为Windows系统运行…...

终极指南:用Python AUTOSAR轻松生成ARXML文件,告别昂贵商业工具

终极指南:用Python AUTOSAR轻松生成ARXML文件,告别昂贵商业工具 【免费下载链接】autosar A set of python modules for working with AUTOSAR XML files 项目地址: https://gitcode.com/gh_mirrors/au/autosar 还在为AUTOSAR工具链的高昂费用和复…...

带标注的焊接型球头杆端关节轴承(鱼眼接头)缺陷识别数据集,识别率99.1%,可识别卡死,锈迹,合格,凹痕缺陷,20580张图,支持yolo,coco json,voc xml,文末有模型训练代码

​ 带标注的焊接型球头杆端关节轴承(鱼眼接头)缺陷识别数据集,识别率99.1%,可识别卡死,锈迹,合格,凹痕缺陷,20580张图,支持yolo,coco json,voc xml,文末有模型训练代码 …...

在自动化脚本中集成Taotoken实现稳定的大模型调用

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 在自动化脚本中集成Taotoken实现稳定的大模型调用 将大模型能力嵌入自动化流程,例如数据清洗与摘要生成脚本&#xff0…...