K8S的CoreDns配置文件添加域名解析

一、CoreDns的概述
负责为整个k8s集群提供 DNS 服务,属于DNS插件。

基于dns的接口去实现集群内部的dns内部域名解析的一种能力。

k8s集群创建后,会在kube-system名称空间下默认生成两个coredns的pod,所有pod的域名请求会以负载均衡的方式向这两个coredns的pod进行域名解析。

kubectl get  pod -n kube-system  -o wide

 

二、CoreDns域名解析链路

image

 

coredns配置相应的域名解析后,会将配置结果存储在etcd键值对数据库中,当pod发起域名请求,这个域名就会经过kube-dns服务负载到coredns的pod上,coredns会通过api-server向etcd获取解析结果,然后将结果返回给pod,pod再根据域名解析结果,通过svc发起访问请求。

三、CoreDns域名解析配置

1.将特定域名解析到单个IP

kubectl edit cm -n kube-system coredns
#加入下面的配置
#注意,“缩进”不能使用tab,要使用空格,
 hosts {
   192.168.159.82 www.aaa.com
   fallthrough
 }

  

image

 

 

2.将特定域名解析到特定的DNS服务器

kubectl edit cm -n kube-system coredns
    #加入如下配置
    #缩进与 .:53 同级
 
    bbb.com:53 {
        errors
        cache 30
        forward . 192.168.159.82 {
          prefer_udp
        }

  

image

 

3.将所有域名解析到特定的DNS服务器 

kubectl edit cm -n kube-system coredns
    #加入一下配置
forward . 192.168.159.82 {
  prefer_udp
}

 

image

 

 

kubectl debug 进入到coredns 内部,coredns 无法使用 exec 登录
无需改镜像、无需重建 Pod,就能把一只 临时调试容器 注入目标 Pod,与其共享 PID/Net/IPC/Mount,像“开启外挂”一样查看系统状态。本文将借助 kubectl debug 实地探访 CoreDNS 的 /etc/resolv.conf,并详解整条命令的每个参数,

kubectl -n kube-system debug -it \
  --image=busybox \
  --target=coredns \
  $(kubectl get pods -n kube-system -l k8s-app=kube-dns -o jsonpath='{.items[0].metadata.name}') \
  -- sh 

 

 

 

 

参考:
https://blog.csdn.net/qq_44732146/article/details/144050443

https://blog.csdn.net/m0_73562288/article/details/135238255

 

posted @ 2025-09-22 13:56  fengjian1585  阅读(79)  评论(0)    收藏  举报