#查看当前的配置
kubectl get configmap coredns  -n kube-system -o yaml
#以下是配置项
apiVersion: v1
data:
  Corefile: |
    .:53 {
        errors
        health
        kubernetes cluster.local in-addr.arpa ip6.arpa {
           pods insecure
           upstream
           fallthrough in-addr.arpa ip6.arpa
        }
        prometheus :9153
        forward . /etc/resolv.conf
        cache 30
        loop
        reload
        loadbalance
    }
kind: ConfigMap
metadata:
  creationTimestamp: "2019-12-20T06:50:24Z"
  name: coredns
  namespace: kube-system
  resourceVersion: "188"
  selfLink: /api/v1/namespaces/kube-system/configmaps/coredns
  uid: ffbf8850-22f4-11ea-a5a3-5254008afee6
  • error: 错误记录到stdout
  • health:CoreDNS的运行状况报告为http:// localhost:8080 / health
  • kubernetes:CoreDNS将根据Kubernetes服务和pod的IP回复DNS查询
  • prometheus:CoreDNS的度量标准可以在http://localhost:9153/Prometheus格式的指标中找到
  • proxy:任何不在Kubernetes集群域内的查询都将转发到预定义的解析器(/etc/resolv.conf)
  • cache:启用前端缓存
  • loop:检测简单的转发循环,如果找到循环则停止CoreDNS进程
  • reload:允许自动重新加载已更改的Corefile。编辑ConfigMap配置后,请等待两分钟以使更改生效
  • loadbalance:这是一个循环DNS负载均衡器,可以在答案中随机化A,AAAA和MX记录的顺序

解决办法

  • 可以将  forward . /etc/resolv.conf 改成  forward . 192.168.1.1(此处为dns域名)
  • 第二种 增加corefile配置 跟第一种类似 这个相当于指定对应的域名解析
baidu.com:53 {
        errors
        cache 30
        proxy . 10.150.0.1
    }
  • 第三种 在.:53中增加hosts配置
 # 省略了”FILE“,"ZONES"等字段
        hosts {
            # 1个hostname映射1个ip;
            # 虽然格式"172.30.200.21 172.30.200.22 172.30.200.23 kubenode1"可以正常下发configmap资源,但只有第一个ip生效
            172.30.200.21   kubenode1
            172.30.200.22   kubenode2
            172.30.200.23   kubenode3
            fallthrough
        }
  • 第四种 修改物理机上/etc/resolv.conf 并重启coredns
Logo

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。

更多推荐