DNS概述

更新时间: 2025-01-17 14:19:10

DNS为Kubernetes集群内的工作负载提供域名解析服务,CoreDNS是Kubernetes集群中默认内置的DNS服务器,用于提供动态服务发现和域名解析的能力,使得集群内部的服务可以通过服务名相互访问,无需知道具体的IP地址。本文主要介绍CoreDNS域名解析原理和ACK Edge集群中的CoreDNS。

CoreDNS域名解析原理

image

序号

描述

业务Pod(Pod Client)试图访问Nginx服务(Service Nginx)时,先会请求本地DNS配置文件(/etc/resolv.conf)中指向的DNS服务器(nameserver 172.21.0.10,即Service kube-dns)获取服务IP地址,得到解析结果为172.21.0.30的IP地址。

业务Pod(Pod Client)再直接发起往该IP地址的请求,请求最终经过Nginx服务(Service Nginx)转发到达后端的Nginx容器(Pod Nginx-1和Pod Nginx-2)上。

ACK Edge集群中的CoreDNS

ACK Edge集群将多地域、多网络域的计算设备纳入一个Kubernetes集群进行统一管理,由于边缘设备分散,CoreDNS采用DaemonSet的方式运行在每个边缘节点上。

当客户端Pod访问域名时,它会先向本地的CoreDNS请求解析域名,并使用解析得到的地址连接到目标服务或目标Pod。

image

关于CoreDNS的详细配置,请参见如下ACK相关文档:

说明

ACK Edge集群中暂不支持NodeLocal DNSCache 以及ExternalDNS服务。

文档

是否适用

说明

DNS策略配置和域名解析说明

适用

DNS解析及缓存策略说明

适用

CoreDNS配置说明

部分适用

ACK Edge集群占用了默认域的Hosts配置,如需自定义CoreDNS配置,请参见CoreDNS自定义配置

CoreDNS自动升级

适用

分析和监控CoreDNS日志

适用

DNS最佳实践

部分适用

  • 采用DaemonSet方式部署,无法修改部署状态。

  • 监控指标需要开启Raven隧道模式。

上一篇: 使用Nginx Ingress 下一篇: CoreDNS自定义配置
阿里云首页 容器服务Kubernetes版 相关技术圈