k8s集群访问外部域名不稳定

pod网络模式为default时,可以访问外部域名,网络模式为cluster first时可以访问集群中域名,但是访问公司内网域名时时通时不通,有时不能完全解析。

处理方法:

在coredns的cm中,需要添加

forward . /etc/resolv.conf {
           max_concurrent 1000
           policy sequential
        }
其中 forward . /etc/resolv.conf 配置表示使用当coredns内部不能解析的时候,向宿主机上的resolv.conf文件中配置的nameserver转发dns解析请求,。
当宿主机上namserver有多个时,默认采用的时random的方式随机转发,失败后就返回错误。而sequential为从第一个

编辑coredns的cm

kubectl edit cm coredns -o yaml  -n kube-system 

添加:policy sequential

复制代码
data:
  Corefile: |
    .:53 {
        errors
        health {
           lameduck 5s
        }
        ready
        kubernetes cluster.local in-addr.arpa ip6.arpa {
           pods insecure
           fallthrough in-addr.arpa ip6.arpa
           ttl 30
        }
        prometheus :9153
        forward . /etc/resolv.conf {
           max_concurrent 1000
           policy sequential
        }
        cache 30
        loop
        reload
        loadbalance
    }
复制代码

  1.errors记录错误到标准输出

  2.health访问http://localhost:8080/health可以查看其健康状态,lameduck 5s在进程关闭之前会等待5s使进程进入非健康状态

  3.ready当所有的插件都发送了准备就绪的信号时,8181端口会返回200

  4.kubernetes CoreDNS将根据Kubernetes的服务和Pod的IP回复DNS查询。运行 kubernetes 插件的 CoreDNS 可用作 kubernetes 集群中 kube-dns 的替代品。换句话说,该插件实现了基于Kubernetes DNS的服务发现规范。ttl允许您为响应设置自定义ttl。缺省值是5秒。最小TTL为0秒,最大TTL为3600秒。将TTL设置为0将阻止记录被缓存。提供pods insecure选项是为了向后兼容kube-dns。您可以使用pods verified选项,只有在相同的名称空间中存在具有匹配IP的pod时,该选项才返回A记录。如果不使用pod记录,可以使用pods disabled选项。 

    5.prometheus:CoreDNS的度量标准可以在http://localhost:9153/Prometheus格式的指标中找到;可以通过http://localhost:9153/metrics获取prometheus格式的监控数据
  6.forward plugin:用于设置 upstream Nameservers 上游 DNS 服务器。CoreDNS 就是通过它让容器能够解析外网的。policy指定用于选择上游服务器的策略。默认值为随机random
 

 cache 30,表示 pttl 为30s,也就是说,一条域名解析记录在DNS缓存中的存留时间最长为30s

   loop:检测简单的转发循环,如果找到循环则停止CoreDNS进程

 reload:允许自动重新加载已更改的Corefile。编辑ConfigMap配置后,请等待两分钟以使更改生效loadbalance:这是一个循环DNS负载均衡器,可以在答案中随机化A,AAAA和MX记录的顺序

  coredns是插件化(Plugins) 基于 Caddy 服务器框架,CoreDNS 实现了一个插件链的架构,将大量应用端的逻辑抽象成 plugin 的形式(如 Kubernetes 的 DNS 服务发现,Prometheus 监控等)暴露给使用者。CoreDNS 以预配置的方式将不同的 plugin 串成一条链,按序执行 plugin 的逻辑。

参考文档: 

https://www.cnblogs.com/keithtt/p/13204497.html

posted @   潇潇暮鱼鱼  阅读(103)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示