K8s集群部署时Redisson初始化报DNS解析异常该如何排查?
自行调试定位手段
- 校验Redisson配置正确性:先核对
redisson-dev.yaml中填写的Redis连接地址,若使用K8s内部服务域名,需确认格式是否符合<服务名>.<命名空间>.<集群域名后缀>(默认集群后缀为svc.cluster.local),避免出现服务名、命名空间拼写错误,或跨命名空间访问时未填写完整域名的问题。 - 进入故障Pod手动验证DNS解析:通过
kubectl exec -it <故障Pod名称> -n <Pod所在命名空间> -- sh进入Pod内部,安装dnsutils工具包后执行nslookup <Redisson配置中的Redis域名>,确认解析结果是否正常;如果解析失败,再执行nslookup kubernetes.default.svc.cluster.local验证集群基础DNS服务是否可用。 - 检查Pod的DNS配置:执行
kubectl get pod <故障Pod名称> -n <Pod所在命名空间> -o yaml查看Pod的dnsPolicy配置,默认应为ClusterFirst,若被修改为None需确认手动配置的DNS服务器地址是否正确;同时查看Pod内/etc/resolv.conf文件,确认nameserver指向集群CoreDNS的ClusterIP,search域包含集群默认后缀。 - 确认目标Redis服务存在:执行
kubectl get svc -n <Redis服务所在命名空间>,确认对应的Redis服务正常存在,没有处于Pending等异常状态。
对接集群运维人员需优先排查的配置项
- CoreDNS服务运行状态:核对CoreDNS Pod是否全部处于Running状态,无异常重启、崩溃记录,查看CoreDNS日志是否存在解析报错、上游DNS不可用等异常。
- 集群DNS网络连通性:排查集群内Pod网段、Node节点到CoreDNS ClusterIP的53端口(UDP+TCP)是否连通,是否存在网络策略、防火墙、安全组规则拦截DNS请求流量。
- CoreDNS核心配置:核对Corefile配置中集群域名后缀是否正确,是否存在自定义解析规则拦截目标Redis域名,上游DNS转发配置是否可用。
- 集群网络插件状态:确认Calico/Flannel等CNI网络插件运行正常,无Pod跨节点网络不通的故障。
- 外部域名解析配置:若Redisson配置的是集群外部的Redis地址,需排查集群节点上游DNS是否可正常解析该外部域名,CoreDNS转发规则是否匹配要求。
内容的提问来源于stack exchange,提问作者diaop
相关产品推荐
相关产品推荐

