kubernetes中特定域名使用自定义DNS服务器出现的解析异常

故障发生背景:
租户反馈生产业务服务连接到中间件的时候,偶尔会有连接失败的情况,然后我们查看对应组件服务正常,手动请求组件服务也显示正常,让租户查看业务服务日志发现报错无法解析对应的域名,我们手动是可以解析的,报错如下:

2023-06-01 17:21:32,653 [573462087] [lettuce-epollEventLoop-6-2] WARN io.lettuce.core.RedisClient[605] - Cannot connect Redis Sentinel at redis://zzpod6clusterprod-redis-tydb-1-sentinel.paas-middleware:26379: java.util.concurrent.CompletionException: io.netty.resolver.dns.DnsResolveContext$SearchDomainUnknownHostException: Failed to resolve ‘zzpod6clusterprod-redis-tydb-1-sentinel.paas-middleware’ and search domain query for configured domains failed as well: [tydb.svc.cluster.local, svc.cluster.local, cluster.local]

故障处理过程

根据业务日志反馈的报错,我们在手动验证集群coredns解析没问题的同时,查看了下coredns的日志,发现日志中确实解析成功的也有解析失败的,如下:
在这里插入图片描述按理说手动测试解析一直没有问题,而且不是所有服务都是这种情况,查看了下租户解析有问题的服务,发现租户解析有问题服务中都配置了外部dns server,如下:
在这里插入图片描述这个外部dns服务器之前租户是有这个需求的,想着k8s集群内的服务能请求到特定的域名,后面我把这个外部dns服务地址给他配置到k8s集群的cordens配置里,实现访问特定域名地址可以通过coredns转给外部dns服务器进行解析。coredns配置外部dns服务如下:
在这里插入图片描述从如上分析来看,既然在coredns中已经配置了外部转发dns服务,租户如果继续在服务中还配置外部dns服务地址,就会导致应用服务会有两个dns nameserver,首先会访问集群内部域名地址会解析到pod中配置的那个外部dns服务中,会出现解析不了的情况,就反馈失败,然后轮到集群内部定义的dns服务就会正常解析成功。

故障处理结果

把在服务中配置dnscongfig相关参数去掉,让服务统一走集群内的coredns进行转发处理即可。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值